diff --git a/github-actions/issue-labeling/BUILD.bazel b/github-actions/issue-labeling/BUILD.bazel index d4083aa5c..d53cdda36 100644 --- a/github-actions/issue-labeling/BUILD.bazel +++ b/github-actions/issue-labeling/BUILD.bazel @@ -15,7 +15,7 @@ ts_project( deps = [ ":node_modules/@actions/core", ":node_modules/@actions/github", - ":node_modules/@google/generative-ai", + ":node_modules/@google/genai", ":node_modules/@octokit/openapi-types", ":node_modules/@octokit/rest", ":node_modules/@types/node", @@ -32,7 +32,7 @@ ts_project( ":lib", ":node_modules/@actions/core", ":node_modules/@actions/github", - ":node_modules/@google/generative-ai", + ":node_modules/@google/genai", ":node_modules/@octokit/openapi-types", ":node_modules/@octokit/rest", ":node_modules/@types/jasmine", diff --git a/github-actions/issue-labeling/lib/issue-labeling.ts b/github-actions/issue-labeling/lib/issue-labeling.ts index 7ed226666..365ffbb6e 100644 --- a/github-actions/issue-labeling/lib/issue-labeling.ts +++ b/github-actions/issue-labeling/lib/issue-labeling.ts @@ -1,6 +1,6 @@ import * as core from '@actions/core'; import {context} from '@actions/github'; -import {GoogleGenerativeAI} from '@google/generative-ai'; +import {GoogleGenAI} from '@google/genai'; import {Octokit} from '@octokit/rest'; import {ANGULAR_ROBOT, getAuthTokenFor, revokeActiveInstallationToken} from '../../utils.js'; import {components} from '@octokit/openapi-types'; @@ -38,7 +38,7 @@ export class IssueLabeling { // Initialize labels and issue data await this.initialize(); - const model = this.getGenerativeModel(); + const ai = this.getGenerativeAI(); const prompt = ` You are a helper for an open source repository. @@ -61,9 +61,11 @@ If no area label applies, respond with "none". `; try { - const result = await model.generateContent(prompt); - const response = result.response; - const text = response.text().trim(); + const response = await ai.models.generateContent({ + model: 'gemini-2.0-flash', + contents: prompt, + }); + const text = (response.text || '').trim(); this.coreService.info(`Gemini suggested label: ${text}`); @@ -80,10 +82,9 @@ If no area label applies, respond with "none". } } - getGenerativeModel() { + getGenerativeAI() { const apiKey = this.coreService.getInput('google-generative-ai-key', {required: true}); - const genAI = new GoogleGenerativeAI(apiKey); - return genAI.getGenerativeModel({model: 'gemini-2.0-flash'}); + return new GoogleGenAI({apiKey}); } async addLabel(label: string) { diff --git a/github-actions/issue-labeling/lib/main.spec.ts b/github-actions/issue-labeling/lib/main.spec.ts index bcff2e48c..2563b48ec 100644 --- a/github-actions/issue-labeling/lib/main.spec.ts +++ b/github-actions/issue-labeling/lib/main.spec.ts @@ -1,7 +1,7 @@ import {Octokit} from '@octokit/rest'; import * as core from '@actions/core'; import {context} from '@actions/github'; -import {GenerativeModel} from '@google/generative-ai'; +import {GoogleGenAI} from '@google/genai'; import {IssueLabeling} from './issue-labeling.js'; describe('IssueLabeling', () => { @@ -13,7 +13,7 @@ describe('IssueLabeling', () => { get: jasmine.Spy; }; }; - let mockModel: jasmine.SpyObj; + let mockAI: any; let mockCore: jasmine.SpyObj; let issueLabeling: IssueLabeling; @@ -41,7 +41,9 @@ describe('IssueLabeling', () => { return Promise.resolve([{name: 'area: core'}, {name: 'area: router'}, {name: 'bug'}]); }); - mockModel = jasmine.createSpyObj('GenerativeModel', ['generateContent']); + mockAI = { + models: jasmine.createSpyObj('models', ['generateContent']), + }; mockCore = jasmine.createSpyObj('core', [ 'getInput', 'info', @@ -61,7 +63,7 @@ describe('IssueLabeling', () => { // This is standard for mocking large interfaces like Octokit. issueLabeling = new IssueLabeling(mockGit as unknown as Octokit, mockCore); - spyOn(issueLabeling, 'getGenerativeModel').and.returnValue(mockModel); + spyOn(issueLabeling, 'getGenerativeAI').and.returnValue(mockAI); }); it('should initialize labels correctly', async () => { @@ -72,11 +74,9 @@ describe('IssueLabeling', () => { }); it('should apply a label when Gemini is confident', async () => { - mockModel.generateContent.and.returnValue( + mockAI.models.generateContent.and.returnValue( Promise.resolve({ - response: { - text: () => 'area: core', - } as any, // Cast response structure as any because it's deeply nested and hard to construct manually + text: 'area: core', }), ); @@ -90,11 +90,9 @@ describe('IssueLabeling', () => { }); it('should NOT apply a label when Gemini returns "ambiguous"', async () => { - mockModel.generateContent.and.returnValue( + mockAI.models.generateContent.and.returnValue( Promise.resolve({ - response: { - text: () => 'ambiguous', - } as any, + text: 'ambiguous', }), ); @@ -104,11 +102,9 @@ describe('IssueLabeling', () => { }); it('should NOT apply a label when Gemini returns an invalid label', async () => { - mockModel.generateContent.and.returnValue( + mockAI.models.generateContent.and.returnValue( Promise.resolve({ - response: { - text: () => 'area: invalid', - } as any, + text: 'area: invalid', }), ); diff --git a/github-actions/issue-labeling/main.js b/github-actions/issue-labeling/main.js index 8088c2fad..d685572b1 100644 --- a/github-actions/issue-labeling/main.js +++ b/github-actions/issue-labeling/main.js @@ -5,13 +5,16 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { +var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { +}) : x2)(function(x2) { if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); + throw Error('Dynamic require of "' + x2 + '" is not supported'); }); +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; var __commonJS = (cb, mod) => function __require2() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; @@ -35,6 +38,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // var require_tunnel = __commonJS({ @@ -42,8 +46,8 @@ var require_tunnel = __commonJS({ "use strict"; var net = __require("net"); var tls = __require("tls"); - var http2 = __require("http"); - var https2 = __require("https"); + var http4 = __require("http"); + var https3 = __require("https"); var events2 = __require("events"); var assert = __require("assert"); var util = __require("util"); @@ -53,67 +57,67 @@ var require_tunnel = __commonJS({ exports.httpsOverHttps = httpsOverHttps2; function httpOverHttp2(options) { var agent = new TunnelingAgent(options); - agent.request = http2.request; + agent.request = http4.request; return agent; } function httpsOverHttp2(options) { var agent = new TunnelingAgent(options); - agent.request = http2.request; + agent.request = http4.request; agent.createSocket = createSecureSocket; agent.defaultPort = 443; return agent; } function httpOverHttps2(options) { var agent = new TunnelingAgent(options); - agent.request = https2.request; + agent.request = https3.request; return agent; } function httpsOverHttps2(options) { var agent = new TunnelingAgent(options); - agent.request = https2.request; + agent.request = https3.request; agent.createSocket = createSecureSocket; agent.defaultPort = 443; return agent; } function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http2.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; - self.on("free", function onFree(socket, host, port, localAddress) { + var self2 = this; + self2.options = options || {}; + self2.proxyOptions = self2.options.proxy || {}; + self2.maxSockets = self2.options.maxSockets || http4.Agent.defaultMaxSockets; + self2.requests = []; + self2.sockets = []; + self2.on("free", function onFree(socket, host, port, localAddress) { var options2 = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; + for (var i2 = 0, len = self2.requests.length; i2 < len; ++i2) { + var pending = self2.requests[i2]; if (pending.host === options2.host && pending.port === options2.port) { - self.requests.splice(i, 1); + self2.requests.splice(i2, 1); pending.request.onSocket(socket); return; } } socket.destroy(); - self.removeSocket(socket); + self2.removeSocket(socket); }); } util.inherits(TunnelingAgent, events2.EventEmitter); TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({ request: req }, self.options, toOptions(host, port, localAddress)); - if (self.sockets.length >= this.maxSockets) { - self.requests.push(options); + var self2 = this; + var options = mergeOptions({ request: req }, self2.options, toOptions(host, port, localAddress)); + if (self2.sockets.length >= this.maxSockets) { + self2.requests.push(options); return; } - self.createSocket(options, function(socket) { + self2.createSocket(options, function(socket) { socket.on("free", onFree); socket.on("close", onCloseOrRemove); socket.on("agentRemove", onCloseOrRemove); req.onSocket(socket); function onFree() { - self.emit("free", socket, options); + self2.emit("free", socket, options); } function onCloseOrRemove(err) { - self.removeSocket(socket); + self2.removeSocket(socket); socket.removeListener("free", onFree); socket.removeListener("close", onCloseOrRemove); socket.removeListener("agentRemove", onCloseOrRemove); @@ -121,10 +125,10 @@ var require_tunnel = __commonJS({ }); }; TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; + var self2 = this; var placeholder = {}; - self.sockets.push(placeholder); - var connectOptions = mergeOptions({}, self.proxyOptions, { + self2.sockets.push(placeholder); + var connectOptions = mergeOptions({}, self2.proxyOptions, { method: "CONNECT", path: options.host + ":" + options.port, agent: false, @@ -140,7 +144,7 @@ var require_tunnel = __commonJS({ connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); } debug2("making CONNECT request"); - var connectReq = self.request(connectOptions); + var connectReq = self2.request(connectOptions); connectReq.useChunkedEncodingByDefault = false; connectReq.once("response", onResponse); connectReq.once("upgrade", onUpgrade); @@ -167,7 +171,7 @@ var require_tunnel = __commonJS({ var error2 = new Error("tunneling socket could not be established, statusCode=" + res.statusCode); error2.code = "ECONNRESET"; options.request.emit("error", error2); - self.removeSocket(placeholder); + self2.removeSocket(placeholder); return; } if (head.length > 0) { @@ -176,11 +180,11 @@ var require_tunnel = __commonJS({ var error2 = new Error("got illegal response body from proxy"); error2.code = "ECONNRESET"; options.request.emit("error", error2); - self.removeSocket(placeholder); + self2.removeSocket(placeholder); return; } debug2("tunneling connection has established"); - self.sockets[self.sockets.indexOf(placeholder)] = socket; + self2.sockets[self2.sockets.indexOf(placeholder)] = socket; return cb(socket); } function onError(cause) { @@ -193,7 +197,7 @@ var require_tunnel = __commonJS({ var error2 = new Error("tunneling socket could not be established, cause=" + cause.message); error2.code = "ECONNRESET"; options.request.emit("error", error2); - self.removeSocket(placeholder); + self2.removeSocket(placeholder); } }; TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { @@ -210,15 +214,15 @@ var require_tunnel = __commonJS({ } }; function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var self2 = this; + TunnelingAgent.prototype.createSocket.call(self2, options, function(socket) { var hostHeader = options.request.getHeader("host"); - var tlsOptions = mergeOptions({}, self.options, { + var tlsOptions = mergeOptions({}, self2.options, { socket, servername: hostHeader ? hostHeader.replace(/:.*$/, "") : options.host }); var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; + self2.sockets[self2.sockets.indexOf(socket)] = secureSocket; cb(secureSocket); }); } @@ -233,8 +237,8 @@ var require_tunnel = __commonJS({ return host; } function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; + for (var i2 = 1, len = arguments.length; i2 < len; ++i2) { + var overrides = arguments[i2]; if (typeof overrides === "object") { var keys = Object.keys(overrides); for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { @@ -458,7 +462,7 @@ var require_errors = __commonJS({ [kInvalidReturnValueError] = true; }; var kAbortError = Symbol.for("undici.error.UND_ERR_ABORT"); - var AbortError = class extends UndiciError { + var AbortError3 = class extends UndiciError { constructor(message) { super(message); this.name = "AbortError"; @@ -471,7 +475,7 @@ var require_errors = __commonJS({ [kAbortError] = true; }; var kRequestAbortedError = Symbol.for("undici.error.UND_ERR_ABORTED"); - var RequestAbortedError = class extends AbortError { + var RequestAbortedError = class extends AbortError3 { constructor(message) { super(message); this.name = "AbortError"; @@ -661,7 +665,7 @@ var require_errors = __commonJS({ [kSecureProxyConnectionError] = true; }; module.exports = { - AbortError, + AbortError: AbortError3, HTTPParserError, UndiciError, HeadersTimeoutError, @@ -790,8 +794,8 @@ var require_constants = __commonJS({ "X-Requested-With", "X-XSS-Protection" ]; - for (let i = 0; i < wellknownHeaderNames.length; ++i) { - const key = wellknownHeaderNames[i]; + for (let i2 = 0; i2 < wellknownHeaderNames.length; ++i2) { + const key = wellknownHeaderNames[i2]; const lowerCasedKey = key.toLowerCase(); headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = lowerCasedKey; } @@ -932,8 +936,8 @@ var require_tree = __commonJS({ } }; var tree = new TernarySearchTree(); - for (let i = 0; i < wellknownHeaderNames.length; ++i) { - const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]]; + for (let i2 = 0; i2 < wellknownHeaderNames.length; ++i2) { + const key = headerNameLowerCasedRecord[wellknownHeaderNames[i2]]; tree.insert(key, key); } module.exports = { @@ -952,7 +956,7 @@ var require_util = __commonJS({ var { IncomingMessage } = __require("node:http"); var stream = __require("node:stream"); var net = __require("node:net"); - var { Blob: Blob2 } = __require("node:buffer"); + var { Blob: Blob4 } = __require("node:buffer"); var nodeUtil = __require("node:util"); var { stringify } = __require("node:querystring"); var { EventEmitter: EE } = __require("node:events"); @@ -998,10 +1002,10 @@ var require_util = __commonJS({ function isStream(obj) { return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function"; } - function isBlobLike(object) { + function isBlobLike2(object) { if (object === null) { return false; - } else if (object instanceof Blob2) { + } else if (object instanceof Blob4) { return true; } else if (typeof object !== "object") { return false; @@ -1059,14 +1063,14 @@ var require_util = __commonJS({ } const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; let origin = url.origin != null ? url.origin : `${url.protocol || ""}//${url.hostname || ""}:${port}`; - let path6 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; + let path7 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; if (origin[origin.length - 1] === "/") { origin = origin.slice(0, origin.length - 1); } - if (path6 && path6[0] !== "/") { - path6 = `/${path6}`; + if (path7 && path7[0] !== "/") { + path7 = `/${path7}`; } - return new URL(`${origin}${path6}`); + return new URL(`${origin}${path7}`); } if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) { throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`."); @@ -1105,7 +1109,7 @@ var require_util = __commonJS({ function deepClone(obj) { return JSON.parse(JSON.stringify(obj)); } - function isAsyncIterable(obj) { + function isAsyncIterable2(obj) { return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); } function isIterable(obj) { @@ -1117,7 +1121,7 @@ var require_util = __commonJS({ } else if (isStream(body)) { const state = body._readableState; return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null; - } else if (isBlobLike(body)) { + } else if (isBlobLike2(body)) { return body.size != null ? body.size : null; } else if (isBuffer(body)) { return body.byteLength; @@ -1147,8 +1151,8 @@ var require_util = __commonJS({ } var KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; function parseKeepAliveTimeout(val) { - const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); - return m ? parseInt(m[1], 10) * 1e3 : null; + const m2 = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); + return m2 ? parseInt(m2[1], 10) * 1e3 : null; } function headerNameToString(value) { return typeof value === "string" ? headerNameLowerCasedRecord[value] ?? value.toLowerCase() : tree.lookup(value) ?? value.toString("latin1").toLowerCase(); @@ -1159,21 +1163,21 @@ var require_util = __commonJS({ function parseHeaders(headers, obj) { if (obj === void 0) obj = {}; - for (let i = 0; i < headers.length; i += 2) { - const key = headerNameToString(headers[i]); + for (let i2 = 0; i2 < headers.length; i2 += 2) { + const key = headerNameToString(headers[i2]); let val = obj[key]; if (val) { if (typeof val === "string") { val = [val]; obj[key] = val; } - val.push(headers[i + 1].toString("utf8")); + val.push(headers[i2 + 1].toString("utf8")); } else { - const headersValue = headers[i + 1]; + const headersValue = headers[i2 + 1]; if (typeof headersValue === "string") { obj[key] = headersValue; } else { - obj[key] = Array.isArray(headersValue) ? headersValue.map((x) => x.toString("utf8")) : headersValue.toString("utf8"); + obj[key] = Array.isArray(headersValue) ? headersValue.map((x2) => x2.toString("utf8")) : headersValue.toString("utf8"); } } } @@ -1262,7 +1266,7 @@ var require_util = __commonJS({ bytesRead: socket.bytesRead }; } - function ReadableStreamFrom(iterable) { + function ReadableStreamFrom2(iterable) { let iterator2; return new ReadableStream( { @@ -1338,8 +1342,8 @@ var require_util = __commonJS({ if (characters.length === 0) { return false; } - for (let i = 0; i < characters.length; ++i) { - if (!isTokenCharCode(characters.charCodeAt(i))) { + for (let i2 = 0; i2 < characters.length; ++i2) { + if (!isTokenCharCode(characters.charCodeAt(i2))) { return false; } } @@ -1352,11 +1356,11 @@ var require_util = __commonJS({ function parseRangeHeader(range) { if (range == null || range === "") return { start: 0, end: null, size: null }; - const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null; - return m ? { - start: parseInt(m[1]), - end: m[2] ? parseInt(m[2]) : null, - size: m[3] ? parseInt(m[3]) : null + const m2 = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null; + return m2 ? { + start: parseInt(m2[1]), + end: m2[2] ? parseInt(m2[2]) : null, + size: m2[3] ? parseInt(m2[3]) : null } : null; } function addListener(obj, name, listener) { @@ -1410,13 +1414,13 @@ var require_util = __commonJS({ isReadable, toUSVString, isUSVString, - isBlobLike, + isBlobLike: isBlobLike2, parseOrigin, parseURL, getServerName, isStream, isIterable, - isAsyncIterable, + isAsyncIterable: isAsyncIterable2, isDestroyed, headerNameToString, bufferToLowerCasedHeaderName, @@ -1429,7 +1433,7 @@ var require_util = __commonJS({ destroy, bodyLength, deepClone, - ReadableStreamFrom, + ReadableStreamFrom: ReadableStreamFrom2, isBuffer, validateHandler, getSocketInfo, @@ -1520,39 +1524,39 @@ var require_diagnostics = __commonJS({ }); diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => { const { - request: { method, path: path6, origin } + request: { method, path: path7, origin } } = evt; - debuglog("sending request to %s %s/%s", method, origin, path6); + debuglog("sending request to %s %s/%s", method, origin, path7); }); diagnosticsChannel.channel("undici:request:headers").subscribe((evt) => { const { - request: { method, path: path6, origin }, + request: { method, path: path7, origin }, response: { statusCode } } = evt; debuglog( "received response to %s %s/%s - HTTP %d", method, origin, - path6, + path7, statusCode ); }); diagnosticsChannel.channel("undici:request:trailers").subscribe((evt) => { const { - request: { method, path: path6, origin } + request: { method, path: path7, origin } } = evt; - debuglog("trailers received from %s %s/%s", method, origin, path6); + debuglog("trailers received from %s %s/%s", method, origin, path7); }); diagnosticsChannel.channel("undici:request:error").subscribe((evt) => { const { - request: { method, path: path6, origin }, + request: { method, path: path7, origin }, error: error2 } = evt; debuglog( "request to %s %s/%s errored - %s", method, origin, - path6, + path7, error2.message ); }); @@ -1601,9 +1605,9 @@ var require_diagnostics = __commonJS({ }); diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => { const { - request: { method, path: path6, origin } + request: { method, path: path7, origin } } = evt; - debuglog("sending request to %s %s/%s", method, origin, path6); + debuglog("sending request to %s %s/%s", method, origin, path7); }); } diagnosticsChannel.channel("undici:websocket:open").subscribe((evt) => { @@ -1654,7 +1658,7 @@ var require_request = __commonJS({ isBuffer, isFormDataLike, isIterable, - isBlobLike, + isBlobLike: isBlobLike2, buildURL, validateHandler, getServerName, @@ -1664,9 +1668,9 @@ var require_request = __commonJS({ var { headerNameLowerCasedRecord } = require_constants(); var invalidPathRegex = /[^\u0021-\u00ff]/; var kHandler = Symbol("handler"); - var Request = class { + var Request2 = class { constructor(origin, { - path: path6, + path: path7, method, body, headers, @@ -1681,11 +1685,11 @@ var require_request = __commonJS({ expectContinue, servername }, handler2) { - if (typeof path6 !== "string") { + if (typeof path7 !== "string") { throw new InvalidArgumentError("path must be a string"); - } else if (path6[0] !== "/" && !(path6.startsWith("http://") || path6.startsWith("https://")) && method !== "CONNECT") { + } else if (path7[0] !== "/" && !(path7.startsWith("http://") || path7.startsWith("https://")) && method !== "CONNECT") { throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); - } else if (invalidPathRegex.test(path6)) { + } else if (invalidPathRegex.test(path7)) { throw new InvalidArgumentError("invalid request path"); } if (typeof method !== "string") { @@ -1740,7 +1744,7 @@ var require_request = __commonJS({ this.body = body.byteLength ? Buffer.from(body) : null; } else if (typeof body === "string") { this.body = body.length ? Buffer.from(body) : null; - } else if (isFormDataLike(body) || isIterable(body) || isBlobLike(body)) { + } else if (isFormDataLike(body) || isIterable(body) || isBlobLike2(body)) { this.body = body; } else { throw new InvalidArgumentError("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable"); @@ -1748,7 +1752,7 @@ var require_request = __commonJS({ this.completed = false; this.aborted = false; this.upgrade = upgrade || null; - this.path = query ? buildURL(path6, query) : path6; + this.path = query ? buildURL(path7, query) : path7; this.origin = origin; this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; this.blocking = blocking == null ? false : blocking; @@ -1762,8 +1766,8 @@ var require_request = __commonJS({ if (headers.length % 2 !== 0) { throw new InvalidArgumentError("headers array must be even"); } - for (let i = 0; i < headers.length; i += 2) { - processHeader(this, headers[i], headers[i + 1]); + for (let i2 = 0; i2 < headers.length; i2 += 2) { + processHeader(this, headers[i2], headers[i2 + 1]); } } else if (headers && typeof headers === "object") { if (headers[Symbol.iterator]) { @@ -1775,8 +1779,8 @@ var require_request = __commonJS({ } } else { const keys = Object.keys(headers); - for (let i = 0; i < keys.length; ++i) { - processHeader(this, keys[i], headers[keys[i]]); + for (let i2 = 0; i2 < keys.length; ++i2) { + processHeader(this, keys[i2], headers[keys[i2]]); } } } else if (headers != null) { @@ -1904,18 +1908,18 @@ var require_request = __commonJS({ } if (Array.isArray(val)) { const arr = []; - for (let i = 0; i < val.length; i++) { - if (typeof val[i] === "string") { - if (!isValidHeaderValue(val[i])) { + for (let i2 = 0; i2 < val.length; i2++) { + if (typeof val[i2] === "string") { + if (!isValidHeaderValue(val[i2])) { throw new InvalidArgumentError(`invalid ${key} header`); } - arr.push(val[i]); - } else if (val[i] === null) { + arr.push(val[i2]); + } else if (val[i2] === null) { arr.push(""); - } else if (typeof val[i] === "object") { + } else if (typeof val[i2] === "object") { throw new InvalidArgumentError(`invalid ${key} header`); } else { - arr.push(`${val[i]}`); + arr.push(`${val[i2]}`); } } val = arr; @@ -1957,7 +1961,7 @@ var require_request = __commonJS({ request2.headers.push(key, val); } } - module.exports = Request; + module.exports = Request2; } }); @@ -2049,8 +2053,8 @@ var require_dispatcher_base = __commonJS({ } set interceptors(newInterceptors) { if (newInterceptors) { - for (let i = newInterceptors.length - 1; i >= 0; i--) { - const interceptor = this[kInterceptors][i]; + for (let i2 = newInterceptors.length - 1; i2 >= 0; i2--) { + const interceptor = this[kInterceptors][i2]; if (typeof interceptor !== "function") { throw new InvalidArgumentError("interceptor must be an function"); } @@ -2086,8 +2090,8 @@ var require_dispatcher_base = __commonJS({ const onClosed = () => { const callbacks = this[kOnClosed]; this[kOnClosed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); + for (let i2 = 0; i2 < callbacks.length; i2++) { + callbacks[i2](null, null); } }; this[kClose]().then(() => this.destroy()).then(() => { @@ -2129,8 +2133,8 @@ var require_dispatcher_base = __commonJS({ const onDestroyed = () => { const callbacks = this[kOnDestroyed]; this[kOnDestroyed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); + for (let i2 = 0; i2 < callbacks.length; i2++) { + callbacks[i2](null, null); } }; this[kDestroy](err).then(() => { @@ -2143,8 +2147,8 @@ var require_dispatcher_base = __commonJS({ return this[kDispatch](opts, handler2); } let dispatch = this[kDispatch].bind(this); - for (let i = this[kInterceptors].length - 1; i >= 0; i--) { - dispatch = this[kInterceptors][i](dispatch); + for (let i2 = this[kInterceptors].length - 1; i2 >= 0; i2--) { + dispatch = this[kInterceptors][i2](dispatch); } this[kInterceptedDispatch] = dispatch; return dispatch(opts, handler2); @@ -2417,7 +2421,7 @@ var require_connect = __commonJS({ var util = require_util(); var { InvalidArgumentError, ConnectTimeoutError } = require_errors(); var timers = require_timers(); - function noop3() { + function noop5() { } var tls; var SessionCache; @@ -2542,7 +2546,7 @@ var require_connect = __commonJS({ } var setupConnectTimeout = process.platform === "win32" ? (socketWeakRef, opts) => { if (!opts.timeout) { - return noop3; + return noop5; } let s1 = null; let s2 = null; @@ -2558,7 +2562,7 @@ var require_connect = __commonJS({ }; } : (socketWeakRef, opts) => { if (!opts.timeout) { - return noop3; + return noop5; } let s1 = null; const fastTimer = timers.setFastTimeout(() => { @@ -2788,9 +2792,9 @@ var require_constants2 = __commonJS({ FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE"; })(FINISH = exports.FINISH || (exports.FINISH = {})); exports.ALPHA = []; - for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { - exports.ALPHA.push(String.fromCharCode(i)); - exports.ALPHA.push(String.fromCharCode(i + 32)); + for (let i2 = "A".charCodeAt(0); i2 <= "Z".charCodeAt(0); i2++) { + exports.ALPHA.push(String.fromCharCode(i2)); + exports.ALPHA.push(String.fromCharCode(i2 + 32)); } exports.NUM_MAP = { 0: 0, @@ -2876,8 +2880,8 @@ var require_constants2 = __commonJS({ "~" ].concat(exports.ALPHANUM); exports.URL_CHAR = exports.STRICT_URL_CHAR.concat([" ", "\f"]); - for (let i = 128; i <= 255; i++) { - exports.URL_CHAR.push(i); + for (let i2 = 128; i2 <= 255; i2++) { + exports.URL_CHAR.push(i2); } exports.HEX = exports.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); exports.STRICT_TOKEN = [ @@ -2899,9 +2903,9 @@ var require_constants2 = __commonJS({ ].concat(exports.ALPHANUM); exports.TOKEN = exports.STRICT_TOKEN.concat([" "]); exports.HEADER_CHARS = [" "]; - for (let i = 32; i <= 255; i++) { - if (i !== 127) { - exports.HEADER_CHARS.push(i); + for (let i2 = 32; i2 <= 255; i2++) { + if (i2 !== 127) { + exports.HEADER_CHARS.push(i2); } } exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); @@ -2933,8 +2937,8 @@ var require_constants2 = __commonJS({ var require_llhttp_wasm = __commonJS({ ""(exports, module) { "use strict"; - var { Buffer: Buffer2 } = __require("node:buffer"); - module.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB9ysPC0GQMQ8LQdcxDwtBoi0PC0HUJw8LQeArDwtBnywPC0HrMQ8LQdUfDwtByjEPC0HeJQ8LQdQeDwtB9BwPC0GnMg8LQbEdDwtBoB0PC0G5MQ8LQbwwDwtBkiEPC0GzJg8LQeksDwtBrB4PC0HUKw8LQfcmDwtBgCYPC0GwIQ8LQf4eDwtBjSMPC0GJLQ8LQfciDwtBoDEPC0GuHw8LQcYlDwtB6B4PC0GTIg8LQcIvDwtBwx0PC0GLLA8LQeEdDwtBjS8PC0HqIQ8LQbQtDwtB0i8PC0HfMg8LQdIyDwtB8DAPC0GpIg8LQfkjDwtBmR4PC0G1LA8LQZswDwtBkjIPC0G2Kw8LQcIiDwtB+DIPC0GeJQ8LQdAiDwtBuh4PC0GBHg8LAAtB1iEhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBxhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9go2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7Ro2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBqhs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7RM2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBwhk2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlBQ2AhBBGCEECyAEC1kBAn8CQCAALQAoQQFGDQAgAC8BMiIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEwIgFBAnFFDQEMAgsgAC8BMCIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATIiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtXACAAQRhqQgA3AwAgAEIANwMAIABBOGpCADcDACAAQTBqQgA3AwAgAEEoakIANwMAIABBIGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIABB3QE2AhwLBgAgABAyC5otAQt/IwBBEGsiCiQAQaTQACgCACIJRQRAQeTTACgCACIFRQRAQfDTAEJ/NwIAQejTAEKAgISAgIDAADcCAEHk0wAgCkEIakFwcUHYqtWqBXMiBTYCAEH40wBBADYCAEHI0wBBADYCAAtBzNMAQYDUBDYCAEGc0ABBgNQENgIAQbDQACAFNgIAQazQAEF/NgIAQdDTAEGArAM2AgADQCABQcjQAGogAUG80ABqIgI2AgAgAiABQbTQAGoiAzYCACABQcDQAGogAzYCACABQdDQAGogAUHE0ABqIgM2AgAgAyACNgIAIAFB2NAAaiABQczQAGoiAjYCACACIAM2AgAgAUHU0ABqIAI2AgAgAUEgaiIBQYACRw0AC0GM1ARBwasDNgIAQajQAEH00wAoAgA2AgBBmNAAQcCrAzYCAEGk0ABBiNQENgIAQcz/B0E4NgIAQYjUBCEJCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFNBEBBjNAAKAIAIgZBECAAQRNqQXBxIABBC0kbIgRBA3YiAHYiAUEDcQRAAkAgAUEBcSAAckEBcyICQQN0IgBBtNAAaiIBIABBvNAAaigCACIAKAIIIgNGBEBBjNAAIAZBfiACd3E2AgAMAQsgASADNgIIIAMgATYCDAsgAEEIaiEBIAAgAkEDdCICQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDBELQZTQACgCACIIIARPDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIAQQN0IgJBtNAAaiIBIAJBvNAAaigCACICKAIIIgNGBEBBjNAAIAZBfiAAd3EiBjYCAAwBCyABIAM2AgggAyABNgIMCyACIARBA3I2AgQgAEEDdCIAIARrIQUgACACaiAFNgIAIAIgBGoiBCAFQQFyNgIEIAgEQCAIQXhxQbTQAGohAEGg0AAoAgAhAwJ/QQEgCEEDdnQiASAGcUUEQEGM0AAgASAGcjYCACAADAELIAAoAggLIgEgAzYCDCAAIAM2AgggAyAANgIMIAMgATYCCAsgAkEIaiEBQaDQACAENgIAQZTQACAFNgIADBELQZDQACgCACILRQ0BIAtoQQJ0QbzSAGooAgAiACgCBEF4cSAEayEFIAAhAgNAAkAgAigCECIBRQRAIAJBFGooAgAiAUUNAQsgASgCBEF4cSAEayIDIAVJIQIgAyAFIAIbIQUgASAAIAIbIQAgASECDAELCyAAKAIYIQkgACgCDCIDIABHBEBBnNAAKAIAGiADIAAoAggiATYCCCABIAM2AgwMEAsgAEEUaiICKAIAIgFFBEAgACgCECIBRQ0DIABBEGohAgsDQCACIQcgASIDQRRqIgIoAgAiAQ0AIANBEGohAiADKAIQIgENAAsgB0EANgIADA8LQX8hBCAAQb9/Sw0AIABBE2oiAUFwcSEEQZDQACgCACIIRQ0AQQAgBGshBQJAAkACQAJ/QQAgBEGAAkkNABpBHyAEQf///wdLDQAaIARBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmoLIgZBAnRBvNIAaigCACICRQRAQQAhAUEAIQMMAQtBACEBIARBGSAGQQF2a0EAIAZBH0cbdCEAQQAhAwNAAkAgAigCBEF4cSAEayIHIAVPDQAgAiEDIAciBQ0AQQAhBSACIQEMAwsgASACQRRqKAIAIgcgByACIABBHXZBBHFqQRBqKAIAIgJGGyABIAcbIQEgAEEBdCEAIAINAAsLIAEgA3JFBEBBACEDQQIgBnQiAEEAIABrciAIcSIARQ0DIABoQQJ0QbzSAGooAgAhAQsgAUUNAQsDQCABKAIEQXhxIARrIgIgBUkhACACIAUgABshBSABIAMgABshAyABKAIQIgAEfyAABSABQRRqKAIACyIBDQALCyADRQ0AIAVBlNAAKAIAIARrTw0AIAMoAhghByADIAMoAgwiAEcEQEGc0AAoAgAaIAAgAygCCCIBNgIIIAEgADYCDAwOCyADQRRqIgIoAgAiAUUEQCADKAIQIgFFDQMgA0EQaiECCwNAIAIhBiABIgBBFGoiAigCACIBDQAgAEEQaiECIAAoAhAiAQ0ACyAGQQA2AgAMDQtBlNAAKAIAIgMgBE8EQEGg0AAoAgAhAQJAIAMgBGsiAkEQTwRAIAEgBGoiACACQQFyNgIEIAEgA2ogAjYCACABIARBA3I2AgQMAQsgASADQQNyNgIEIAEgA2oiACAAKAIEQQFyNgIEQQAhAEEAIQILQZTQACACNgIAQaDQACAANgIAIAFBCGohAQwPC0GY0AAoAgAiAyAESwRAIAQgCWoiACADIARrIgFBAXI2AgRBpNAAIAA2AgBBmNAAIAE2AgAgCSAEQQNyNgIEIAlBCGohAQwPC0EAIQEgBAJ/QeTTACgCAARAQezTACgCAAwBC0Hw0wBCfzcCAEHo0wBCgICEgICAwAA3AgBB5NMAIApBDGpBcHFB2KrVqgVzNgIAQfjTAEEANgIAQcjTAEEANgIAQYCABAsiACAEQccAaiIFaiIGQQAgAGsiB3EiAk8EQEH80wBBMDYCAAwPCwJAQcTTACgCACIBRQ0AQbzTACgCACIIIAJqIQAgACABTSAAIAhLcQ0AQQAhAUH80wBBMDYCAAwPC0HI0wAtAABBBHENBAJAAkAgCQRAQczTACEBA0AgASgCACIAIAlNBEAgACABKAIEaiAJSw0DCyABKAIIIgENAAsLQQAQMyIAQX9GDQUgAiEGQejTACgCACIBQQFrIgMgAHEEQCACIABrIAAgA2pBACABa3FqIQYLIAQgBk8NBSAGQf7///8HSw0FQcTTACgCACIDBEBBvNMAKAIAIgcgBmohASABIAdNDQYgASADSw0GCyAGEDMiASAARw0BDAcLIAYgA2sgB3EiBkH+////B0sNBCAGEDMhACAAIAEoAgAgASgCBGpGDQMgACEBCwJAIAYgBEHIAGpPDQAgAUF/Rg0AQezTACgCACIAIAUgBmtqQQAgAGtxIgBB/v///wdLBEAgASEADAcLIAAQM0F/RwRAIAAgBmohBiABIQAMBwtBACAGaxAzGgwECyABIgBBf0cNBQwDC0EAIQMMDAtBACEADAoLIABBf0cNAgtByNMAQcjTACgCAEEEcjYCAAsgAkH+////B0sNASACEDMhAEEAEDMhASAAQX9GDQEgAUF/Rg0BIAAgAU8NASABIABrIgYgBEE4ak0NAQtBvNMAQbzTACgCACAGaiIBNgIAQcDTACgCACABSQRAQcDTACABNgIACwJAAkACQEGk0AAoAgAiAgRAQczTACEBA0AgACABKAIAIgMgASgCBCIFakYNAiABKAIIIgENAAsMAgtBnNAAKAIAIgFBAEcgACABT3FFBEBBnNAAIAA2AgALQQAhAUHQ0wAgBjYCAEHM0wAgADYCAEGs0ABBfzYCAEGw0ABB5NMAKAIANgIAQdjTAEEANgIAA0AgAUHI0ABqIAFBvNAAaiICNgIAIAIgAUG00ABqIgM2AgAgAUHA0ABqIAM2AgAgAUHQ0ABqIAFBxNAAaiIDNgIAIAMgAjYCACABQdjQAGogAUHM0ABqIgI2AgAgAiADNgIAIAFB1NAAaiACNgIAIAFBIGoiAUGAAkcNAAtBeCAAa0EPcSIBIABqIgIgBkE4ayIDIAFrIgFBAXI2AgRBqNAAQfTTACgCADYCAEGY0AAgATYCAEGk0AAgAjYCACAAIANqQTg2AgQMAgsgACACTQ0AIAIgA0kNACABKAIMQQhxDQBBeCACa0EPcSIAIAJqIgNBmNAAKAIAIAZqIgcgAGsiAEEBcjYCBCABIAUgBmo2AgRBqNAAQfTTACgCADYCAEGY0AAgADYCAEGk0AAgAzYCACACIAdqQTg2AgQMAQsgAEGc0AAoAgBJBEBBnNAAIAA2AgALIAAgBmohA0HM0wAhAQJAAkACQANAIAMgASgCAEcEQCABKAIIIgENAQwCCwsgAS0ADEEIcUUNAQtBzNMAIQEDQCABKAIAIgMgAk0EQCADIAEoAgRqIgUgAksNAwsgASgCCCEBDAALAAsgASAANgIAIAEgASgCBCAGajYCBCAAQXggAGtBD3FqIgkgBEEDcjYCBCADQXggA2tBD3FqIgYgBCAJaiIEayEBIAIgBkYEQEGk0AAgBDYCAEGY0ABBmNAAKAIAIAFqIgA2AgAgBCAAQQFyNgIEDAgLQaDQACgCACAGRgRAQaDQACAENgIAQZTQAEGU0AAoAgAgAWoiADYCACAEIABBAXI2AgQgACAEaiAANgIADAgLIAYoAgQiBUEDcUEBRw0GIAVBeHEhCCAFQf8BTQRAIAVBA3YhAyAGKAIIIgAgBigCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBwsgAiAANgIIIAAgAjYCDAwGCyAGKAIYIQcgBiAGKAIMIgBHBEAgACAGKAIIIgI2AgggAiAANgIMDAULIAZBFGoiAigCACIFRQRAIAYoAhAiBUUNBCAGQRBqIQILA0AgAiEDIAUiAEEUaiICKAIAIgUNACAAQRBqIQIgACgCECIFDQALIANBADYCAAwEC0F4IABrQQ9xIgEgAGoiByAGQThrIgMgAWsiAUEBcjYCBCAAIANqQTg2AgQgAiAFQTcgBWtBD3FqQT9rIgMgAyACQRBqSRsiA0EjNgIEQajQAEH00wAoAgA2AgBBmNAAIAE2AgBBpNAAIAc2AgAgA0EQakHU0wApAgA3AgAgA0HM0wApAgA3AghB1NMAIANBCGo2AgBB0NMAIAY2AgBBzNMAIAA2AgBB2NMAQQA2AgAgA0EkaiEBA0AgAUEHNgIAIAUgAUEEaiIBSw0ACyACIANGDQAgAyADKAIEQX5xNgIEIAMgAyACayIFNgIAIAIgBUEBcjYCBCAFQf8BTQRAIAVBeHFBtNAAaiEAAn9BjNAAKAIAIgFBASAFQQN2dCIDcUUEQEGM0AAgASADcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbzSAGohAEGQ0AAoAgAiA0EBIAF0IgZxRQRAIAAgAjYCAEGQ0AAgAyAGcjYCACACIAA2AhggAiACNgIIIAIgAjYCDAwBCyAFQRkgAUEBdmtBACABQR9HG3QhASAAKAIAIQMCQANAIAMiACgCBEF4cSAFRg0BIAFBHXYhAyABQQF0IQEgACADQQRxakEQaiIGKAIAIgMNAAsgBiACNgIAIAIgADYCGCACIAI2AgwgAiACNgIIDAELIAAoAggiASACNgIMIAAgAjYCCCACQQA2AhggAiAANgIMIAIgATYCCAtBmNAAKAIAIgEgBE0NAEGk0AAoAgAiACAEaiICIAEgBGsiAUEBcjYCBEGY0AAgATYCAEGk0AAgAjYCACAAIARBA3I2AgQgAEEIaiEBDAgLQQAhAUH80wBBMDYCAAwHC0EAIQALIAdFDQACQCAGKAIcIgJBAnRBvNIAaiIDKAIAIAZGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAdBEEEUIAcoAhAgBkYbaiAANgIAIABFDQELIAAgBzYCGCAGKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAGQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAIaiEBIAYgCGoiBigCBCEFCyAGIAVBfnE2AgQgASAEaiABNgIAIAQgAUEBcjYCBCABQf8BTQRAIAFBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASABQQN2dCIBcUUEQEGM0AAgASACcjYCACAADAELIAAoAggLIgEgBDYCDCAAIAQ2AgggBCAANgIMIAQgATYCCAwBC0EfIQUgAUH///8HTQRAIAFBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohBQsgBCAFNgIcIARCADcCECAFQQJ0QbzSAGohAEGQ0AAoAgAiAkEBIAV0IgNxRQRAIAAgBDYCAEGQ0AAgAiADcjYCACAEIAA2AhggBCAENgIIIAQgBDYCDAwBCyABQRkgBUEBdmtBACAFQR9HG3QhBSAAKAIAIQACQANAIAAiAigCBEF4cSABRg0BIAVBHXYhACAFQQF0IQUgAiAAQQRxakEQaiIDKAIAIgANAAsgAyAENgIAIAQgAjYCGCAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgCUEIaiEBDAILAkAgB0UNAAJAIAMoAhwiAUECdEG80gBqIgIoAgAgA0YEQCACIAA2AgAgAA0BQZDQACAIQX4gAXdxIgg2AgAMAgsgB0EQQRQgBygCECADRhtqIAA2AgAgAEUNAQsgACAHNgIYIAMoAhAiAQRAIAAgATYCECABIAA2AhgLIANBFGooAgAiAUUNACAAQRRqIAE2AgAgASAANgIYCwJAIAVBD00EQCADIAQgBWoiAEEDcjYCBCAAIANqIgAgACgCBEEBcjYCBAwBCyADIARqIgIgBUEBcjYCBCADIARBA3I2AgQgAiAFaiAFNgIAIAVB/wFNBEAgBUF4cUG00ABqIQACf0GM0AAoAgAiAUEBIAVBA3Z0IgVxRQRAQYzQACABIAVyNgIAIAAMAQsgACgCCAsiASACNgIMIAAgAjYCCCACIAA2AgwgAiABNgIIDAELQR8hASAFQf///wdNBEAgBUEmIAVBCHZnIgBrdkEBcSAAQQF0a0E+aiEBCyACIAE2AhwgAkIANwIQIAFBAnRBvNIAaiEAQQEgAXQiBCAIcUUEQCAAIAI2AgBBkNAAIAQgCHI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEEAkADQCAEIgAoAgRBeHEgBUYNASABQR12IQQgAUEBdCEBIAAgBEEEcWpBEGoiBigCACIEDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLIANBCGohAQwBCwJAIAlFDQACQCAAKAIcIgFBAnRBvNIAaiICKAIAIABGBEAgAiADNgIAIAMNAUGQ0AAgC0F+IAF3cTYCAAwCCyAJQRBBFCAJKAIQIABGG2ogAzYCACADRQ0BCyADIAk2AhggACgCECIBBEAgAyABNgIQIAEgAzYCGAsgAEEUaigCACIBRQ0AIANBFGogATYCACABIAM2AhgLAkAgBUEPTQRAIAAgBCAFaiIBQQNyNgIEIAAgAWoiASABKAIEQQFyNgIEDAELIAAgBGoiByAFQQFyNgIEIAAgBEEDcjYCBCAFIAdqIAU2AgAgCARAIAhBeHFBtNAAaiEBQaDQACgCACEDAn9BASAIQQN2dCICIAZxRQRAQYzQACACIAZyNgIAIAEMAQsgASgCCAsiAiADNgIMIAEgAzYCCCADIAE2AgwgAyACNgIIC0Gg0AAgBzYCAEGU0AAgBTYCAAsgAEEIaiEBCyAKQRBqJAAgAQtDACAARQRAPwBBEHQPCwJAIABB//8DcQ0AIABBAEgNACAAQRB2QAAiAEF/RgRAQfzTAEEwNgIAQX8PCyAAQRB0DwsACwvcPyIAQYAICwkBAAAAAgAAAAMAQZQICwUEAAAABQBBpAgLCQYAAAAHAAAACABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64"); + var { Buffer: Buffer4 } = __require("node:buffer"); + module.exports = Buffer4.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64"); } }); @@ -2942,8 +2946,8 @@ var require_llhttp_wasm = __commonJS({ var require_llhttp_simd_wasm = __commonJS({ ""(exports, module) { "use strict"; - var { Buffer: Buffer2 } = __require("node:buffer"); - module.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK77MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB9ysPC0GQMQ8LQdcxDwtBoi0PC0HUJw8LQeArDwtBnywPC0HrMQ8LQdUfDwtByjEPC0HeJQ8LQdQeDwtB9BwPC0GnMg8LQbEdDwtBoB0PC0G5MQ8LQbwwDwtBkiEPC0GzJg8LQeksDwtBrB4PC0HUKw8LQfcmDwtBgCYPC0GwIQ8LQf4eDwtBjSMPC0GJLQ8LQfciDwtBoDEPC0GuHw8LQcYlDwtB6B4PC0GTIg8LQcIvDwtBwx0PC0GLLA8LQeEdDwtBjS8PC0HqIQ8LQbQtDwtB0i8PC0HfMg8LQdIyDwtB8DAPC0GpIg8LQfkjDwtBmR4PC0G1LA8LQZswDwtBkjIPC0G2Kw8LQcIiDwtB+DIPC0GeJQ8LQdAiDwtBuh4PC0GBHg8LAAtB1iEhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCz4BAn8CQCAAKAI4IgNFDQAgAygCBCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBxhE2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCCCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9go2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCDCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7Ro2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCECIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlRA2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCFCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBqhs2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCGCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB7RM2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCKCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABB9gg2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCHCIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBwhk2AhBBGCEECyAECz4BAn8CQCAAKAI4IgNFDQAgAygCICIDRQ0AIAAgASACIAFrIAMRAQAiBEF/Rw0AIABBlBQ2AhBBGCEECyAEC1kBAn8CQCAALQAoQQFGDQAgAC8BMiIBQeQAa0HkAEkNACABQcwBRg0AIAFBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhAiAAQYgEcUGABEYNACAAQShxRSECCyACC4wBAQJ/AkACQAJAIAAtACpFDQAgAC0AK0UNACAALwEwIgFBAnFFDQEMAgsgAC8BMCIBQQFxRQ0BC0EBIQIgAC0AKEEBRg0AIAAvATIiAEHkAGtB5ABJDQAgAEHMAUYNACAAQbACRg0AIAFBwABxDQBBACECIAFBiARxQYAERg0AIAFBKHFBAEchAgsgAgtzACAAQRBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAA/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQTBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQSBq/QwAAAAAAAAAAAAAAAAAAAAA/QsDACAAQd0BNgIcCwYAIAAQMguaLQELfyMAQRBrIgokAEGk0AAoAgAiCUUEQEHk0wAoAgAiBUUEQEHw0wBCfzcCAEHo0wBCgICEgICAwAA3AgBB5NMAIApBCGpBcHFB2KrVqgVzIgU2AgBB+NMAQQA2AgBByNMAQQA2AgALQczTAEGA1AQ2AgBBnNAAQYDUBDYCAEGw0AAgBTYCAEGs0ABBfzYCAEHQ0wBBgKwDNgIAA0AgAUHI0ABqIAFBvNAAaiICNgIAIAIgAUG00ABqIgM2AgAgAUHA0ABqIAM2AgAgAUHQ0ABqIAFBxNAAaiIDNgIAIAMgAjYCACABQdjQAGogAUHM0ABqIgI2AgAgAiADNgIAIAFB1NAAaiACNgIAIAFBIGoiAUGAAkcNAAtBjNQEQcGrAzYCAEGo0ABB9NMAKAIANgIAQZjQAEHAqwM2AgBBpNAAQYjUBDYCAEHM/wdBODYCAEGI1AQhCQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQewBTQRAQYzQACgCACIGQRAgAEETakFwcSAAQQtJGyIEQQN2IgB2IgFBA3EEQAJAIAFBAXEgAHJBAXMiAkEDdCIAQbTQAGoiASAAQbzQAGooAgAiACgCCCIDRgRAQYzQACAGQX4gAndxNgIADAELIAEgAzYCCCADIAE2AgwLIABBCGohASAAIAJBA3QiAkEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwRC0GU0AAoAgAiCCAETw0BIAEEQAJAQQIgAHQiAkEAIAJrciABIAB0cWgiAEEDdCICQbTQAGoiASACQbzQAGooAgAiAigCCCIDRgRAQYzQACAGQX4gAHdxIgY2AgAMAQsgASADNgIIIAMgATYCDAsgAiAEQQNyNgIEIABBA3QiACAEayEFIAAgAmogBTYCACACIARqIgQgBUEBcjYCBCAIBEAgCEF4cUG00ABqIQBBoNAAKAIAIQMCf0EBIAhBA3Z0IgEgBnFFBEBBjNAAIAEgBnI2AgAgAAwBCyAAKAIICyIBIAM2AgwgACADNgIIIAMgADYCDCADIAE2AggLIAJBCGohAUGg0AAgBDYCAEGU0AAgBTYCAAwRC0GQ0AAoAgAiC0UNASALaEECdEG80gBqKAIAIgAoAgRBeHEgBGshBSAAIQIDQAJAIAIoAhAiAUUEQCACQRRqKAIAIgFFDQELIAEoAgRBeHEgBGsiAyAFSSECIAMgBSACGyEFIAEgACACGyEAIAEhAgwBCwsgACgCGCEJIAAoAgwiAyAARwRAQZzQACgCABogAyAAKAIIIgE2AgggASADNgIMDBALIABBFGoiAigCACIBRQRAIAAoAhAiAUUNAyAAQRBqIQILA0AgAiEHIAEiA0EUaiICKAIAIgENACADQRBqIQIgAygCECIBDQALIAdBADYCAAwPC0F/IQQgAEG/f0sNACAAQRNqIgFBcHEhBEGQ0AAoAgAiCEUNAEEAIARrIQUCQAJAAkACf0EAIARBgAJJDQAaQR8gBEH///8HSw0AGiAEQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qCyIGQQJ0QbzSAGooAgAiAkUEQEEAIQFBACEDDAELQQAhASAEQRkgBkEBdmtBACAGQR9HG3QhAEEAIQMDQAJAIAIoAgRBeHEgBGsiByAFTw0AIAIhAyAHIgUNAEEAIQUgAiEBDAMLIAEgAkEUaigCACIHIAcgAiAAQR12QQRxakEQaigCACICRhsgASAHGyEBIABBAXQhACACDQALCyABIANyRQRAQQAhA0ECIAZ0IgBBACAAa3IgCHEiAEUNAyAAaEECdEG80gBqKAIAIQELIAFFDQELA0AgASgCBEF4cSAEayICIAVJIQAgAiAFIAAbIQUgASADIAAbIQMgASgCECIABH8gAAUgAUEUaigCAAsiAQ0ACwsgA0UNACAFQZTQACgCACAEa08NACADKAIYIQcgAyADKAIMIgBHBEBBnNAAKAIAGiAAIAMoAggiATYCCCABIAA2AgwMDgsgA0EUaiICKAIAIgFFBEAgAygCECIBRQ0DIANBEGohAgsDQCACIQYgASIAQRRqIgIoAgAiAQ0AIABBEGohAiAAKAIQIgENAAsgBkEANgIADA0LQZTQACgCACIDIARPBEBBoNAAKAIAIQECQCADIARrIgJBEE8EQCABIARqIgAgAkEBcjYCBCABIANqIAI2AgAgASAEQQNyNgIEDAELIAEgA0EDcjYCBCABIANqIgAgACgCBEEBcjYCBEEAIQBBACECC0GU0AAgAjYCAEGg0AAgADYCACABQQhqIQEMDwtBmNAAKAIAIgMgBEsEQCAEIAlqIgAgAyAEayIBQQFyNgIEQaTQACAANgIAQZjQACABNgIAIAkgBEEDcjYCBCAJQQhqIQEMDwtBACEBIAQCf0Hk0wAoAgAEQEHs0wAoAgAMAQtB8NMAQn83AgBB6NMAQoCAhICAgMAANwIAQeTTACAKQQxqQXBxQdiq1aoFczYCAEH40wBBADYCAEHI0wBBADYCAEGAgAQLIgAgBEHHAGoiBWoiBkEAIABrIgdxIgJPBEBB/NMAQTA2AgAMDwsCQEHE0wAoAgAiAUUNAEG80wAoAgAiCCACaiEAIAAgAU0gACAIS3ENAEEAIQFB/NMAQTA2AgAMDwtByNMALQAAQQRxDQQCQAJAIAkEQEHM0wAhAQNAIAEoAgAiACAJTQRAIAAgASgCBGogCUsNAwsgASgCCCIBDQALC0EAEDMiAEF/Rg0FIAIhBkHo0wAoAgAiAUEBayIDIABxBEAgAiAAayAAIANqQQAgAWtxaiEGCyAEIAZPDQUgBkH+////B0sNBUHE0wAoAgAiAwRAQbzTACgCACIHIAZqIQEgASAHTQ0GIAEgA0sNBgsgBhAzIgEgAEcNAQwHCyAGIANrIAdxIgZB/v///wdLDQQgBhAzIQAgACABKAIAIAEoAgRqRg0DIAAhAQsCQCAGIARByABqTw0AIAFBf0YNAEHs0wAoAgAiACAFIAZrakEAIABrcSIAQf7///8HSwRAIAEhAAwHCyAAEDNBf0cEQCAAIAZqIQYgASEADAcLQQAgBmsQMxoMBAsgASIAQX9HDQUMAwtBACEDDAwLQQAhAAwKCyAAQX9HDQILQcjTAEHI0wAoAgBBBHI2AgALIAJB/v///wdLDQEgAhAzIQBBABAzIQEgAEF/Rg0BIAFBf0YNASAAIAFPDQEgASAAayIGIARBOGpNDQELQbzTAEG80wAoAgAgBmoiATYCAEHA0wAoAgAgAUkEQEHA0wAgATYCAAsCQAJAAkBBpNAAKAIAIgIEQEHM0wAhAQNAIAAgASgCACIDIAEoAgQiBWpGDQIgASgCCCIBDQALDAILQZzQACgCACIBQQBHIAAgAU9xRQRAQZzQACAANgIAC0EAIQFB0NMAIAY2AgBBzNMAIAA2AgBBrNAAQX82AgBBsNAAQeTTACgCADYCAEHY0wBBADYCAANAIAFByNAAaiABQbzQAGoiAjYCACACIAFBtNAAaiIDNgIAIAFBwNAAaiADNgIAIAFB0NAAaiABQcTQAGoiAzYCACADIAI2AgAgAUHY0ABqIAFBzNAAaiICNgIAIAIgAzYCACABQdTQAGogAjYCACABQSBqIgFBgAJHDQALQXggAGtBD3EiASAAaiICIAZBOGsiAyABayIBQQFyNgIEQajQAEH00wAoAgA2AgBBmNAAIAE2AgBBpNAAIAI2AgAgACADakE4NgIEDAILIAAgAk0NACACIANJDQAgASgCDEEIcQ0AQXggAmtBD3EiACACaiIDQZjQACgCACAGaiIHIABrIgBBAXI2AgQgASAFIAZqNgIEQajQAEH00wAoAgA2AgBBmNAAIAA2AgBBpNAAIAM2AgAgAiAHakE4NgIEDAELIABBnNAAKAIASQRAQZzQACAANgIACyAAIAZqIQNBzNMAIQECQAJAAkADQCADIAEoAgBHBEAgASgCCCIBDQEMAgsLIAEtAAxBCHFFDQELQczTACEBA0AgASgCACIDIAJNBEAgAyABKAIEaiIFIAJLDQMLIAEoAgghAQwACwALIAEgADYCACABIAEoAgQgBmo2AgQgAEF4IABrQQ9xaiIJIARBA3I2AgQgA0F4IANrQQ9xaiIGIAQgCWoiBGshASACIAZGBEBBpNAAIAQ2AgBBmNAAQZjQACgCACABaiIANgIAIAQgAEEBcjYCBAwIC0Gg0AAoAgAgBkYEQEGg0AAgBDYCAEGU0ABBlNAAKAIAIAFqIgA2AgAgBCAAQQFyNgIEIAAgBGogADYCAAwICyAGKAIEIgVBA3FBAUcNBiAFQXhxIQggBUH/AU0EQCAFQQN2IQMgBigCCCIAIAYoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAcLIAIgADYCCCAAIAI2AgwMBgsgBigCGCEHIAYgBigCDCIARwRAIAAgBigCCCICNgIIIAIgADYCDAwFCyAGQRRqIgIoAgAiBUUEQCAGKAIQIgVFDQQgBkEQaiECCwNAIAIhAyAFIgBBFGoiAigCACIFDQAgAEEQaiECIAAoAhAiBQ0ACyADQQA2AgAMBAtBeCAAa0EPcSIBIABqIgcgBkE4ayIDIAFrIgFBAXI2AgQgACADakE4NgIEIAIgBUE3IAVrQQ9xakE/ayIDIAMgAkEQakkbIgNBIzYCBEGo0ABB9NMAKAIANgIAQZjQACABNgIAQaTQACAHNgIAIANBEGpB1NMAKQIANwIAIANBzNMAKQIANwIIQdTTACADQQhqNgIAQdDTACAGNgIAQczTACAANgIAQdjTAEEANgIAIANBJGohAQNAIAFBBzYCACAFIAFBBGoiAUsNAAsgAiADRg0AIAMgAygCBEF+cTYCBCADIAMgAmsiBTYCACACIAVBAXI2AgQgBUH/AU0EQCAFQXhxQbTQAGohAAJ/QYzQACgCACIBQQEgBUEDdnQiA3FFBEBBjNAAIAEgA3I2AgAgAAwBCyAAKAIICyIBIAI2AgwgACACNgIIIAIgADYCDCACIAE2AggMAQtBHyEBIAVB////B00EQCAFQSYgBUEIdmciAGt2QQFxIABBAXRrQT5qIQELIAIgATYCHCACQgA3AhAgAUECdEG80gBqIQBBkNAAKAIAIgNBASABdCIGcUUEQCAAIAI2AgBBkNAAIAMgBnI2AgAgAiAANgIYIAIgAjYCCCACIAI2AgwMAQsgBUEZIAFBAXZrQQAgAUEfRxt0IQEgACgCACEDAkADQCADIgAoAgRBeHEgBUYNASABQR12IQMgAUEBdCEBIAAgA0EEcWpBEGoiBigCACIDDQALIAYgAjYCACACIAA2AhggAiACNgIMIAIgAjYCCAwBCyAAKAIIIgEgAjYCDCAAIAI2AgggAkEANgIYIAIgADYCDCACIAE2AggLQZjQACgCACIBIARNDQBBpNAAKAIAIgAgBGoiAiABIARrIgFBAXI2AgRBmNAAIAE2AgBBpNAAIAI2AgAgACAEQQNyNgIEIABBCGohAQwIC0EAIQFB/NMAQTA2AgAMBwtBACEACyAHRQ0AAkAgBigCHCICQQJ0QbzSAGoiAygCACAGRgRAIAMgADYCACAADQFBkNAAQZDQACgCAEF+IAJ3cTYCAAwCCyAHQRBBFCAHKAIQIAZGG2ogADYCACAARQ0BCyAAIAc2AhggBigCECICBEAgACACNgIQIAIgADYCGAsgBkEUaigCACICRQ0AIABBFGogAjYCACACIAA2AhgLIAEgCGohASAGIAhqIgYoAgQhBQsgBiAFQX5xNgIEIAEgBGogATYCACAEIAFBAXI2AgQgAUH/AU0EQCABQXhxQbTQAGohAAJ/QYzQACgCACICQQEgAUEDdnQiAXFFBEBBjNAAIAEgAnI2AgAgAAwBCyAAKAIICyIBIAQ2AgwgACAENgIIIAQgADYCDCAEIAE2AggMAQtBHyEFIAFB////B00EQCABQSYgAUEIdmciAGt2QQFxIABBAXRrQT5qIQULIAQgBTYCHCAEQgA3AhAgBUECdEG80gBqIQBBkNAAKAIAIgJBASAFdCIDcUUEQCAAIAQ2AgBBkNAAIAIgA3I2AgAgBCAANgIYIAQgBDYCCCAEIAQ2AgwMAQsgAUEZIAVBAXZrQQAgBUEfRxt0IQUgACgCACEAAkADQCAAIgIoAgRBeHEgAUYNASAFQR12IQAgBUEBdCEFIAIgAEEEcWpBEGoiAygCACIADQALIAMgBDYCACAEIAI2AhggBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAlBCGohAQwCCwJAIAdFDQACQCADKAIcIgFBAnRBvNIAaiICKAIAIANGBEAgAiAANgIAIAANAUGQ0AAgCEF+IAF3cSIINgIADAILIAdBEEEUIAcoAhAgA0YbaiAANgIAIABFDQELIAAgBzYCGCADKAIQIgEEQCAAIAE2AhAgASAANgIYCyADQRRqKAIAIgFFDQAgAEEUaiABNgIAIAEgADYCGAsCQCAFQQ9NBEAgAyAEIAVqIgBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQMAQsgAyAEaiICIAVBAXI2AgQgAyAEQQNyNgIEIAIgBWogBTYCACAFQf8BTQRAIAVBeHFBtNAAaiEAAn9BjNAAKAIAIgFBASAFQQN2dCIFcUUEQEGM0AAgASAFcjYCACAADAELIAAoAggLIgEgAjYCDCAAIAI2AgggAiAANgIMIAIgATYCCAwBC0EfIQEgBUH///8HTQRAIAVBJiAFQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAQsgAiABNgIcIAJCADcCECABQQJ0QbzSAGohAEEBIAF0IgQgCHFFBEAgACACNgIAQZDQACAEIAhyNgIAIAIgADYCGCACIAI2AgggAiACNgIMDAELIAVBGSABQQF2a0EAIAFBH0cbdCEBIAAoAgAhBAJAA0AgBCIAKAIEQXhxIAVGDQEgAUEddiEEIAFBAXQhASAAIARBBHFqQRBqIgYoAgAiBA0ACyAGIAI2AgAgAiAANgIYIAIgAjYCDCACIAI2AggMAQsgACgCCCIBIAI2AgwgACACNgIIIAJBADYCGCACIAA2AgwgAiABNgIICyADQQhqIQEMAQsCQCAJRQ0AAkAgACgCHCIBQQJ0QbzSAGoiAigCACAARgRAIAIgAzYCACADDQFBkNAAIAtBfiABd3E2AgAMAgsgCUEQQRQgCSgCECAARhtqIAM2AgAgA0UNAQsgAyAJNgIYIAAoAhAiAQRAIAMgATYCECABIAM2AhgLIABBFGooAgAiAUUNACADQRRqIAE2AgAgASADNgIYCwJAIAVBD00EQCAAIAQgBWoiAUEDcjYCBCAAIAFqIgEgASgCBEEBcjYCBAwBCyAAIARqIgcgBUEBcjYCBCAAIARBA3I2AgQgBSAHaiAFNgIAIAgEQCAIQXhxQbTQAGohAUGg0AAoAgAhAwJ/QQEgCEEDdnQiAiAGcUUEQEGM0AAgAiAGcjYCACABDAELIAEoAggLIgIgAzYCDCABIAM2AgggAyABNgIMIAMgAjYCCAtBoNAAIAc2AgBBlNAAIAU2AgALIABBCGohAQsgCkEQaiQAIAELQwAgAEUEQD8AQRB0DwsCQCAAQf//A3ENACAAQQBIDQAgAEEQdkAAIgBBf0YEQEH80wBBMDYCAEF/DwsgAEEQdA8LAAsL3D8iAEGACAsJAQAAAAIAAAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64"); + var { Buffer: Buffer4 } = __require("node:buffer"); + module.exports = Buffer4.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64"); } }); @@ -2960,11 +2964,11 @@ var require_constants3 = __commonJS({ /** @type {const} */ [101, 204, 205, 304] ); - var redirectStatus = ( + var redirectStatus2 = ( /** @type {const} */ [301, 302, 303, 307, 308] ); - var redirectStatusSet = new Set(redirectStatus); + var redirectStatusSet = new Set(redirectStatus2); var badPorts = ( /** @type {const} */ [ @@ -3148,7 +3152,7 @@ var require_constants3 = __commonJS({ requestMode, requestCredentials, requestCache, - redirectStatus, + redirectStatus: redirectStatus2, corsSafeListedMethods, nullBodyStatus, safeMethods, @@ -3295,15 +3299,15 @@ var require_data_url = __commonJS({ const length = input.length; const output = new Uint8Array(length); let j = 0; - for (let i = 0; i < length; ++i) { - const byte = input[i]; + for (let i2 = 0; i2 < length; ++i2) { + const byte = input[i2]; if (byte !== 37) { output[j++] = byte; - } else if (byte === 37 && !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2]))) { + } else if (byte === 37 && !(isHexCharByte(input[i2 + 1]) && isHexCharByte(input[i2 + 2]))) { output[j++] = 37; } else { - output[j++] = hexByteToNumber(input[i + 1]) << 4 | hexByteToNumber(input[i + 2]); - i += 2; + output[j++] = hexByteToNumber(input[i2 + 1]) << 4 | hexByteToNumber(input[i2 + 2]); + i2 += 2; } } return length === j ? output : output.subarray(0, j); @@ -3491,13 +3495,13 @@ var require_data_url = __commonJS({ return String.fromCharCode.apply(null, input); } let result = ""; - let i = 0; + let i2 = 0; let addition = (2 << 15) - 1; - while (i < length) { - if (i + addition > length) { - addition = length - i; + while (i2 < length) { + if (i2 + addition > length) { + addition = length - i2; } - result += String.fromCharCode.apply(null, input.subarray(i, i += addition)); + result += String.fromCharCode.apply(null, input.subarray(i2, i2 += addition)); } return result; } @@ -3559,7 +3563,7 @@ var require_data_url = __commonJS({ var require_webidl = __commonJS({ ""(exports, module) { "use strict"; - var { types, inspect } = __require("node:util"); + var { types: types3, inspect } = __require("node:util"); var { markAsUncloneable } = __require("node:worker_threads"); var { toUSVString } = require_util(); var webidl = {}; @@ -3654,51 +3658,51 @@ var require_webidl = __commonJS({ lowerBound = Math.pow(-2, bitLength) - 1; upperBound = Math.pow(2, bitLength - 1) - 1; } - let x = Number(V); - if (x === 0) { - x = 0; + let x2 = Number(V); + if (x2 === 0) { + x2 = 0; } if (opts?.enforceRange === true) { - if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + if (Number.isNaN(x2) || x2 === Number.POSITIVE_INFINITY || x2 === Number.NEGATIVE_INFINITY) { throw webidl.errors.exception({ header: "Integer conversion", message: `Could not convert ${webidl.util.Stringify(V)} to an integer.` }); } - x = webidl.util.IntegerPart(x); - if (x < lowerBound || x > upperBound) { + x2 = webidl.util.IntegerPart(x2); + if (x2 < lowerBound || x2 > upperBound) { throw webidl.errors.exception({ header: "Integer conversion", - message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + message: `Value must be between ${lowerBound}-${upperBound}, got ${x2}.` }); } - return x; + return x2; } - if (!Number.isNaN(x) && opts?.clamp === true) { - x = Math.min(Math.max(x, lowerBound), upperBound); - if (Math.floor(x) % 2 === 0) { - x = Math.floor(x); + if (!Number.isNaN(x2) && opts?.clamp === true) { + x2 = Math.min(Math.max(x2, lowerBound), upperBound); + if (Math.floor(x2) % 2 === 0) { + x2 = Math.floor(x2); } else { - x = Math.ceil(x); + x2 = Math.ceil(x2); } - return x; + return x2; } - if (Number.isNaN(x) || x === 0 && Object.is(0, x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { + if (Number.isNaN(x2) || x2 === 0 && Object.is(0, x2) || x2 === Number.POSITIVE_INFINITY || x2 === Number.NEGATIVE_INFINITY) { return 0; } - x = webidl.util.IntegerPart(x); - x = x % Math.pow(2, bitLength); - if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { - return x - Math.pow(2, bitLength); + x2 = webidl.util.IntegerPart(x2); + x2 = x2 % Math.pow(2, bitLength); + if (signedness === "signed" && x2 >= Math.pow(2, bitLength) - 1) { + return x2 - Math.pow(2, bitLength); } - return x; + return x2; }; webidl.util.IntegerPart = function(n) { - const r = Math.floor(Math.abs(n)); + const r2 = Math.floor(Math.abs(n)); if (n < 0) { - return -1 * r; + return -1 * r2; } - return r; + return r2; }; webidl.util.Stringify = function(V) { const type = webidl.util.Type(V); @@ -3749,7 +3753,7 @@ var require_webidl = __commonJS({ }); } const result = {}; - if (!types.isProxy(O)) { + if (!types3.isProxy(O)) { const keys2 = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)]; for (const key of keys2) { const typedKey = keyConverter(key, prefix, argument); @@ -3770,12 +3774,12 @@ var require_webidl = __commonJS({ return result; }; }; - webidl.interfaceConverter = function(i) { + webidl.interfaceConverter = function(i2) { return (V, prefix, argument, opts) => { - if (opts?.strict !== false && !(V instanceof i)) { + if (opts?.strict !== false && !(V instanceof i2)) { throw webidl.errors.exception({ header: prefix, - message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${i.name}.` + message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${i2.name}.` }); } return V; @@ -3843,49 +3847,49 @@ var require_webidl = __commonJS({ return String(V); }; webidl.converters.ByteString = function(V, prefix, argument) { - const x = webidl.converters.DOMString(V, prefix, argument); - for (let index = 0; index < x.length; index++) { - if (x.charCodeAt(index) > 255) { + const x2 = webidl.converters.DOMString(V, prefix, argument); + for (let index = 0; index < x2.length; index++) { + if (x2.charCodeAt(index) > 255) { throw new TypeError( - `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` + `Cannot convert argument to a ByteString because the character at index ${index} has a value of ${x2.charCodeAt(index)} which is greater than 255.` ); } } - return x; + return x2; }; webidl.converters.USVString = toUSVString; webidl.converters.boolean = function(V) { - const x = Boolean(V); - return x; + const x2 = Boolean(V); + return x2; }; webidl.converters.any = function(V) { return V; }; webidl.converters["long long"] = function(V, prefix, argument) { - const x = webidl.util.ConvertToInt(V, 64, "signed", void 0, prefix, argument); - return x; + const x2 = webidl.util.ConvertToInt(V, 64, "signed", void 0, prefix, argument); + return x2; }; webidl.converters["unsigned long long"] = function(V, prefix, argument) { - const x = webidl.util.ConvertToInt(V, 64, "unsigned", void 0, prefix, argument); - return x; + const x2 = webidl.util.ConvertToInt(V, 64, "unsigned", void 0, prefix, argument); + return x2; }; webidl.converters["unsigned long"] = function(V, prefix, argument) { - const x = webidl.util.ConvertToInt(V, 32, "unsigned", void 0, prefix, argument); - return x; + const x2 = webidl.util.ConvertToInt(V, 32, "unsigned", void 0, prefix, argument); + return x2; }; webidl.converters["unsigned short"] = function(V, prefix, argument, opts) { - const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts, prefix, argument); - return x; + const x2 = webidl.util.ConvertToInt(V, 16, "unsigned", opts, prefix, argument); + return x2; }; webidl.converters.ArrayBuffer = function(V, prefix, argument, opts) { - if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) { + if (webidl.util.Type(V) !== "Object" || !types3.isAnyArrayBuffer(V)) { throw webidl.errors.conversionFailed({ prefix, argument: `${argument} ("${webidl.util.Stringify(V)}")`, types: ["ArrayBuffer"] }); } - if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) { + if (opts?.allowShared === false && types3.isSharedArrayBuffer(V)) { throw webidl.errors.exception({ header: "ArrayBuffer", message: "SharedArrayBuffer is not allowed." @@ -3900,14 +3904,14 @@ var require_webidl = __commonJS({ return V; }; webidl.converters.TypedArray = function(V, T, prefix, name, opts) { - if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) { + if (webidl.util.Type(V) !== "Object" || !types3.isTypedArray(V) || V.constructor.name !== T.name) { throw webidl.errors.conversionFailed({ prefix, argument: `${name} ("${webidl.util.Stringify(V)}")`, types: [T.name] }); } - if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + if (opts?.allowShared === false && types3.isSharedArrayBuffer(V.buffer)) { throw webidl.errors.exception({ header: "ArrayBuffer", message: "SharedArrayBuffer is not allowed." @@ -3922,13 +3926,13 @@ var require_webidl = __commonJS({ return V; }; webidl.converters.DataView = function(V, prefix, name, opts) { - if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) { + if (webidl.util.Type(V) !== "Object" || !types3.isDataView(V)) { throw webidl.errors.exception({ header: prefix, message: `${name} is not a DataView.` }); } - if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + if (opts?.allowShared === false && types3.isSharedArrayBuffer(V.buffer)) { throw webidl.errors.exception({ header: "ArrayBuffer", message: "SharedArrayBuffer is not allowed." @@ -3943,13 +3947,13 @@ var require_webidl = __commonJS({ return V; }; webidl.converters.BufferSource = function(V, prefix, name, opts) { - if (types.isAnyArrayBuffer(V)) { + if (types3.isAnyArrayBuffer(V)) { return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false }); } - if (types.isTypedArray(V)) { + if (types3.isTypedArray(V)) { return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false }); } - if (types.isDataView(V)) { + if (types3.isDataView(V)) { return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false }); } throw webidl.errors.conversionFailed({ @@ -3979,21 +3983,21 @@ var require_util2 = __commonJS({ ""(exports, module) { "use strict"; var { Transform } = __require("node:stream"); - var zlib = __require("node:zlib"); + var zlib2 = __require("node:zlib"); var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants3(); var { getGlobalOrigin } = require_global(); var { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require_data_url(); var { performance: performance2 } = __require("node:perf_hooks"); - var { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require_util(); + var { isBlobLike: isBlobLike2, ReadableStreamFrom: ReadableStreamFrom2, isValidHTTPToken, normalizedMethodRecordsBase } = require_util(); var assert = __require("node:assert"); var { isUint8Array } = __require("node:util/types"); var { webidl } = require_webidl(); var supportedHashes = []; - var crypto2; + var crypto3; try { - crypto2 = __require("node:crypto"); + crypto3 = __require("node:crypto"); const possibleRelevantHashes = ["sha256", "sha384", "sha512"]; - supportedHashes = crypto2.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)); + supportedHashes = crypto3.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)); } catch { } function responseURL(response) { @@ -4018,8 +4022,8 @@ var require_util2 = __commonJS({ return location; } function isValidEncodedURL(url) { - for (let i = 0; i < url.length; ++i) { - const code = url.charCodeAt(i); + for (let i2 = 0; i2 < url.length; ++i2) { + const code = url.charCodeAt(i2); if (code > 126 || // Non-US-ASCII + DEL code < 32) { return false; @@ -4044,8 +4048,8 @@ var require_util2 = __commonJS({ return object instanceof Error || (object?.constructor?.name === "Error" || object?.constructor?.name === "DOMException"); } function isValidReasonPhrase(statusText) { - for (let i = 0; i < statusText.length; ++i) { - const c = statusText.charCodeAt(i); + for (let i2 = 0; i2 < statusText.length; ++i2) { + const c = statusText.charCodeAt(i2); if (!(c === 9 || // HTAB c >= 32 && c <= 126 || // SP / VCHAR c >= 128 && c <= 255)) { @@ -4063,8 +4067,8 @@ var require_util2 = __commonJS({ const policyHeader = (headersList.get("referrer-policy", true) ?? "").split(","); let policy = ""; if (policyHeader.length > 0) { - for (let i = policyHeader.length; i !== 0; i--) { - const token = policyHeader[i - 1].trim(); + for (let i2 = policyHeader.length; i2 !== 0; i2--) { + const token = policyHeader[i2 - 1].trim(); if (referrerPolicyTokens.has(token)) { policy = token; break; @@ -4169,7 +4173,7 @@ var require_util2 = __commonJS({ referrerPolicy: policyContainer.referrerPolicy }; } - function determineRequestsReferrer(request2) { + function determineRequestsReferrer2(request2) { const policy = request2.referrerPolicy; assert(policy); let referrerSource = null; @@ -4240,8 +4244,8 @@ var require_util2 = __commonJS({ return true; if (url.protocol === "file:") return true; - return isOriginPotentiallyTrustworthy(url.origin); - function isOriginPotentiallyTrustworthy(origin) { + return isOriginPotentiallyTrustworthy2(url.origin); + function isOriginPotentiallyTrustworthy2(origin) { if (origin == null || origin === "null") return false; const originAsURL = new URL(origin); @@ -4255,7 +4259,7 @@ var require_util2 = __commonJS({ } } function bytesMatch(bytes, metadataList) { - if (crypto2 === void 0) { + if (crypto3 === void 0) { return true; } const parsedMetadata = parseMetadata(metadataList); @@ -4270,7 +4274,7 @@ var require_util2 = __commonJS({ for (const item of metadata) { const algorithm = item.algo; const expectedValue = item.hash; - let actualValue = crypto2.createHash(algorithm).update(bytes).digest("base64"); + let actualValue = crypto3.createHash(algorithm).update(bytes).digest("base64"); if (actualValue[actualValue.length - 1] === "=") { if (actualValue[actualValue.length - 2] === "=") { actualValue = actualValue.slice(0, -2); @@ -4309,8 +4313,8 @@ var require_util2 = __commonJS({ if (algorithm[3] === "5") { return algorithm; } - for (let i = 1; i < metadataList.length; ++i) { - const metadata = metadataList[i]; + for (let i2 = 1; i2 < metadataList.length; ++i2) { + const metadata = metadataList[i2]; if (metadata.algo[3] === "5") { algorithm = "sha512"; break; @@ -4327,9 +4331,9 @@ var require_util2 = __commonJS({ return metadataList; } let pos = 0; - for (let i = 0; i < metadataList.length; ++i) { - if (metadataList[i].algo === algorithm) { - metadataList[pos++] = metadataList[i]; + for (let i2 = 0; i2 < metadataList.length; ++i2) { + if (metadataList[i2].algo === algorithm) { + metadataList[pos++] = metadataList[i2]; } } metadataList.length = pos; @@ -4339,9 +4343,9 @@ var require_util2 = __commonJS({ if (actualValue.length !== expectedValue.length) { return false; } - for (let i = 0; i < actualValue.length; ++i) { - if (actualValue[i] !== expectedValue[i]) { - if (actualValue[i] === "+" && expectedValue[i] === "-" || actualValue[i] === "/" && expectedValue[i] === "_") { + for (let i2 = 0; i2 < actualValue.length; ++i2) { + if (actualValue[i2] !== expectedValue[i2]) { + if (actualValue[i2] === "+" && expectedValue[i2] === "-" || actualValue[i2] === "/" && expectedValue[i2] === "_") { continue; } return false; @@ -4351,11 +4355,11 @@ var require_util2 = __commonJS({ } function tryUpgradeRequestToAPotentiallyTrustworthyURL(request2) { } - function sameOrigin(A, B) { - if (A.origin === B.origin && A.origin === "null") { + function sameOrigin(A2, B) { + if (A2.origin === B.origin && A2.origin === "null") { return true; } - if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + if (A2.protocol === B.protocol && A2.hostname === B.hostname && A2.port === B.port) { return true; } return false; @@ -4519,14 +4523,14 @@ var require_util2 = __commonJS({ let reader; try { reader = body.stream.getReader(); - } catch (e) { - errorSteps(e); + } catch (e2) { + errorSteps(e2); return; } try { successSteps(await readAllBytes(reader)); - } catch (e) { - errorSteps(e); + } catch (e2) { + errorSteps(e2); } } function isReadableStreamLike(stream) { @@ -4668,7 +4672,7 @@ var require_util2 = __commonJS({ callback(); return; } - this._inflateStream = (chunk[0] & 15) === 8 ? zlib.createInflate(this.#zlibOptions) : zlib.createInflateRaw(this.#zlibOptions); + this._inflateStream = (chunk[0] & 15) === 8 ? zlib2.createInflate(this.#zlibOptions) : zlib2.createInflateRaw(this.#zlibOptions); this._inflateStream.on("data", this.push.bind(this)); this._inflateStream.on("end", () => this.push(null)); this._inflateStream.on("error", (err) => this.destroy(err)); @@ -4782,11 +4786,11 @@ var require_util2 = __commonJS({ isCancelled, isValidEncodedURL, createDeferredPromise, - ReadableStreamFrom, + ReadableStreamFrom: ReadableStreamFrom2, tryUpgradeRequestToAPotentiallyTrustworthyURL, clampAndCoarsenConnectionTimingInfo, coarsenedSharedCurrentTime, - determineRequestsReferrer, + determineRequestsReferrer: determineRequestsReferrer2, makePolicyContainer, clonePolicyContainer, appendFetchMetadata, @@ -4801,7 +4805,7 @@ var require_util2 = __commonJS({ requestCurrentURL, responseURL, responseLocationURL, - isBlobLike, + isBlobLike: isBlobLike2, isURLPotentiallyTrustworthy, isValidReasonPhrase, sameOrigin, @@ -4851,18 +4855,18 @@ var require_symbols2 = __commonJS({ var require_file = __commonJS({ ""(exports, module) { "use strict"; - var { Blob: Blob2, File } = __require("node:buffer"); + var { Blob: Blob4, File: File4 } = __require("node:buffer"); var { kState } = require_symbols2(); var { webidl } = require_webidl(); var FileLike = class _FileLike { constructor(blobLike, fileName, options = {}) { const n = fileName; - const t = options.type; + const t2 = options.type; const d = options.lastModified ?? Date.now(); this[kState] = { blobLike, name: n, - type: t, + type: t2, lastModified: d }; } @@ -4902,11 +4906,11 @@ var require_file = __commonJS({ return "File"; } }; - webidl.converters.Blob = webidl.interfaceConverter(Blob2); - function isFileLike(object) { - return object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File"; + webidl.converters.Blob = webidl.interfaceConverter(Blob4); + function isFileLike2(object) { + return object instanceof File4 || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File"; } - module.exports = { FileLike, isFileLike }; + module.exports = { FileLike, isFileLike: isFileLike2 }; } }); @@ -4914,15 +4918,15 @@ var require_file = __commonJS({ var require_formdata = __commonJS({ ""(exports, module) { "use strict"; - var { isBlobLike, iteratorMixin } = require_util2(); + var { isBlobLike: isBlobLike2, iteratorMixin } = require_util2(); var { kState } = require_symbols2(); var { kEnumerableProperty } = require_util(); - var { FileLike, isFileLike } = require_file(); + var { FileLike, isFileLike: isFileLike2 } = require_file(); var { webidl } = require_webidl(); var { File: NativeFile } = __require("node:buffer"); var nodeUtil = __require("node:util"); - var File = globalThis.File ?? NativeFile; - var FormData = class _FormData { + var File4 = globalThis.File ?? NativeFile; + var FormData4 = class _FormData { constructor(form) { webidl.util.markAsUncloneable(this); if (form !== void 0) { @@ -4938,13 +4942,13 @@ var require_formdata = __commonJS({ webidl.brandCheck(this, _FormData); const prefix = "FormData.append"; webidl.argumentLengthCheck(arguments, 2, prefix); - if (arguments.length === 3 && !isBlobLike(value)) { + if (arguments.length === 3 && !isBlobLike2(value)) { throw new TypeError( "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" ); } name = webidl.converters.USVString(name, prefix, "name"); - value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "value", { strict: false }) : webidl.converters.USVString(value, prefix, "value"); + value = isBlobLike2(value) ? webidl.converters.Blob(value, prefix, "value", { strict: false }) : webidl.converters.USVString(value, prefix, "value"); filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "filename") : void 0; const entry = makeEntry(name, value, filename); this[kState].push(entry); @@ -4985,13 +4989,13 @@ var require_formdata = __commonJS({ webidl.brandCheck(this, _FormData); const prefix = "FormData.set"; webidl.argumentLengthCheck(arguments, 2, prefix); - if (arguments.length === 3 && !isBlobLike(value)) { + if (arguments.length === 3 && !isBlobLike2(value)) { throw new TypeError( "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" ); } name = webidl.converters.USVString(name, prefix, "name"); - value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "name", { strict: false }) : webidl.converters.USVString(value, prefix, "name"); + value = isBlobLike2(value) ? webidl.converters.Blob(value, prefix, "name", { strict: false }) : webidl.converters.USVString(value, prefix, "name"); filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "name") : void 0; const entry = makeEntry(name, value, filename); const idx = this[kState].findIndex((entry2) => entry2.name === name); @@ -5024,8 +5028,8 @@ var require_formdata = __commonJS({ return `FormData ${output.slice(output.indexOf("]") + 2)}`; } }; - iteratorMixin("FormData", FormData, kState, "name", "value"); - Object.defineProperties(FormData.prototype, { + iteratorMixin("FormData", FormData4, kState, "name", "value"); + Object.defineProperties(FormData4.prototype, { append: kEnumerableProperty, delete: kEnumerableProperty, get: kEnumerableProperty, @@ -5040,20 +5044,20 @@ var require_formdata = __commonJS({ function makeEntry(name, value, filename) { if (typeof value === "string") { } else { - if (!isFileLike(value)) { - value = value instanceof Blob ? new File([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type }); + if (!isFileLike2(value)) { + value = value instanceof Blob ? new File4([value], "blob", { type: value.type }) : new FileLike(value, "blob", { type: value.type }); } if (filename !== void 0) { const options = { type: value.type, lastModified: value.lastModified }; - value = value instanceof NativeFile ? new File([value], filename, options) : new FileLike(value, filename, options); + value = value instanceof NativeFile ? new File4([value], filename, options) : new FileLike(value, filename, options); } } return { name, value }; } - module.exports = { FormData, makeEntry }; + module.exports = { FormData: FormData4, makeEntry }; } }); @@ -5064,18 +5068,18 @@ var require_formdata_parser = __commonJS({ var { isUSVString, bufferToLowerCasedHeaderName } = require_util(); var { utf8DecodeBytes } = require_util2(); var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url(); - var { isFileLike } = require_file(); + var { isFileLike: isFileLike2 } = require_file(); var { makeEntry } = require_formdata(); var assert = __require("node:assert"); var { File: NodeFile } = __require("node:buffer"); - var File = globalThis.File ?? NodeFile; + var File4 = globalThis.File ?? NodeFile; var formDataNameBuffer = Buffer.from('form-data; name="'); var filenameBuffer = Buffer.from("; filename"); var dd = Buffer.from("--"); var ddcrlf = Buffer.from("--\r\n"); function isAsciiString(chars) { - for (let i = 0; i < chars.length; ++i) { - if ((chars.charCodeAt(i) & ~127) !== 0) { + for (let i2 = 0; i2 < chars.length; ++i2) { + if ((chars.charCodeAt(i2) & ~127) !== 0) { return false; } } @@ -5086,8 +5090,8 @@ var require_formdata_parser = __commonJS({ if (length < 27 || length > 70) { return false; } - for (let i = 0; i < length; ++i) { - const cp = boundary.charCodeAt(i); + for (let i2 = 0; i2 < length; ++i2) { + const cp = boundary.charCodeAt(i2); if (!(cp >= 48 && cp <= 57 || cp >= 65 && cp <= 90 || cp >= 97 && cp <= 122 || cp === 39 || cp === 45 || cp === 95)) { return false; } @@ -5155,12 +5159,12 @@ var require_formdata_parser = __commonJS({ if (!isAsciiString(contentType)) { contentType = ""; } - value = new File([body], filename, { type: contentType }); + value = new File4([body], filename, { type: contentType }); } else { value = utf8DecodeBytes(Buffer.from(body)); } assert(isUSVString(name)); - assert(typeof value === "string" && isUSVString(value) || isFileLike(value)); + assert(typeof value === "string" && isUSVString(value) || isFileLike2(value)); entryList.push(makeEntry(name, value, filename)); } } @@ -5296,8 +5300,8 @@ var require_formdata_parser = __commonJS({ if (buffer.length < start.length) { return false; } - for (let i = 0; i < start.length; i++) { - if (start[i] !== buffer[position.position + i]) { + for (let i2 = 0; i2 < start.length; i2++) { + if (start[i2] !== buffer[position.position + i2]) { return false; } } @@ -5316,8 +5320,8 @@ var require_body = __commonJS({ "use strict"; var util = require_util(); var { - ReadableStreamFrom, - isBlobLike, + ReadableStreamFrom: ReadableStreamFrom2, + isBlobLike: isBlobLike2, isReadableStreamLike, readableStreamClose, createDeferredPromise, @@ -5325,10 +5329,10 @@ var require_body = __commonJS({ extractMimeType, utf8DecodeBytes } = require_util2(); - var { FormData } = require_formdata(); + var { FormData: FormData4 } = require_formdata(); var { kState } = require_symbols2(); var { webidl } = require_webidl(); - var { Blob: Blob2 } = __require("node:buffer"); + var { Blob: Blob4 } = __require("node:buffer"); var assert = __require("node:assert"); var { isErrored, isDisturbed } = __require("node:stream"); var { isArrayBuffer } = __require("node:util/types"); @@ -5336,13 +5340,13 @@ var require_body = __commonJS({ var { multipartFormDataParser } = require_formdata_parser(); var random; try { - const crypto2 = __require("node:crypto"); - random = (max) => crypto2.randomInt(0, max); + const crypto3 = __require("node:crypto"); + random = (max) => crypto3.randomInt(0, max); } catch { random = (max) => Math.floor(Math.random(max)); } var textEncoder = new TextEncoder(); - function noop3() { + function noop5() { } var hasFinalizationRegistry = globalThis.FinalizationRegistry && process.version.indexOf("v18") !== 0; var streamRegistry; @@ -5350,7 +5354,7 @@ var require_body = __commonJS({ streamRegistry = new FinalizationRegistry((weakRef) => { const stream = weakRef.deref(); if (stream && !stream.locked && !isDisturbed(stream) && !isErrored(stream)) { - stream.cancel("Response object has been garbage collected").catch(noop3); + stream.cancel("Response object has been garbage collected").catch(noop5); } }); } @@ -5358,7 +5362,7 @@ var require_body = __commonJS({ let stream = null; if (object instanceof ReadableStream) { stream = object; - } else if (isBlobLike(object)) { + } else if (isBlobLike2(object)) { stream = object.stream(); } else { stream = new ReadableStream({ @@ -5438,7 +5442,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r } }; type = `multipart/form-data; boundary=${boundary}`; - } else if (isBlobLike(object)) { + } else if (isBlobLike2(object)) { source = object; length = object.size; if (object.type) { @@ -5453,7 +5457,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r "Response body object should not be disturbed or locked" ); } - stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); + stream = object instanceof ReadableStream ? object : ReadableStreamFrom2(object); } if (typeof source === "string" || util.isBuffer(source)) { length = Buffer.byteLength(source); @@ -5514,29 +5518,29 @@ Content-Type: ${value.type || "application/octet-stream"}\r function bodyMixinMethods(instance) { const methods = { blob() { - return consumeBody(this, (bytes) => { + return consumeBody2(this, (bytes) => { let mimeType = bodyMimeType(this); if (mimeType === null) { mimeType = ""; } else if (mimeType) { mimeType = serializeAMimeType(mimeType); } - return new Blob2([bytes], { type: mimeType }); + return new Blob4([bytes], { type: mimeType }); }, instance); }, arrayBuffer() { - return consumeBody(this, (bytes) => { + return consumeBody2(this, (bytes) => { return new Uint8Array(bytes).buffer; }, instance); }, text() { - return consumeBody(this, utf8DecodeBytes, instance); + return consumeBody2(this, utf8DecodeBytes, instance); }, json() { - return consumeBody(this, parseJSONFromBytes, instance); + return consumeBody2(this, parseJSONFromBytes, instance); }, formData() { - return consumeBody(this, (value) => { + return consumeBody2(this, (value) => { const mimeType = bodyMimeType(this); if (mimeType !== null) { switch (mimeType.essence) { @@ -5545,13 +5549,13 @@ Content-Type: ${value.type || "application/octet-stream"}\r if (parsed === "failure") { throw new TypeError("Failed to parse body as FormData."); } - const fd = new FormData(); + const fd = new FormData4(); fd[kState] = parsed; return fd; } case "application/x-www-form-urlencoded": { const entries = new URLSearchParams(value.toString()); - const fd = new FormData(); + const fd = new FormData4(); for (const [name, value2] of entries) { fd.append(name, value2); } @@ -5565,7 +5569,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r }, instance); }, bytes() { - return consumeBody(this, (bytes) => { + return consumeBody2(this, (bytes) => { return new Uint8Array(bytes); }, instance); } @@ -5575,7 +5579,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r function mixinBody(prototype) { Object.assign(prototype.prototype, bodyMixinMethods(prototype)); } - async function consumeBody(object, convertBytesToJSValue, instance) { + async function consumeBody2(object, convertBytesToJSValue, instance) { webidl.brandCheck(object, instance); if (bodyUnusable(object)) { throw new TypeError("Body is unusable: Body has already been read"); @@ -5586,8 +5590,8 @@ Content-Type: ${value.type || "application/octet-stream"}\r const successSteps = (data) => { try { promise.resolve(convertBytesToJSValue(data)); - } catch (e) { - errorSteps(e); + } catch (e2) { + errorSteps(e2); } }; if (object[kState].body == null) { @@ -5688,7 +5692,7 @@ var require_client_h1 = __commonJS({ let mod; try { mod = await WebAssembly.compile(require_llhttp_simd_wasm()); - } catch (e) { + } catch (e2) { mod = await WebAssembly.compile(llhttpWasmData || require_llhttp_wasm()); } return await WebAssembly.instantiate(mod, { @@ -6169,8 +6173,8 @@ var require_client_h1 = __commonJS({ if (client2.destroyed) { assert(client2[kPending] === 0); const requests = client2[kQueue].splice(client2[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request2 = requests[i]; + for (let i2 = 0; i2 < requests.length; i2++) { + const request2 = requests[i2]; util.errorRequest(client2, request2, err); } } else if (client2[kRunning] > 0 && err.code !== "UND_ERR_INFO") { @@ -6254,7 +6258,7 @@ var require_client_h1 = __commonJS({ return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT"; } function writeH1(client, request2) { - const { method, path: path6, host, upgrade, blocking, reset } = request2; + const { method, path: path7, host, upgrade, blocking, reset } = request2; let { body, headers, contentLength } = request2; const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH"; if (util.isFormDataLike(body)) { @@ -6320,7 +6324,7 @@ var require_client_h1 = __commonJS({ if (blocking) { socket[kBlocking] = true; } - let header = `${method} ${path6} HTTP/1.1\r + let header = `${method} ${path7} HTTP/1.1\r `; if (typeof host === "string") { header += `host: ${host}\r @@ -6342,8 +6346,8 @@ upgrade: ${upgrade}\r const key = headers[n + 0]; const val = headers[n + 1]; if (Array.isArray(val)) { - for (let i = 0; i < val.length; i++) { - header += `${key}: ${val[i]}\r + for (let i2 = 0; i2 < val.length; i2++) { + header += `${key}: ${val[i2]}\r `; } } else { @@ -6376,10 +6380,10 @@ upgrade: ${upgrade}\r } function writeStream(abort, body, client, request2, socket, contentLength, header, expectsPayload) { assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); - let finished = false; + let finished2 = false; const writer = new AsyncWriter({ abort, socket, request: request2, contentLength, client, expectsPayload, header }); const onData = function(chunk) { - if (finished) { + if (finished2) { return; } try { @@ -6391,7 +6395,7 @@ upgrade: ${upgrade}\r } }; const onDrain = function() { - if (finished) { + if (finished2) { return; } if (body.resume) { @@ -6402,16 +6406,16 @@ upgrade: ${upgrade}\r queueMicrotask(() => { body.removeListener("error", onFinished); }); - if (!finished) { + if (!finished2) { const err = new RequestAbortedError(); queueMicrotask(() => onFinished(err)); } }; const onFinished = function(err) { - if (finished) { + if (finished2) { return; } - finished = true; + finished2 = true; assert(socket.destroyed || socket[kWriting] && client[kRunning] <= 1); socket.off("drain", onDrain).off("error", onFinished); body.removeListener("data", onData).removeListener("end", onFinished).removeListener("close", onClose); @@ -6649,7 +6653,7 @@ var require_client_h2 = __commonJS({ ""(exports, module) { "use strict"; var assert = __require("node:assert"); - var { pipeline } = __require("node:stream"); + var { pipeline: pipeline2 } = __require("node:stream"); var util = require_util(); var { RequestContentLengthMismatchError, @@ -6679,11 +6683,11 @@ var require_client_h2 = __commonJS({ var kOpenStreams = Symbol("open streams"); var extractBody; var h2ExperimentalWarned = false; - var http2; + var http22; try { - http2 = __require("node:http2"); + http22 = __require("node:http2"); } catch { - http2 = { constants: {} }; + http22 = { constants: {} }; } var { constants: { @@ -6695,7 +6699,7 @@ var require_client_h2 = __commonJS({ HTTP2_HEADER_EXPECT, HTTP2_HEADER_STATUS } - } = http2; + } = http22; function parseH2Headers(headers) { const result = []; for (const [name, value] of Object.entries(headers)) { @@ -6717,7 +6721,7 @@ var require_client_h2 = __commonJS({ code: "UNDICI-H2" }); } - const session = http2.connect(client[kUrl], { + const session = http22.connect(client[kUrl], { createConnection: () => socket, peerMaxConcurrentStreams: client[kMaxConcurrentStreams] }); @@ -6736,8 +6740,8 @@ var require_client_h2 = __commonJS({ if (client2.destroyed) { assert(client2[kPending] === 0); const requests = client2[kQueue].splice(client2[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request2 = requests[i]; + for (let i2 = 0; i2 < requests.length; i2++) { + const request2 = requests[i2]; util.errorRequest(client2, request2, err); } } @@ -6846,7 +6850,7 @@ var require_client_h2 = __commonJS({ } function writeH2(client, request2) { const session = client[kHTTP2Session]; - const { method, path: path6, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2; + const { method, path: path7, host, upgrade, expectContinue, signal, headers: reqHeaders } = request2; let { body } = request2; if (upgrade) { util.errorRequest(client, request2, new Error("Upgrade not supported for H2")); @@ -6857,11 +6861,11 @@ var require_client_h2 = __commonJS({ const key = reqHeaders[n + 0]; const val = reqHeaders[n + 1]; if (Array.isArray(val)) { - for (let i = 0; i < val.length; i++) { + for (let i2 = 0; i2 < val.length; i2++) { if (headers[key]) { - headers[key] += `,${val[i]}`; + headers[key] += `,${val[i2]}`; } else { - headers[key] = val[i]; + headers[key] = val[i2]; } } } else { @@ -6914,7 +6918,7 @@ var require_client_h2 = __commonJS({ }); return true; } - headers[HTTP2_HEADER_PATH] = path6; + headers[HTTP2_HEADER_PATH] = path7; headers[HTTP2_HEADER_SCHEME] = "https"; const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; if (body && typeof body.read === "function") { @@ -7097,7 +7101,7 @@ var require_client_h2 = __commonJS({ } function writeStream(abort, socket, expectsPayload, h2stream, body, client, request2, contentLength) { assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); - const pipe = pipeline( + const pipe = pipeline2( body, h2stream, (err) => { @@ -7267,9 +7271,9 @@ var require_redirect_handler = __commonJS({ return this.handler.onHeaders(statusCode, headers, resume, statusText); } const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))); - const path6 = search ? `${pathname}${search}` : pathname; + const path7 = search ? `${pathname}${search}` : pathname; this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin); - this.opts.path = path6; + this.opts.path = path7; this.opts.origin = origin; this.opts.maxRedirections = 0; this.opts.query = null; @@ -7303,9 +7307,9 @@ var require_redirect_handler = __commonJS({ if (redirectableStatusCodes.indexOf(statusCode) === -1) { return null; } - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].length === 8 && util.headerNameToString(headers[i]) === "location") { - return headers[i + 1]; + for (let i2 = 0; i2 < headers.length; i2 += 2) { + if (headers[i2].length === 8 && util.headerNameToString(headers[i2]) === "location") { + return headers[i2 + 1]; } } } @@ -7325,9 +7329,9 @@ var require_redirect_handler = __commonJS({ function cleanRequestHeaders(headers, removeContent, unknownOrigin) { const ret = []; if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { - ret.push(headers[i], headers[i + 1]); + for (let i2 = 0; i2 < headers.length; i2 += 2) { + if (!shouldRemoveHeader(headers[i2], removeContent, unknownOrigin)) { + ret.push(headers[i2], headers[i2 + 1]); } } } else if (headers && typeof headers === "object") { @@ -7373,10 +7377,10 @@ var require_client = __commonJS({ "use strict"; var assert = __require("node:assert"); var net = __require("node:net"); - var http2 = __require("node:http"); + var http4 = __require("node:http"); var util = require_util(); var { channels } = require_diagnostics(); - var Request = require_request(); + var Request2 = require_request(); var DispatcherBase = require_dispatcher_base(); var { InvalidArgumentError, @@ -7430,7 +7434,7 @@ var require_client = __commonJS({ var connectH2 = require_client_h2(); var deprecatedInterceptorWarned = false; var kClosedResolve = Symbol("kClosedResolve"); - var noop3 = () => { + var noop5 = () => { }; function getPipelining(client) { return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1; @@ -7560,7 +7564,7 @@ var require_client = __commonJS({ this[kUrl] = util.parseOrigin(url); this[kConnector] = connect2; this[kPipelining] = pipelining != null ? pipelining : 1; - this[kMaxHeadersSize] = maxHeaderSize || http2.maxHeaderSize; + this[kMaxHeadersSize] = maxHeaderSize || http4.maxHeaderSize; this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout; this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold; @@ -7617,7 +7621,7 @@ var require_client = __commonJS({ } [kDispatch](opts, handler2) { const origin = opts.origin || this[kUrl].origin; - const request2 = new Request(origin, opts, handler2); + const request2 = new Request2(origin, opts, handler2); this[kQueue].push(request2); if (this[kResuming]) { } else if (util.bodyLength(request2.body) == null && util.isIterable(request2.body)) { @@ -7643,8 +7647,8 @@ var require_client = __commonJS({ async [kDestroy](err) { return new Promise((resolve2) => { const requests = this[kQueue].splice(this[kPendingIdx]); - for (let i = 0; i < requests.length; i++) { - const request2 = requests[i]; + for (let i2 = 0; i2 < requests.length; i2++) { + const request2 = requests[i2]; util.errorRequest(this, request2, err); } const callback = () => { @@ -7669,8 +7673,8 @@ var require_client = __commonJS({ if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { assert(client[kPendingIdx] === client[kRunningIdx]); const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request2 = requests[i]; + for (let i2 = 0; i2 < requests.length; i2++) { + const request2 = requests[i2]; util.errorRequest(client, request2, err); } assert(client[kSize] === 0); @@ -7720,14 +7724,14 @@ var require_client = __commonJS({ }); }); if (client.destroyed) { - util.destroy(socket.on("error", noop3), new ClientDestroyedError()); + util.destroy(socket.on("error", noop5), new ClientDestroyedError()); return; } assert(socket); try { client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket); } catch (err) { - socket.destroy().on("error", noop3); + socket.destroy().on("error", noop5); throw err; } client[kConnecting] = false; @@ -8233,9 +8237,9 @@ var require_balanced_pool = __commonJS({ if (a === 0) return b; while (b !== 0) { - const t = b; + const t2 = b; b = a % b; - a = t; + a = t2; } return a; } @@ -8292,8 +8296,8 @@ var require_balanced_pool = __commonJS({ } _updateBalancedPoolStats() { let result = 0; - for (let i = 0; i < this[kClients].length; i++) { - result = getGreatestCommonDivisor(this[kClients][i][kWeight], result); + for (let i2 = 0; i2 < this[kClients].length; i2++) { + result = getGreatestCommonDivisor(this[kClients][i2][kWeight], result); } this[kGreatestCommonDivisor] = result; } @@ -8469,7 +8473,7 @@ var require_proxy_agent = __commonJS({ function defaultFactory(origin, opts) { return new Pool(origin, opts); } - var noop3 = () => { + var noop5 = () => { }; function defaultAgentFactory(origin, opts) { if (opts.connections === 1) { @@ -8505,10 +8509,10 @@ var require_proxy_agent = __commonJS({ }; const { origin, - path: path6 = "/", + path: path7 = "/", headers = {} } = opts; - opts.path = origin + path6; + opts.path = origin + path7; if (!("host" in headers) && !("Host" in headers)) { const { host } = new URL2(origin); headers.host = host; @@ -8587,7 +8591,7 @@ var require_proxy_agent = __commonJS({ servername: this[kProxyTls]?.servername || proxyHostname }); if (statusCode !== 200) { - socket.on("error", noop3).destroy(); + socket.on("error", noop5).destroy(); callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)); } if (opts2.protocol !== "https:") { @@ -8612,7 +8616,7 @@ var require_proxy_agent = __commonJS({ }); } dispatch(opts, handler2) { - const headers = buildHeaders(opts.headers); + const headers = buildHeaders2(opts.headers); throwIfProxyAuthIsSent(headers); if (headers && !("host" in headers) && !("Host" in headers)) { const { host } = new URL2(opts.origin); @@ -8648,11 +8652,11 @@ var require_proxy_agent = __commonJS({ await this[kClient].destroy(); } }; - function buildHeaders(headers) { + function buildHeaders2(headers) { if (Array.isArray(headers)) { const headersPair = {}; - for (let i = 0; i < headers.length; i += 2) { - headersPair[headers[i]] = headers[i + 1]; + for (let i2 = 0; i2 < headers.length; i2 += 2) { + headersPair[headers[i2]] = headers[i2 + 1]; } return headersPair; } @@ -8755,8 +8759,8 @@ var require_env_http_proxy_agent = __commonJS({ if (this.#noProxyValue === "*") { return false; } - for (let i = 0; i < this.#noProxyEntries.length; i++) { - const entry = this.#noProxyEntries[i]; + for (let i2 = 0; i2 < this.#noProxyEntries.length; i2++) { + const entry = this.#noProxyEntries[i2]; if (entry.port && entry.port !== port) { continue; } @@ -8776,8 +8780,8 @@ var require_env_http_proxy_agent = __commonJS({ const noProxyValue = this.#opts.noProxy ?? this.#noProxyEnv; const noProxySplit = noProxyValue.split(/[,\s]/); const noProxyEntries = []; - for (let i = 0; i < noProxySplit.length; i++) { - const entry = noProxySplit[i]; + for (let i2 = 0; i2 < noProxySplit.length; i2++) { + const entry = noProxySplit[i2]; if (!entry) { continue; } @@ -9143,19 +9147,19 @@ var require_readable = __commonJS({ ""(exports, module) { "use strict"; var assert = __require("node:assert"); - var { Readable } = __require("node:stream"); - var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors(); + var { Readable: Readable2 } = __require("node:stream"); + var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError: AbortError3 } = require_errors(); var util = require_util(); - var { ReadableStreamFrom } = require_util(); + var { ReadableStreamFrom: ReadableStreamFrom2 } = require_util(); var kConsume = Symbol("kConsume"); var kReading = Symbol("kReading"); var kBody = Symbol("kBody"); var kAbort = Symbol("kAbort"); var kContentType = Symbol("kContentType"); var kContentLength = Symbol("kContentLength"); - var noop3 = () => { + var noop5 = () => { }; - var BodyReadable = class extends Readable { + var BodyReadable = class extends Readable2 { constructor({ resume, abort, @@ -9252,7 +9256,7 @@ var require_readable = __commonJS({ // https://fetch.spec.whatwg.org/#dom-body-body get body() { if (!this[kBody]) { - this[kBody] = ReadableStreamFrom(this); + this[kBody] = ReadableStreamFrom2(this); if (this[kConsume]) { this[kBody].getReader(); assert(this[kBody].locked); @@ -9272,20 +9276,20 @@ var require_readable = __commonJS({ } return await new Promise((resolve2, reject) => { if (this[kContentLength] > limit) { - this.destroy(new AbortError()); + this.destroy(new AbortError3()); } const onAbort = () => { - this.destroy(signal.reason ?? new AbortError()); + this.destroy(signal.reason ?? new AbortError3()); }; signal?.addEventListener("abort", onAbort); this.on("close", function() { signal?.removeEventListener("abort", onAbort); if (signal?.aborted) { - reject(signal.reason ?? new AbortError()); + reject(signal.reason ?? new AbortError3()); } else { resolve2(null); } - }).on("error", noop3).on("data", function(chunk) { + }).on("error", noop5).on("data", function(chunk) { limit -= chunk.length; if (limit <= 0) { this.destroy(); @@ -9294,11 +9298,11 @@ var require_readable = __commonJS({ }); } }; - function isLocked(self) { - return self[kBody] && self[kBody].locked === true || self[kConsume]; + function isLocked(self2) { + return self2[kBody] && self2[kBody].locked === true || self2[kConsume]; } - function isUnusable(self) { - return util.isDisturbed(self) || isLocked(self); + function isUnusable(self2) { + return util.isDisturbed(self2) || isLocked(self2); } async function consume(stream, type) { assert(!stream[kConsume]); @@ -9381,8 +9385,8 @@ var require_readable = __commonJS({ } const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer); let offset = 0; - for (let i = 0; i < chunks.length; ++i) { - const chunk = chunks[i]; + for (let i2 = 0; i2 < chunks.length; ++i2) { + const chunk = chunks[i2]; buffer.set(chunk, offset); offset += chunk.length; } @@ -9497,7 +9501,7 @@ var require_api_request = __commonJS({ ""(exports, module) { "use strict"; var assert = __require("node:assert"); - var { Readable } = require_readable(); + var { Readable: Readable2 } = require_readable(); var { InvalidArgumentError, RequestAbortedError } = require_errors(); var util = require_util(); var { getResolveErrorBodyCallback } = require_util3(); @@ -9592,7 +9596,7 @@ var require_api_request = __commonJS({ const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; const contentType = parsedHeaders["content-type"]; const contentLength = parsedHeaders["content-length"]; - const res = new Readable({ + const res = new Readable2({ resume, abort, contentType, @@ -9685,42 +9689,42 @@ var require_abort_signal = __commonJS({ var { RequestAbortedError } = require_errors(); var kListener = Symbol("kListener"); var kSignal = Symbol("kSignal"); - function abort(self) { - if (self.abort) { - self.abort(self[kSignal]?.reason); + function abort(self2) { + if (self2.abort) { + self2.abort(self2[kSignal]?.reason); } else { - self.reason = self[kSignal]?.reason ?? new RequestAbortedError(); + self2.reason = self2[kSignal]?.reason ?? new RequestAbortedError(); } - removeSignal(self); + removeSignal(self2); } - function addSignal(self, signal) { - self.reason = null; - self[kSignal] = null; - self[kListener] = null; + function addSignal(self2, signal) { + self2.reason = null; + self2[kSignal] = null; + self2[kListener] = null; if (!signal) { return; } if (signal.aborted) { - abort(self); + abort(self2); return; } - self[kSignal] = signal; - self[kListener] = () => { - abort(self); + self2[kSignal] = signal; + self2[kListener] = () => { + abort(self2); }; - addAbortListener(self[kSignal], self[kListener]); + addAbortListener(self2[kSignal], self2[kListener]); } - function removeSignal(self) { - if (!self[kSignal]) { + function removeSignal(self2) { + if (!self2[kSignal]) { return; } - if ("removeEventListener" in self[kSignal]) { - self[kSignal].removeEventListener("abort", self[kListener]); + if ("removeEventListener" in self2[kSignal]) { + self2[kSignal].removeEventListener("abort", self2[kListener]); } else { - self[kSignal].removeListener("abort", self[kListener]); + self2[kSignal].removeListener("abort", self2[kListener]); } - self[kSignal] = null; - self[kListener] = null; + self2[kSignal] = null; + self2[kListener] = null; } module.exports = { addSignal, @@ -9734,7 +9738,7 @@ var require_api_stream = __commonJS({ ""(exports, module) { "use strict"; var assert = __require("node:assert"); - var { finished, PassThrough } = __require("node:stream"); + var { finished: finished2, PassThrough: PassThrough3 } = __require("node:stream"); var { InvalidArgumentError, InvalidReturnValueError } = require_errors(); var util = require_util(); var { getResolveErrorBodyCallback } = require_util3(); @@ -9810,7 +9814,7 @@ var require_api_stream = __commonJS({ if (this.throwOnError && statusCode >= 400) { const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; const contentType = parsedHeaders["content-type"]; - res = new PassThrough(); + res = new PassThrough3(); this.callback = null; this.runInAsyncScope( getResolveErrorBodyCallback, @@ -9830,7 +9834,7 @@ var require_api_stream = __commonJS({ if (!res || typeof res.write !== "function" || typeof res.end !== "function" || typeof res.on !== "function") { throw new InvalidReturnValueError("expected Writable"); } - finished(res, { readable: false }, (err) => { + finished2(res, { readable: false }, (err) => { const { callback: callback2, res: res2, opaque: opaque2, trailers, abort } = this; this.res = null; if (err || !res2.readable) { @@ -9907,9 +9911,9 @@ var require_api_pipeline = __commonJS({ ""(exports, module) { "use strict"; var { - Readable, + Readable: Readable2, Duplex, - PassThrough + PassThrough: PassThrough3 } = __require("node:stream"); var { InvalidArgumentError, @@ -9921,7 +9925,7 @@ var require_api_pipeline = __commonJS({ var { addSignal, removeSignal } = require_abort_signal(); var assert = __require("node:assert"); var kResume = Symbol("resume"); - var PipelineRequest = class extends Readable { + var PipelineRequest = class extends Readable2 { constructor() { super({ autoDestroy: true }); this[kResume] = null; @@ -9938,7 +9942,7 @@ var require_api_pipeline = __commonJS({ callback(err); } }; - var PipelineResponse = class extends Readable { + var PipelineResponse = class extends Readable2 { constructor(resume) { super({ autoDestroy: true }); this[kResume] = resume; @@ -10089,16 +10093,16 @@ var require_api_pipeline = __commonJS({ util.destroy(ret, err); } }; - function pipeline(opts, handler2) { + function pipeline2(opts, handler2) { try { const pipelineHandler = new PipelineHandler(opts, handler2); this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); return pipelineHandler.ret; } catch (err) { - return new PassThrough().destroy(err); + return new PassThrough3().destroy(err); } } - module.exports = pipeline; + module.exports = pipeline2; } }); @@ -10389,9 +10393,9 @@ var require_mock_utils = __commonJS({ } function getHeaderByName(headers, key) { if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { - return headers[i + 1]; + for (let i2 = 0; i2 < headers.length; i2 += 2) { + if (headers[i2].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i2 + 1]; } } return void 0; @@ -10402,10 +10406,10 @@ var require_mock_utils = __commonJS({ } } function buildHeadersFromArray(headers) { - const clone = headers.slice(); + const clone2 = headers.slice(); const entries = []; - for (let index = 0; index < clone.length; index += 2) { - entries.push([clone[index], clone[index + 1]]); + for (let index = 0; index < clone2.length; index += 2) { + entries.push([clone2[index], clone2[index + 1]]); } return Object.fromEntries(entries); } @@ -10430,20 +10434,20 @@ var require_mock_utils = __commonJS({ } return true; } - function safeUrl(path6) { - if (typeof path6 !== "string") { - return path6; + function safeUrl(path7) { + if (typeof path7 !== "string") { + return path7; } - const pathSegments = path6.split("?"); + const pathSegments = path7.split("?"); if (pathSegments.length !== 2) { - return path6; + return path7; } const qp = new URLSearchParams(pathSegments.pop()); qp.sort(); return [...pathSegments, qp.toString()].join("?"); } - function matchKey(mockDispatch2, { path: path6, method, body, headers }) { - const pathMatch = matchValue(mockDispatch2.path, path6); + function matchKey(mockDispatch2, { path: path7, method, body, headers }) { + const pathMatch = matchValue(mockDispatch2.path, path7); const methodMatch = matchValue(mockDispatch2.method, method); const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true; const headersMatch = matchHeaders(mockDispatch2, headers); @@ -10465,7 +10469,7 @@ var require_mock_utils = __commonJS({ function getMockDispatch(mockDispatches, key) { const basePath = key.query ? buildURL(key.path, key.query) : key.path; const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath; - let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path6 }) => matchValue(safeUrl(path6), resolvedPath)); + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path7 }) => matchValue(safeUrl(path7), resolvedPath)); if (matchedMockDispatches.length === 0) { throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); } @@ -10503,9 +10507,9 @@ var require_mock_utils = __commonJS({ } } function buildKey(opts) { - const { path: path6, method, body, headers, query } = opts; + const { path: path7, method, body, headers, query } = opts; return { - path: path6, + path: path7, method, body, headers, @@ -10515,8 +10519,8 @@ var require_mock_utils = __commonJS({ function generateKeyValues(data) { const keys = Object.keys(data); const result = []; - for (let i = 0; i < keys.length; ++i) { - const key = keys[i]; + for (let i2 = 0; i2 < keys.length; ++i2) { + const key = keys[i2]; const value = data[key]; const name = Buffer.from(`${key}`); if (Array.isArray(value)) { @@ -10811,7 +10815,7 @@ var require_mock_interceptor = __commonJS({ var require_mock_client = __commonJS({ ""(exports, module) { "use strict"; - var { promisify } = __require("node:util"); + var { promisify: promisify2 } = __require("node:util"); var Client = require_client(); var { buildMockDispatch } = require_mock_utils(); var { @@ -10851,7 +10855,7 @@ var require_mock_client = __commonJS({ return new MockInterceptor(opts, this[kDispatches]); } async [kClose]() { - await promisify(this[kOriginalClose])(); + await promisify2(this[kOriginalClose])(); this[kConnected] = 0; this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); } @@ -10864,7 +10868,7 @@ var require_mock_client = __commonJS({ var require_mock_pool = __commonJS({ ""(exports, module) { "use strict"; - var { promisify } = __require("node:util"); + var { promisify: promisify2 } = __require("node:util"); var Pool = require_pool(); var { buildMockDispatch } = require_mock_utils(); var { @@ -10904,7 +10908,7 @@ var require_mock_pool = __commonJS({ return new MockInterceptor(opts, this[kDispatches]); } async [kClose]() { - await promisify(this[kOriginalClose])(); + await promisify2(this[kOriginalClose])(); this[kConnected] = 0; this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); } @@ -10968,10 +10972,10 @@ var require_pending_interceptors_formatter = __commonJS({ } format(pendingInterceptors) { const withPrettyHeaders = pendingInterceptors.map( - ({ method, path: path6, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + ({ method, path: path7, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ Method: method, Origin: origin, - Path: path6, + Path: path7, "Status code": statusCode, Persistent: persist ? PERSISTENT : NOT_PERSISTENT, Invocations: timesInvoked, @@ -11338,7 +11342,7 @@ var require_dump = __commonJS({ var require_dns = __commonJS({ ""(exports, module) { "use strict"; - var { isIP } = __require("node:net"); + var { isIP: isIP2 } = __require("node:net"); var { lookup } = __require("node:dns"); var DecoratorHandler = require_decorator_handler(); var { InvalidArgumentError, InformationalError } = require_errors(); @@ -11592,7 +11596,7 @@ var require_dns = __commonJS({ return (dispatch) => { return function dnsInterceptor(origDispatchOpts, handler2) { const origin = origDispatchOpts.origin.constructor === URL ? origDispatchOpts.origin : new URL(origDispatchOpts.origin); - if (isIP(origin.hostname) !== 0) { + if (isIP2(origin.hostname) !== 0) { return dispatch(origDispatchOpts, handler2); } instance.runLookup(origin, origDispatchOpts, (err, newOrigin) => { @@ -11642,18 +11646,18 @@ var require_headers = __commonJS({ return code === 10 || code === 13 || code === 9 || code === 32; } function headerValueNormalize(potentialValue) { - let i = 0; + let i2 = 0; let j = potentialValue.length; - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) + while (j > i2 && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j; - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) - ++i; - return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j); + while (j > i2 && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i2))) + ++i2; + return i2 === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i2, j); } function fill(headers, object) { if (Array.isArray(object)) { - for (let i = 0; i < object.length; ++i) { - const header = object[i]; + for (let i2 = 0; i2 < object.length; ++i2) { + const header = object[i2]; if (header.length !== 2) { throw webidl.errors.exception({ header: "Headers constructor", @@ -11664,8 +11668,8 @@ var require_headers = __commonJS({ } } else if (typeof object === "object" && object !== null) { const keys = Object.keys(object); - for (let i = 0; i < keys.length; ++i) { - appendHeader(headers, keys[i], object[keys[i]]); + for (let i2 = 0; i2 < keys.length; ++i2) { + appendHeader(headers, keys[i2], object[keys[i2]]); } } else { throw webidl.errors.conversionFailed({ @@ -11828,26 +11832,26 @@ var require_headers = __commonJS({ const firstValue = iterator2.next().value; array[0] = [firstValue[0], firstValue[1].value]; assert(firstValue[1].value !== null); - for (let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value; i < size; ++i) { + for (let i2 = 1, j = 0, right = 0, left = 0, pivot = 0, x2, value; i2 < size; ++i2) { value = iterator2.next().value; - x = array[i] = [value[0], value[1].value]; - assert(x[1] !== null); + x2 = array[i2] = [value[0], value[1].value]; + assert(x2[1] !== null); left = 0; - right = i; + right = i2; while (left < right) { pivot = left + (right - left >> 1); - if (array[pivot][0] <= x[0]) { + if (array[pivot][0] <= x2[0]) { left = pivot + 1; } else { right = pivot; } } - if (i !== pivot) { - j = i; + if (i2 !== pivot) { + j = i2; while (j > left) { array[j] = array[--j]; } - array[left] = x; + array[left] = x2; } } if (!iterator2.next().done) { @@ -11855,16 +11859,16 @@ var require_headers = __commonJS({ } return array; } else { - let i = 0; + let i2 = 0; for (const { 0: name, 1: { value } } of this[kHeadersMap]) { - array[i++] = [name, value]; + array[i2++] = [name, value]; assert(value !== null); } return array.sort(compareHeaderName); } } }; - var Headers3 = class _Headers { + var Headers4 = class _Headers { #guard; #headersList; constructor(init = void 0) { @@ -11985,8 +11989,8 @@ var require_headers = __commonJS({ if (cookies === null || cookies.length === 1) { return this.#headersList[kHeadersSortedMap] = names; } - for (let i = 0; i < names.length; ++i) { - const { 0: name, 1: value } = names[i]; + for (let i2 = 0; i2 < names.length; ++i2) { + const { 0: name, 1: value } = names[i2]; if (name === "set-cookie") { for (let j = 0; j < cookies.length; ++j) { headers.push([name, cookies[j]]); @@ -12014,13 +12018,13 @@ var require_headers = __commonJS({ o.#headersList = list; } }; - var { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers3; - Reflect.deleteProperty(Headers3, "getHeadersGuard"); - Reflect.deleteProperty(Headers3, "setHeadersGuard"); - Reflect.deleteProperty(Headers3, "getHeadersList"); - Reflect.deleteProperty(Headers3, "setHeadersList"); - iteratorMixin("Headers", Headers3, kHeadersSortedMap, 0, 1); - Object.defineProperties(Headers3.prototype, { + var { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers4; + Reflect.deleteProperty(Headers4, "getHeadersGuard"); + Reflect.deleteProperty(Headers4, "setHeadersGuard"); + Reflect.deleteProperty(Headers4, "getHeadersList"); + Reflect.deleteProperty(Headers4, "setHeadersList"); + iteratorMixin("Headers", Headers4, kHeadersSortedMap, 0, 1); + Object.defineProperties(Headers4.prototype, { append: kEnumerableProperty, delete: kEnumerableProperty, get: kEnumerableProperty, @@ -12038,7 +12042,7 @@ var require_headers = __commonJS({ webidl.converters.HeadersInit = function(V, prefix, argument) { if (webidl.util.Type(V) === "Object") { const iterator2 = Reflect.get(V, Symbol.iterator); - if (!util.types.isProxy(V) && iterator2 === Headers3.prototype.entries) { + if (!util.types.isProxy(V) && iterator2 === Headers4.prototype.entries) { try { return getHeadersList(V).entriesList; } catch { @@ -12059,7 +12063,7 @@ var require_headers = __commonJS({ fill, // for test. compareHeaderName, - Headers: Headers3, + Headers: Headers4, HeadersList, getHeadersGuard, setHeadersGuard, @@ -12073,7 +12077,7 @@ var require_headers = __commonJS({ var require_response = __commonJS({ ""(exports, module) { "use strict"; - var { Headers: Headers3, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers(); + var { Headers: Headers4, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers(); var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body(); var util = require_util(); var nodeUtil = __require("node:util"); @@ -12082,7 +12086,7 @@ var require_response = __commonJS({ isValidReasonPhrase, isCancelled, isAborted, - isBlobLike, + isBlobLike: isBlobLike2, serializeJavascriptValueToJSONString, isErrorLike, isomorphicEncode, @@ -12094,13 +12098,13 @@ var require_response = __commonJS({ } = require_constants3(); var { kState, kHeaders } = require_symbols2(); var { webidl } = require_webidl(); - var { FormData } = require_formdata(); + var { FormData: FormData4 } = require_formdata(); var { URLSerializer } = require_data_url(); var { kConstruct } = require_symbols(); var assert = __require("node:assert"); - var { types } = __require("node:util"); + var { types: types3 } = __require("node:util"); var textEncoder = new TextEncoder("utf-8"); - var Response = class _Response { + var Response3 = class _Response { // Creates network error Response. static error() { const responseObject = fromInnerResponse(makeNetworkError(), "immutable"); @@ -12151,7 +12155,7 @@ var require_response = __commonJS({ } init = webidl.converters.ResponseInit(init); this[kState] = makeResponse({}); - this[kHeaders] = new Headers3(kConstruct); + this[kHeaders] = new Headers4(kConstruct); setHeadersGuard(this[kHeaders], "response"); setHeadersList(this[kHeaders], this[kState].headersList); let bodyWithType = null; @@ -12243,8 +12247,8 @@ var require_response = __commonJS({ return `Response ${nodeUtil.formatWithOptions(options, properties)}`; } }; - mixinBody(Response); - Object.defineProperties(Response.prototype, { + mixinBody(Response3); + Object.defineProperties(Response3.prototype, { type: kEnumerableProperty, url: kEnumerableProperty, status: kEnumerableProperty, @@ -12260,7 +12264,7 @@ var require_response = __commonJS({ configurable: true } }); - Object.defineProperties(Response, { + Object.defineProperties(Response3, { json: kEnumerableProperty, redirect: kEnumerableProperty, error: kEnumerableProperty @@ -12393,9 +12397,9 @@ var require_response = __commonJS({ } } function fromInnerResponse(innerResponse, guard) { - const response = new Response(kConstruct); + const response = new Response3(kConstruct); response[kState] = innerResponse; - response[kHeaders] = new Headers3(kConstruct); + response[kHeaders] = new Headers4(kConstruct); setHeadersList(response[kHeaders], innerResponse.headersList); setHeadersGuard(response[kHeaders], guard); if (hasFinalizationRegistry && innerResponse.body?.stream) { @@ -12407,7 +12411,7 @@ var require_response = __commonJS({ ReadableStream ); webidl.converters.FormData = webidl.interfaceConverter( - FormData + FormData4 ); webidl.converters.URLSearchParams = webidl.interfaceConverter( URLSearchParams @@ -12416,10 +12420,10 @@ var require_response = __commonJS({ if (typeof V === "string") { return webidl.converters.USVString(V, prefix, name); } - if (isBlobLike(V)) { + if (isBlobLike2(V)) { return webidl.converters.Blob(V, prefix, name, { strict: false }); } - if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) { + if (ArrayBuffer.isView(V) || types3.isArrayBuffer(V)) { return webidl.converters.BufferSource(V, prefix, name); } if (util.isFormDataLike(V)) { @@ -12461,7 +12465,7 @@ var require_response = __commonJS({ makeResponse, makeAppropriateNetworkError, filterResponse, - Response, + Response: Response3, cloneResponse, fromInnerResponse }; @@ -12515,7 +12519,7 @@ var require_request2 = __commonJS({ ""(exports, module) { "use strict"; var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body(); - var { Headers: Headers3, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers(); + var { Headers: Headers4, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers(); var { FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref()(); var util = require_util(); var nodeUtil = __require("node:util"); @@ -12571,7 +12575,7 @@ var require_request2 = __commonJS({ } } var patchMethodWarning = false; - var Request = class _Request { + var Request2 = class _Request { // https://fetch.spec.whatwg.org/#dom-request constructor(input, init = {}) { webidl.util.markAsUncloneable(this); @@ -12599,7 +12603,7 @@ var require_request2 = __commonJS({ "Request cannot be constructed from a URL that includes credentials: " + input ); } - request2 = makeRequest2({ urlList: [parsedURL] }); + request2 = makeRequest({ urlList: [parsedURL] }); fallbackMode = "cors"; } else { this[kDispatcher] = init.dispatcher || input[kDispatcher]; @@ -12608,17 +12612,17 @@ var require_request2 = __commonJS({ signal = input[kSignal]; } const origin = environmentSettingsObject.settingsObject.origin; - let window = "client"; + let window2 = "client"; if (request2.window?.constructor?.name === "EnvironmentSettingsObject" && sameOrigin(request2.window, origin)) { - window = request2.window; + window2 = request2.window; } if (init.window != null) { - throw new TypeError(`'window' option '${window}' must be null`); + throw new TypeError(`'window' option '${window2}' must be null`); } if ("window" in init) { - window = "no-window"; + window2 = "no-window"; } - request2 = makeRequest2({ + request2 = makeRequest({ // URL request’s URL. // undici implementation note: this is set as the first item in request's urlList in makeRequest // method request’s method. @@ -12631,7 +12635,7 @@ var require_request2 = __commonJS({ // client This’s relevant settings object. client: environmentSettingsObject.settingsObject, // window window. - window, + window: window2, // priority request’s priority. priority: request2.priority, // origin request’s origin. The propagation of the origin is only significant for navigation requests @@ -12783,7 +12787,7 @@ var require_request2 = __commonJS({ requestFinalizer.register(ac, { signal, abort }, abort); } } - this[kHeaders] = new Headers3(kConstruct); + this[kHeaders] = new Headers4(kConstruct); setHeadersList(this[kHeaders], request2.headersList); setHeadersGuard(this[kHeaders], "request"); if (mode === "no-cors") { @@ -13018,8 +13022,8 @@ var require_request2 = __commonJS({ return `Request ${nodeUtil.formatWithOptions(options, properties)}`; } }; - mixinBody(Request); - function makeRequest2(init) { + mixinBody(Request2); + function makeRequest(init) { return { method: init.method ?? "GET", localURLsOnly: init.localURLsOnly ?? false, @@ -13062,22 +13066,22 @@ var require_request2 = __commonJS({ }; } function cloneRequest(request2) { - const newRequest = makeRequest2({ ...request2, body: null }); + const newRequest = makeRequest({ ...request2, body: null }); if (request2.body != null) { newRequest.body = cloneBody(newRequest, request2.body); } return newRequest; } function fromInnerRequest(innerRequest, signal, guard) { - const request2 = new Request(kConstruct); + const request2 = new Request2(kConstruct); request2[kState] = innerRequest; request2[kSignal] = signal; - request2[kHeaders] = new Headers3(kConstruct); + request2[kHeaders] = new Headers4(kConstruct); setHeadersList(request2[kHeaders], innerRequest.headersList); setHeadersGuard(request2[kHeaders], guard); return request2; } - Object.defineProperties(Request.prototype, { + Object.defineProperties(Request2.prototype, { method: kEnumerableProperty, url: kEnumerableProperty, headers: kEnumerableProperty, @@ -13104,13 +13108,13 @@ var require_request2 = __commonJS({ } }); webidl.converters.Request = webidl.interfaceConverter( - Request + Request2 ); webidl.converters.RequestInfo = function(V, prefix, argument) { if (typeof V === "string") { return webidl.converters.USVString(V, prefix, argument); } - if (V instanceof Request) { + if (V instanceof Request2) { return webidl.converters.Request(V, prefix, argument); } return webidl.converters.USVString(V, prefix, argument); @@ -13201,7 +13205,7 @@ var require_request2 = __commonJS({ converter: webidl.converters.any } ]); - module.exports = { Request, makeRequest: makeRequest2, fromInnerRequest, cloneRequest }; + module.exports = { Request: Request2, makeRequest, fromInnerRequest, cloneRequest }; } }); @@ -13217,8 +13221,8 @@ var require_fetch = __commonJS({ fromInnerResponse } = require_response(); var { HeadersList } = require_headers(); - var { Request, cloneRequest } = require_request2(); - var zlib = __require("node:zlib"); + var { Request: Request2, cloneRequest } = require_request2(); + var zlib2 = __require("node:zlib"); var { bytesMatch, makePolicyContainer, @@ -13234,10 +13238,10 @@ var require_fetch = __commonJS({ appendFetchMetadata, corsCheck, crossOriginResourcePolicyCheck, - determineRequestsReferrer, + determineRequestsReferrer: determineRequestsReferrer2, coarsenedSharedCurrentTime, createDeferredPromise, - isBlobLike, + isBlobLike: isBlobLike2, sameOrigin, isCancelled, isAborted, @@ -13265,7 +13269,7 @@ var require_fetch = __commonJS({ subresourceSet } = require_constants3(); var EE = __require("node:events"); - var { Readable, pipeline, finished } = __require("node:stream"); + var { Readable: Readable2, pipeline: pipeline2, finished: finished2 } = __require("node:stream"); var { addAbortListener, isErrored, isReadable, bufferToLowerCasedHeaderName } = require_util(); var { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require_data_url(); var { getGlobalDispatcher } = require_global2(); @@ -13307,14 +13311,14 @@ var require_fetch = __commonJS({ function handleFetchDone(response) { finalizeAndReportTiming(response, "fetch"); } - function fetch3(input, init = void 0) { + function fetch4(input, init = void 0) { webidl.argumentLengthCheck(arguments, 1, "globalThis.fetch"); let p = createDeferredPromise(); let requestObject; try { - requestObject = new Request(input, init); - } catch (e) { - p.reject(e); + requestObject = new Request2(input, init); + } catch (e2) { + p.reject(e2); return p.promise; } const request2 = requestObject[kState]; @@ -13502,7 +13506,7 @@ var require_fetch = __commonJS({ request2.referrerPolicy = request2.policyContainer.referrerPolicy; } if (request2.referrer !== "no-referrer") { - request2.referrer = determineRequestsReferrer(request2); + request2.referrer = determineRequestsReferrer2(request2); } if (response === null) { response = await (async () => { @@ -13604,7 +13608,7 @@ var require_fetch = __commonJS({ return Promise.resolve(makeNetworkError("NetworkError when attempting to fetch resource.")); } const blob = resolveObjectURL(blobURLEntry.toString()); - if (request2.method !== "GET" || !isBlobLike(blob)) { + if (request2.method !== "GET" || !isBlobLike2(blob)) { return Promise.resolve(makeNetworkError("invalid method")); } const response = makeResponse(); @@ -13733,7 +13737,7 @@ var require_fetch = __commonJS({ if (internalResponse.body == null) { processResponseEndOfBody(); } else { - finished(internalResponse.body.stream, () => { + finished2(internalResponse.body.stream, () => { processResponseEndOfBody(); }); } @@ -14005,14 +14009,14 @@ var require_fetch = __commonJS({ fetchParams.processRequestEndOfBody(); } }; - const processBodyError = (e) => { + const processBodyError = (e2) => { if (isCancelled(fetchParams)) { return; } - if (e.name === "AbortError") { + if (e2.name === "AbortError") { fetchParams.controller.abort(); } else { - fetchParams.controller.terminate(e); + fetchParams.controller.terminate(e2); } }; requestBody = async function* () { @@ -14162,11 +14166,11 @@ var require_fetch = __commonJS({ } let location = ""; const headersList = new HeadersList(); - for (let i = 0; i < rawHeaders.length; i += 2) { - headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString("latin1"), true); + for (let i2 = 0; i2 < rawHeaders.length; i2 += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i2]), rawHeaders[i2 + 1].toString("latin1"), true); } location = headersList.get("location", true); - this.body = new Readable({ read: resume }); + this.body = new Readable2({ read: resume }); const decoders = []; const willFollow = location && request2.redirect === "follow" && redirectStatusSet.has(status); if (request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) { @@ -14177,26 +14181,26 @@ var require_fetch = __commonJS({ reject(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`)); return true; } - for (let i = codings.length - 1; i >= 0; --i) { - const coding = codings[i].trim(); + for (let i2 = codings.length - 1; i2 >= 0; --i2) { + const coding = codings[i2].trim(); if (coding === "x-gzip" || coding === "gzip") { - decoders.push(zlib.createGunzip({ + decoders.push(zlib2.createGunzip({ // Be less strict when decoding compressed responses, since sometimes // servers send slightly invalid responses that are still accepted // by common browsers. // Always using Z_SYNC_FLUSH is what cURL does. - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH + flush: zlib2.constants.Z_SYNC_FLUSH, + finishFlush: zlib2.constants.Z_SYNC_FLUSH })); } else if (coding === "deflate") { decoders.push(createInflate({ - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH + flush: zlib2.constants.Z_SYNC_FLUSH, + finishFlush: zlib2.constants.Z_SYNC_FLUSH })); } else if (coding === "br") { - decoders.push(zlib.createBrotliDecompress({ - flush: zlib.constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH + decoders.push(zlib2.createBrotliDecompress({ + flush: zlib2.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib2.constants.BROTLI_OPERATION_FLUSH })); } else { decoders.length = 0; @@ -14209,7 +14213,7 @@ var require_fetch = __commonJS({ status, statusText, headersList, - body: decoders.length ? pipeline(this.body, ...decoders, (err) => { + body: decoders.length ? pipeline2(this.body, ...decoders, (err) => { if (err) { this.onError(err); } @@ -14248,8 +14252,8 @@ var require_fetch = __commonJS({ return; } const headersList = new HeadersList(); - for (let i = 0; i < rawHeaders.length; i += 2) { - headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString("latin1"), true); + for (let i2 = 0; i2 < rawHeaders.length; i2 += 2) { + headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i2]), rawHeaders[i2 + 1].toString("latin1"), true); } resolve2({ status, @@ -14264,7 +14268,7 @@ var require_fetch = __commonJS({ } } module.exports = { - fetch: fetch3, + fetch: fetch4, Fetch, fetching, finalizeAndReportTiming @@ -14655,7 +14659,7 @@ var require_util4 = __commonJS({ var { ProgressEvent } = require_progressevent(); var { getEncoding } = require_encoding(); var { serializeAMimeType, parseMIMEType } = require_data_url(); - var { types } = __require("node:util"); + var { types: types3 } = __require("node:util"); var { StringDecoder: StringDecoder2 } = __require("string_decoder"); var { btoa: btoa2 } = __require("node:buffer"); var staticPropertyDescriptors = { @@ -14685,7 +14689,7 @@ var require_util4 = __commonJS({ }); } isFirstChunk = false; - if (!done && types.isUint8Array(value)) { + if (!done && types3.isUint8Array(value)) { bytes.push(value); if ((fr[kLastProgressEventFired] === void 0 || Date.now() - fr[kLastProgressEventFired] >= 50) && !fr[kAborted]) { fr[kLastProgressEventFired] = Date.now(); @@ -14731,8 +14735,8 @@ var require_util4 = __commonJS({ } })(); } - function fireAProgressEvent(e, reader) { - const event = new ProgressEvent(e, { + function fireAProgressEvent(e2, reader) { + const event = new ProgressEvent(e2, { bubbles: false, cancelable: false }); @@ -15102,8 +15106,8 @@ var require_util5 = __commonJS({ var assert = __require("node:assert"); var { URLSerializer } = require_data_url(); var { isValidHeaderName } = require_util2(); - function urlEquals(A, B, excludeFragment = false) { - const serializedA = URLSerializer(A, excludeFragment); + function urlEquals(A2, B, excludeFragment = false) { + const serializedA = URLSerializer(A2, excludeFragment); const serializedB = URLSerializer(B, excludeFragment); return serializedA === serializedB; } @@ -15133,8 +15137,8 @@ var require_cache = __commonJS({ var { urlEquals, getFieldValues } = require_util5(); var { kEnumerableProperty, isDisturbed } = require_util(); var { webidl } = require_webidl(); - var { Response, cloneResponse, fromInnerResponse } = require_response(); - var { Request, fromInnerRequest } = require_request2(); + var { Response: Response3, cloneResponse, fromInnerResponse } = require_response(); + var { Request: Request2, fromInnerRequest } = require_request2(); var { kState } = require_symbols2(); var { fetching } = require_fetch(); var { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require_util2(); @@ -15199,8 +15203,8 @@ var require_cache = __commonJS({ if (typeof request2 === "string") { continue; } - const r = request2[kState]; - if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") { + const r2 = request2[kState]; + if (!urlIsHttpHttpsScheme(r2.url) || r2.method !== "GET") { throw webidl.errors.exception({ header: prefix, message: "Expected http/s scheme when method is not GET." @@ -15209,19 +15213,19 @@ var require_cache = __commonJS({ } const fetchControllers = []; for (const request2 of requests) { - const r = new Request(request2)[kState]; - if (!urlIsHttpHttpsScheme(r.url)) { + const r2 = new Request2(request2)[kState]; + if (!urlIsHttpHttpsScheme(r2.url)) { throw webidl.errors.exception({ header: prefix, message: "Expected http/s scheme." }); } - r.initiator = "fetch"; - r.destination = "subresource"; - requestList.push(r); + r2.initiator = "fetch"; + r2.destination = "subresource"; + requestList.push(r2); const responsePromise = createDeferredPromise(); fetchControllers.push(fetching({ - request: r, + request: r2, processResponse(response) { if (response.type === "error" || response.status === 206 || response.status < 200 || response.status > 299) { responsePromise.reject(webidl.errors.exception({ @@ -15274,8 +15278,8 @@ var require_cache = __commonJS({ let errorData = null; try { this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; + } catch (e2) { + errorData = e2; } queueMicrotask(() => { if (errorData === null) { @@ -15293,10 +15297,10 @@ var require_cache = __commonJS({ request2 = webidl.converters.RequestInfo(request2, prefix, "request"); response = webidl.converters.Response(response, prefix, "response"); let innerRequest = null; - if (request2 instanceof Request) { + if (request2 instanceof Request2) { innerRequest = request2[kState]; } else { - innerRequest = new Request(request2)[kState]; + innerRequest = new Request2(request2)[kState]; } if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") { throw webidl.errors.exception({ @@ -15355,8 +15359,8 @@ var require_cache = __commonJS({ let errorData = null; try { this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; + } catch (e2) { + errorData = e2; } queueMicrotask(() => { if (errorData === null) { @@ -15373,20 +15377,20 @@ var require_cache = __commonJS({ webidl.argumentLengthCheck(arguments, 1, prefix); request2 = webidl.converters.RequestInfo(request2, prefix, "request"); options = webidl.converters.CacheQueryOptions(options, prefix, "options"); - let r = null; - if (request2 instanceof Request) { - r = request2[kState]; - if (r.method !== "GET" && !options.ignoreMethod) { + let r2 = null; + if (request2 instanceof Request2) { + r2 = request2[kState]; + if (r2.method !== "GET" && !options.ignoreMethod) { return false; } } else { assert(typeof request2 === "string"); - r = new Request(request2)[kState]; + r2 = new Request2(request2)[kState]; } const operations = []; const operation = { type: "delete", - request: r, + request: r2, options }; operations.push(operation); @@ -15395,8 +15399,8 @@ var require_cache = __commonJS({ let requestResponses; try { requestResponses = this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; + } catch (e2) { + errorData = e2; } queueMicrotask(() => { if (errorData === null) { @@ -15419,15 +15423,15 @@ var require_cache = __commonJS({ if (request2 !== void 0) request2 = webidl.converters.RequestInfo(request2, prefix, "request"); options = webidl.converters.CacheQueryOptions(options, prefix, "options"); - let r = null; + let r2 = null; if (request2 !== void 0) { - if (request2 instanceof Request) { - r = request2[kState]; - if (r.method !== "GET" && !options.ignoreMethod) { + if (request2 instanceof Request2) { + r2 = request2[kState]; + if (r2.method !== "GET" && !options.ignoreMethod) { return []; } } else if (typeof request2 === "string") { - r = new Request(request2)[kState]; + r2 = new Request2(request2)[kState]; } } const promise = createDeferredPromise(); @@ -15437,7 +15441,7 @@ var require_cache = __commonJS({ requests.push(requestResponse[0]); } } else { - const requestResponses = this.#queryCache(r, options); + const requestResponses = this.#queryCache(r2, options); for (const requestResponse of requestResponses) { requests.push(requestResponse[0]); } @@ -15501,14 +15505,14 @@ var require_cache = __commonJS({ message: "put operation should have an associated response" }); } - const r = operation.request; - if (!urlIsHttpHttpsScheme(r.url)) { + const r2 = operation.request; + if (!urlIsHttpHttpsScheme(r2.url)) { throw webidl.errors.exception({ header: "Cache.#batchCacheOperations", message: "expected http or https scheme" }); } - if (r.method !== "GET") { + if (r2.method !== "GET") { throw webidl.errors.exception({ header: "Cache.#batchCacheOperations", message: "not get method" @@ -15532,10 +15536,10 @@ var require_cache = __commonJS({ resultList.push([operation.request, operation.response]); } return resultList; - } catch (e) { + } catch (e2) { this.#relevantRequestResponseList.length = 0; this.#relevantRequestResponseList = backupCache; - throw e; + throw e2; } } /** @@ -15591,15 +15595,15 @@ var require_cache = __commonJS({ return true; } #internalMatchAll(request2, options, maxResponses = Infinity) { - let r = null; + let r2 = null; if (request2 !== void 0) { - if (request2 instanceof Request) { - r = request2[kState]; - if (r.method !== "GET" && !options.ignoreMethod) { + if (request2 instanceof Request2) { + r2 = request2[kState]; + if (r2.method !== "GET" && !options.ignoreMethod) { return []; } } else if (typeof request2 === "string") { - r = new Request(request2)[kState]; + r2 = new Request2(request2)[kState]; } } const responses = []; @@ -15608,7 +15612,7 @@ var require_cache = __commonJS({ responses.push(requestResponse[1]); } } else { - const requestResponses = this.#queryCache(r, options); + const requestResponses = this.#queryCache(r2, options); for (const requestResponse of requestResponses) { responses.push(requestResponse[1]); } @@ -15662,7 +15666,7 @@ var require_cache = __commonJS({ converter: webidl.converters.DOMString } ]); - webidl.converters.Response = webidl.interfaceConverter(Response); + webidl.converters.Response = webidl.interfaceConverter(Response3); webidl.converters["sequence"] = webidl.sequenceConverter( webidl.converters.RequestInfo ); @@ -15800,8 +15804,8 @@ var require_util6 = __commonJS({ ""(exports, module) { "use strict"; function isCTLExcludingHtab(value) { - for (let i = 0; i < value.length; ++i) { - const code = value.charCodeAt(i); + for (let i2 = 0; i2 < value.length; ++i2) { + const code = value.charCodeAt(i2); if (code >= 0 && code <= 8 || code >= 10 && code <= 31 || code === 127) { return true; } @@ -15809,8 +15813,8 @@ var require_util6 = __commonJS({ return false; } function validateCookieName(name) { - for (let i = 0; i < name.length; ++i) { - const code = name.charCodeAt(i); + for (let i2 = 0; i2 < name.length; ++i2) { + const code = name.charCodeAt(i2); if (code < 33 || // exclude CTLs (0-31), SP and HT code > 126 || // exclude non-ascii and DEL code === 34 || // " @@ -15836,16 +15840,16 @@ var require_util6 = __commonJS({ } function validateCookieValue(value) { let len = value.length; - let i = 0; + let i2 = 0; if (value[0] === '"') { if (len === 1 || value[len - 1] !== '"') { throw new Error("Invalid cookie value"); } --len; - ++i; + ++i2; } - while (i < len) { - const code = value.charCodeAt(i++); + while (i2 < len) { + const code = value.charCodeAt(i2++); if (code < 33 || // exclude CTLs (0-31) code > 126 || // non-ascii and DEL (127) code === 34 || // " @@ -15856,9 +15860,9 @@ var require_util6 = __commonJS({ } } } - function validateCookiePath(path6) { - for (let i = 0; i < path6.length; ++i) { - const code = path6.charCodeAt(i); + function validateCookiePath(path7) { + for (let i2 = 0; i2 < path7.length; ++i2) { + const code = path7.charCodeAt(i2); if (code < 32 || // exclude CTLs (0-31) code === 127 || // DEL code === 59) { @@ -15894,7 +15898,7 @@ var require_util6 = __commonJS({ "Nov", "Dec" ]; - var IMFPaddedNumbers = Array(61).fill(0).map((_, i) => i.toString().padStart(2, "0")); + var IMFPaddedNumbers = Array(61).fill(0).map((_, i2) => i2.toString().padStart(2, "0")); function toIMFDate(date) { if (typeof date === "number") { date = new Date(date); @@ -16112,10 +16116,10 @@ var require_cookies = __commonJS({ var { parseSetCookie } = require_parse(); var { stringify } = require_util6(); var { webidl } = require_webidl(); - var { Headers: Headers3 } = require_headers(); + var { Headers: Headers4 } = require_headers(); function getCookies(headers) { webidl.argumentLengthCheck(arguments, 1, "getCookies"); - webidl.brandCheck(headers, Headers3, { strict: false }); + webidl.brandCheck(headers, Headers4, { strict: false }); const cookie = headers.get("cookie"); const out = {}; if (!cookie) { @@ -16128,7 +16132,7 @@ var require_cookies = __commonJS({ return out; } function deleteCookie(headers, name, attributes) { - webidl.brandCheck(headers, Headers3, { strict: false }); + webidl.brandCheck(headers, Headers4, { strict: false }); const prefix = "deleteCookie"; webidl.argumentLengthCheck(arguments, 2, prefix); name = webidl.converters.DOMString(name, prefix, "name"); @@ -16142,7 +16146,7 @@ var require_cookies = __commonJS({ } function getSetCookies(headers) { webidl.argumentLengthCheck(arguments, 1, "getSetCookies"); - webidl.brandCheck(headers, Headers3, { strict: false }); + webidl.brandCheck(headers, Headers4, { strict: false }); const cookies = headers.getSetCookie(); if (!cookies) { return []; @@ -16151,7 +16155,7 @@ var require_cookies = __commonJS({ } function setCookie(headers, cookie) { webidl.argumentLengthCheck(arguments, 2, "setCookie"); - webidl.brandCheck(headers, Headers3, { strict: false }); + webidl.brandCheck(headers, Headers4, { strict: false }); cookie = webidl.converters.Cookie(cookie); const str = stringify(cookie); if (str) { @@ -16595,8 +16599,8 @@ var require_util7 = __commonJS({ function isClosed(ws) { return ws[kReadyState] === states.CLOSED; } - function fireEvent(e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) { - const event = eventFactory(e, eventInitDict); + function fireEvent(e2, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) { + const event = eventFactory(e2, eventInitDict); target.dispatchEvent(event); } function websocketMessageReceived(ws, type, data) { @@ -16633,8 +16637,8 @@ var require_util7 = __commonJS({ if (protocol.length === 0) { return false; } - for (let i = 0; i < protocol.length; ++i) { - const code = protocol.charCodeAt(i); + for (let i2 = 0; i2 < protocol.length; ++i2) { + const code = protocol.charCodeAt(i2); if (code < 33 || // CTL, contains SP (0x20) and HT (0x09) code > 126 || code === 34 || // " code === 40 || // ( @@ -16706,8 +16710,8 @@ var require_util7 = __commonJS({ return extensionList; } function isValidClientWindowBits(value) { - for (let i = 0; i < value.length; i++) { - const byte = value.charCodeAt(i); + for (let i2 = 0; i2 < value.length; i2++) { + const byte = value.charCodeAt(i2); if (byte < 48 || byte > 57) { return false; } @@ -16749,17 +16753,17 @@ var require_frame = __commonJS({ "use strict"; var { maxUnsigned16Bit } = require_constants5(); var BUFFER_SIZE = 16386; - var crypto2; + var crypto3; var buffer = null; var bufIdx = BUFFER_SIZE; try { - crypto2 = __require("node:crypto"); + crypto3 = __require("node:crypto"); } catch { - crypto2 = { + crypto3 = { // not full compatibility, but minimum. randomFillSync: function randomFillSync(buffer2, _offset, _size) { - for (let i = 0; i < buffer2.length; ++i) { - buffer2[i] = Math.random() * 255 | 0; + for (let i2 = 0; i2 < buffer2.length; ++i2) { + buffer2[i2] = Math.random() * 255 | 0; } return buffer2; } @@ -16768,7 +16772,7 @@ var require_frame = __commonJS({ function generateMask() { if (bufIdx === BUFFER_SIZE) { bufIdx = 0; - crypto2.randomFillSync(buffer ??= Buffer.allocUnsafe(BUFFER_SIZE), 0, BUFFER_SIZE); + crypto3.randomFillSync(buffer ??= Buffer.allocUnsafe(BUFFER_SIZE), 0, BUFFER_SIZE); } return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]]; } @@ -16808,8 +16812,8 @@ var require_frame = __commonJS({ buffer2.writeUIntBE(bodyLength, 4, 6); } buffer2[1] |= 128; - for (let i = 0; i < bodyLength; ++i) { - buffer2[offset + i] = frameData[i] ^ maskKey[i & 3]; + for (let i2 = 0; i2 < bodyLength; ++i2) { + buffer2[offset + i2] = frameData[i2] ^ maskKey[i2 & 3]; } return buffer2; } @@ -16835,20 +16839,20 @@ var require_connection = __commonJS({ var { fireEvent, failWebsocketConnection, isClosing, isClosed, isEstablished, parseExtensions } = require_util7(); var { channels } = require_diagnostics(); var { CloseEvent } = require_events(); - var { makeRequest: makeRequest2 } = require_request2(); + var { makeRequest } = require_request2(); var { fetching } = require_fetch(); - var { Headers: Headers3, getHeadersList } = require_headers(); + var { Headers: Headers4, getHeadersList } = require_headers(); var { getDecodeSplit } = require_util2(); var { WebsocketFrameSend } = require_frame(); - var crypto2; + var crypto3; try { - crypto2 = __require("node:crypto"); + crypto3 = __require("node:crypto"); } catch { } function establishWebSocketConnection(url, protocols, client, ws, onEstablish, options) { const requestURL = url; requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:"; - const request2 = makeRequest2({ + const request2 = makeRequest({ urlList: [requestURL], client, serviceWorkers: "none", @@ -16859,10 +16863,10 @@ var require_connection = __commonJS({ redirect: "error" }); if (options.headers) { - const headersList = getHeadersList(new Headers3(options.headers)); + const headersList = getHeadersList(new Headers4(options.headers)); request2.headersList = headersList; } - const keyValue = crypto2.randomBytes(16).toString("base64"); + const keyValue = crypto3.randomBytes(16).toString("base64"); request2.headersList.append("sec-websocket-key", keyValue); request2.headersList.append("sec-websocket-version", "13"); for (const protocol of protocols) { @@ -16892,7 +16896,7 @@ var require_connection = __commonJS({ return; } const secWSAccept = response.headersList.get("Sec-WebSocket-Accept"); - const digest = crypto2.createHash("sha1").update(keyValue + uid).digest("base64"); + const digest = crypto3.createHash("sha1").update(keyValue + uid).digest("base64"); if (secWSAccept !== digest) { failWebsocketConnection(ws, "Incorrect hash received in Sec-WebSocket-Accept header."); return; @@ -17198,8 +17202,8 @@ var require_receiver = __commonJS({ failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); return; } - const lower = buffer.readUInt32BE(4); - this.#info.payloadLength = (upper << 8) + lower; + const lower2 = buffer.readUInt32BE(4); + this.#info.payloadLength = (upper << 8) + lower2; this.#state = parserStates.READ_DATA; } else if (this.#state === parserStates.READ_DATA) { if (this.#byteOffset < this.#info.payloadLength) { @@ -17473,12 +17477,12 @@ var require_websocket = __commonJS({ } = require_util7(); var { establishWebSocketConnection, closeWebSocketConnection } = require_connection(); var { ByteParser } = require_receiver(); - var { kEnumerableProperty, isBlobLike } = require_util(); + var { kEnumerableProperty, isBlobLike: isBlobLike2 } = require_util(); var { getGlobalDispatcher } = require_global2(); - var { types } = __require("node:util"); + var { types: types3 } = __require("node:util"); var { ErrorEvent, CloseEvent } = require_events(); var { SendQueue } = require_sender(); - var WebSocket = class _WebSocket extends EventTarget { + var WebSocket2 = class _WebSocket extends EventTarget { #events = { open: null, error: null, @@ -17506,8 +17510,8 @@ var require_websocket = __commonJS({ let urlRecord; try { urlRecord = new URL(url, baseURL); - } catch (e) { - throw new DOMException(e, "SyntaxError"); + } catch (e2) { + throw new DOMException(e2, "SyntaxError"); } if (urlRecord.protocol === "http:") { urlRecord.protocol = "ws:"; @@ -17598,7 +17602,7 @@ var require_websocket = __commonJS({ this.#sendQueue.add(data, () => { this.#bufferedAmount -= length; }, sendHints.string); - } else if (types.isArrayBuffer(data)) { + } else if (types3.isArrayBuffer(data)) { this.#bufferedAmount += data.byteLength; this.#sendQueue.add(data, () => { this.#bufferedAmount -= data.byteLength; @@ -17608,7 +17612,7 @@ var require_websocket = __commonJS({ this.#sendQueue.add(data, () => { this.#bufferedAmount -= data.byteLength; }, sendHints.typedArray); - } else if (isBlobLike(data)) { + } else if (isBlobLike2(data)) { this.#bufferedAmount += data.size; this.#sendQueue.add(data, () => { this.#bufferedAmount -= data.size; @@ -17734,11 +17738,11 @@ var require_websocket = __commonJS({ fireEvent("open", this); } }; - WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; - WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; - WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; - WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; - Object.defineProperties(WebSocket.prototype, { + WebSocket2.CONNECTING = WebSocket2.prototype.CONNECTING = states.CONNECTING; + WebSocket2.OPEN = WebSocket2.prototype.OPEN = states.OPEN; + WebSocket2.CLOSING = WebSocket2.prototype.CLOSING = states.CLOSING; + WebSocket2.CLOSED = WebSocket2.prototype.CLOSED = states.CLOSED; + Object.defineProperties(WebSocket2.prototype, { CONNECTING: staticPropertyDescriptors, OPEN: staticPropertyDescriptors, CLOSING: staticPropertyDescriptors, @@ -17762,7 +17766,7 @@ var require_websocket = __commonJS({ configurable: true } }); - Object.defineProperties(WebSocket, { + Object.defineProperties(WebSocket2, { CONNECTING: staticPropertyDescriptors, OPEN: staticPropertyDescriptors, CLOSING: staticPropertyDescriptors, @@ -17801,10 +17805,10 @@ var require_websocket = __commonJS({ }; webidl.converters.WebSocketSendData = function(V) { if (webidl.util.Type(V) === "Object") { - if (isBlobLike(V)) { + if (isBlobLike2(V)) { return webidl.converters.Blob(V, { strict: false }); } - if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) { + if (ArrayBuffer.isView(V) || types3.isArrayBuffer(V)) { return webidl.converters.BufferSource(V); } } @@ -17826,7 +17830,7 @@ var require_websocket = __commonJS({ closeWebSocketConnection(this, code); } module.exports = { - WebSocket + WebSocket: WebSocket2 }; } }); @@ -17841,8 +17845,8 @@ var require_util8 = __commonJS({ function isASCIINumber(value) { if (value.length === 0) return false; - for (let i = 0; i < value.length; i++) { - if (value.charCodeAt(i) < 48 || value.charCodeAt(i) > 57) + for (let i2 = 0; i2 < value.length; i2++) { + if (value.charCodeAt(i2) < 48 || value.charCodeAt(i2) > 57) return false; } return true; @@ -17867,10 +17871,10 @@ var require_eventsource_stream = __commonJS({ var { Transform } = __require("node:stream"); var { isASCIINumber, isValidLastEventId } = require_util8(); var BOM = [239, 187, 191]; - var LF = 10; - var CR = 13; - var COLON = 58; - var SPACE = 32; + var LF2 = 10; + var CR2 = 13; + var COLON2 = 58; + var SPACE2 = 32; var EventSourceStream = class extends Transform { /** * @type {eventSourceSettings} @@ -17966,7 +17970,7 @@ var require_eventsource_stream = __commonJS({ while (this.pos < this.buffer.length) { if (this.eventEndCheck) { if (this.crlfCheck) { - if (this.buffer[this.pos] === LF) { + if (this.buffer[this.pos] === LF2) { this.buffer = this.buffer.subarray(this.pos + 1); this.pos = 0; this.crlfCheck = false; @@ -17974,8 +17978,8 @@ var require_eventsource_stream = __commonJS({ } this.crlfCheck = false; } - if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { - if (this.buffer[this.pos] === CR) { + if (this.buffer[this.pos] === LF2 || this.buffer[this.pos] === CR2) { + if (this.buffer[this.pos] === CR2) { this.crlfCheck = true; } this.buffer = this.buffer.subarray(this.pos + 1); @@ -17989,8 +17993,8 @@ var require_eventsource_stream = __commonJS({ this.eventEndCheck = false; continue; } - if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) { - if (this.buffer[this.pos] === CR) { + if (this.buffer[this.pos] === LF2 || this.buffer[this.pos] === CR2) { + if (this.buffer[this.pos] === CR2) { this.crlfCheck = true; } this.parseLine(this.buffer.subarray(0, this.pos), this.event); @@ -18011,7 +18015,7 @@ var require_eventsource_stream = __commonJS({ if (line.length === 0) { return; } - const colonPosition = line.indexOf(COLON); + const colonPosition = line.indexOf(COLON2); if (colonPosition === 0) { return; } @@ -18020,7 +18024,7 @@ var require_eventsource_stream = __commonJS({ if (colonPosition !== -1) { field = line.subarray(0, colonPosition).toString("utf8"); let valueStart = colonPosition + 1; - if (line[valueStart] === SPACE) { + if (line[valueStart] === SPACE2) { ++valueStart; } value = line.subarray(valueStart).toString("utf8"); @@ -18094,9 +18098,9 @@ ${value}`; var require_eventsource = __commonJS({ ""(exports, module) { "use strict"; - var { pipeline } = __require("node:stream"); + var { pipeline: pipeline2 } = __require("node:stream"); var { fetching } = require_fetch(); - var { makeRequest: makeRequest2 } = require_request2(); + var { makeRequest } = require_request2(); var { webidl } = require_webidl(); var { EventSourceStream } = require_eventsource_stream(); var { parseMIMEType } = require_data_url(); @@ -18157,8 +18161,8 @@ var require_eventsource = __commonJS({ try { urlRecord = new URL(url, settings.settingsObject.baseUrl); this.#state.origin = urlRecord.origin; - } catch (e) { - throw new DOMException(e, "SyntaxError"); + } catch (e2) { + throw new DOMException(e2, "SyntaxError"); } this.#url = urlRecord.href; let corsAttributeState = ANONYMOUS; @@ -18179,7 +18183,7 @@ var require_eventsource = __commonJS({ initRequest.cache = "no-store"; initRequest.initiator = "other"; initRequest.urlList = [new URL(this.#url)]; - this.#request = makeRequest2(initRequest); + this.#request = makeRequest(initRequest); this.#connect(); } /** @@ -18253,7 +18257,7 @@ var require_eventsource = __commonJS({ )); } }); - pipeline( + pipeline2( response.body.stream, eventSourceStream, (error2) => { @@ -18458,11 +18462,11 @@ var require_undici = __commonJS({ if (typeof opts.path !== "string") { throw new InvalidArgumentError("invalid opts.path"); } - let path6 = opts.path; + let path7 = opts.path; if (!opts.path.startsWith("/")) { - path6 = `/${path6}`; + path7 = `/${path7}`; } - url = new URL(util.parseOrigin(url).origin + path6); + url = new URL(util.parseOrigin(url).origin + path7); } else { if (!opts) { opts = typeof url === "object" ? url : {}; @@ -18484,7 +18488,7 @@ var require_undici = __commonJS({ module.exports.setGlobalDispatcher = setGlobalDispatcher; module.exports.getGlobalDispatcher = getGlobalDispatcher; var fetchImpl = require_fetch().fetch; - module.exports.fetch = async function fetch3(init, options = void 0) { + module.exports.fetch = async function fetch4(init, options = void 0) { try { return await fetchImpl(init, options); } catch (err) { @@ -18555,7 +18559,7 @@ var require_proxy = __commonJS({ if (proxyVar) { try { return new DecodedURL2(proxyVar); - } catch (_a2) { + } catch (_a3) { if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://")) return new DecodedURL2(`http://${proxyVar}`); } @@ -18587,8 +18591,8 @@ var require_proxy = __commonJS({ if (typeof reqPort === "number") { upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); } - for (const upperNoProxyItem of noProxy.split(",").map((x) => x.trim().toUpperCase()).filter((x) => x)) { - if (upperNoProxyItem === "*" || upperReqHosts.some((x) => x === upperNoProxyItem || x.endsWith(`.${upperNoProxyItem}`) || upperNoProxyItem.startsWith(".") && x.endsWith(`${upperNoProxyItem}`))) { + for (const upperNoProxyItem of noProxy.split(",").map((x2) => x2.trim().toUpperCase()).filter((x2) => x2)) { + if (upperNoProxyItem === "*" || upperReqHosts.some((x2) => x2 === upperNoProxyItem || x2.endsWith(`.${upperNoProxyItem}`) || upperNoProxyItem.startsWith(".") && x2.endsWith(`${upperNoProxyItem}`))) { return true; } } @@ -18618,20 +18622,20 @@ var require_proxy = __commonJS({ var require_lib = __commonJS({ ""(exports) { "use strict"; - var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { if (k2 === void 0) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { - return m[k]; + return m2[k]; } }; } Object.defineProperty(o, k2, desc); - } : function(o, m, k, k2) { + } : function(o, m2, k, k2) { if (k2 === void 0) k2 = k; - o[k2] = m[k]; + o[k2] = m2[k]; }); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); @@ -18654,9 +18658,9 @@ var require_lib = __commonJS({ return mod; var result = {}; if (mod != null) { - for (var k = ownKeys(mod), i = 0; i < k.length; i++) - if (k[i] !== "default") - __createBinding(result, mod, k[i]); + for (var k = ownKeys(mod), i2 = 0; i2 < k.length; i2++) + if (k[i2] !== "default") + __createBinding(result, mod, k[i2]); } __setModuleDefault(result, mod); return result; @@ -18672,15 +18676,15 @@ var require_lib = __commonJS({ function fulfilled(value) { try { step(generator.next(value)); - } catch (e) { - reject(e); + } catch (e2) { + reject(e2); } } function rejected(value) { try { step(generator["throw"](value)); - } catch (e) { - reject(e); + } catch (e2) { + reject(e2); } } function step(result) { @@ -18693,8 +18697,8 @@ var require_lib = __commonJS({ exports.HttpClient = exports.HttpClientResponse = exports.HttpClientError = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; exports.getProxyUrl = getProxyUrl2; exports.isHttps = isHttps; - var http2 = __importStar(__require("http")); - var https2 = __importStar(__require("https")); + var http4 = __importStar(__require("http")); + var https3 = __importStar(__require("https")); var pm = __importStar(require_proxy()); var tunnel2 = __importStar(require_tunnel2()); var undici_1 = require_undici(); @@ -18728,11 +18732,11 @@ var require_lib = __commonJS({ HttpCodes3[HttpCodes3["ServiceUnavailable"] = 503] = "ServiceUnavailable"; HttpCodes3[HttpCodes3["GatewayTimeout"] = 504] = "GatewayTimeout"; })(HttpCodes2 || (exports.HttpCodes = HttpCodes2 = {})); - var Headers3; - (function(Headers4) { - Headers4["Accept"] = "accept"; - Headers4["ContentType"] = "content-type"; - })(Headers3 || (exports.Headers = Headers3 = {})); + var Headers4; + (function(Headers5) { + Headers5["Accept"] = "accept"; + Headers5["ContentType"] = "content-type"; + })(Headers4 || (exports.Headers = Headers4 = {})); var MediaTypes2; (function(MediaTypes3) { MediaTypes3["ApplicationJson"] = "application/json"; @@ -18885,7 +18889,7 @@ var require_lib = __commonJS({ */ getJson(requestUrl_1) { return __awaiter12(this, arguments, void 0, function* (requestUrl, additionalHeaders = {}) { - additionalHeaders[Headers3.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers3.Accept, MediaTypes2.ApplicationJson); + additionalHeaders[Headers4.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers4.Accept, MediaTypes2.ApplicationJson); const res = yield this.get(requestUrl, additionalHeaders); return this._processResponse(res, this.requestOptions); }); @@ -18893,8 +18897,8 @@ var require_lib = __commonJS({ postJson(requestUrl_1, obj_1) { return __awaiter12(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers3.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers3.Accept, MediaTypes2.ApplicationJson); - additionalHeaders[Headers3.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); + additionalHeaders[Headers4.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers4.Accept, MediaTypes2.ApplicationJson); + additionalHeaders[Headers4.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); const res = yield this.post(requestUrl, data, additionalHeaders); return this._processResponse(res, this.requestOptions); }); @@ -18902,8 +18906,8 @@ var require_lib = __commonJS({ putJson(requestUrl_1, obj_1) { return __awaiter12(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers3.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers3.Accept, MediaTypes2.ApplicationJson); - additionalHeaders[Headers3.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); + additionalHeaders[Headers4.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers4.Accept, MediaTypes2.ApplicationJson); + additionalHeaders[Headers4.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); const res = yield this.put(requestUrl, data, additionalHeaders); return this._processResponse(res, this.requestOptions); }); @@ -18911,8 +18915,8 @@ var require_lib = __commonJS({ patchJson(requestUrl_1, obj_1) { return __awaiter12(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers3.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers3.Accept, MediaTypes2.ApplicationJson); - additionalHeaders[Headers3.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); + additionalHeaders[Headers4.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers4.Accept, MediaTypes2.ApplicationJson); + additionalHeaders[Headers4.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes2.ApplicationJson); const res = yield this.patch(requestUrl, data, additionalHeaders); return this._processResponse(res, this.requestOptions); }); @@ -19083,7 +19087,7 @@ var require_lib = __commonJS({ const info2 = {}; info2.parsedUrl = requestUrl; const usingSsl = info2.parsedUrl.protocol === "https:"; - info2.httpModule = usingSsl ? https2 : http2; + info2.httpModule = usingSsl ? https3 : http4; const defaultPort = usingSsl ? 443 : 80; info2.options = {}; info2.options.host = info2.parsedUrl.hostname; @@ -19142,7 +19146,7 @@ var require_lib = __commonJS({ _getExistingOrDefaultContentTypeHeader(additionalHeaders, _default) { let clientHeader; if (this.requestOptions && this.requestOptions.headers) { - const headerValue = lowercaseKeys3(this.requestOptions.headers)[Headers3.ContentType]; + const headerValue = lowercaseKeys3(this.requestOptions.headers)[Headers4.ContentType]; if (headerValue) { if (typeof headerValue === "number") { clientHeader = String(headerValue); @@ -19153,7 +19157,7 @@ var require_lib = __commonJS({ } } } - const additionalValue = additionalHeaders[Headers3.ContentType]; + const additionalValue = additionalHeaders[Headers4.ContentType]; if (additionalValue !== void 0) { if (typeof additionalValue === "number") { return String(additionalValue); @@ -19184,7 +19188,7 @@ var require_lib = __commonJS({ const usingSsl = parsedUrl.protocol === "https:"; let maxSockets = 100; if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http2.globalAgent.maxSockets; + maxSockets = this.requestOptions.maxSockets || http4.globalAgent.maxSockets; } if (proxyUrl && proxyUrl.hostname) { const agentOptions = { @@ -19206,7 +19210,7 @@ var require_lib = __commonJS({ } if (!agent) { const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https2.Agent(options) : new http2.Agent(options); + agent = usingSsl ? new https3.Agent(options) : new http4.Agent(options); this._agent = agent; } if (usingSsl && this._ignoreSslError) { @@ -19409,3550 +19413,26469 @@ var require_fast_content_type_parse = __commonJS({ }); // -var core_exports = {}; -__export(core_exports, { - ExitCode: () => ExitCode, - addPath: () => addPath, - debug: () => debug, - endGroup: () => endGroup, - error: () => error, - exportVariable: () => exportVariable, - getBooleanInput: () => getBooleanInput, - getIDToken: () => getIDToken, - getInput: () => getInput, - getMultilineInput: () => getMultilineInput, - getState: () => getState, - group: () => group, - info: () => info, - isDebug: () => isDebug, - markdownSummary: () => markdownSummary, - notice: () => notice, - platform: () => platform_exports, - saveState: () => saveState, - setCommandEcho: () => setCommandEcho, - setFailed: () => setFailed, - setOutput: () => setOutput, - setSecret: () => setSecret, - startGroup: () => startGroup, - summary: () => summary, - toPlatformPath: () => toPlatformPath, - toPosixPath: () => toPosixPath, - toWin32Path: () => toWin32Path, - warning: () => warning +var require_retry_operation = __commonJS({ + ""(exports, module) { + function RetryOperation(timeouts, options) { + if (typeof options === "boolean") { + options = { forever: options }; + } + this._originalTimeouts = JSON.parse(JSON.stringify(timeouts)); + this._timeouts = timeouts; + this._options = options || {}; + this._maxRetryTime = options && options.maxRetryTime || Infinity; + this._fn = null; + this._errors = []; + this._attempts = 1; + this._operationTimeout = null; + this._operationTimeoutCb = null; + this._timeout = null; + this._operationStart = null; + this._timer = null; + if (this._options.forever) { + this._cachedTimeouts = this._timeouts.slice(0); + } + } + module.exports = RetryOperation; + RetryOperation.prototype.reset = function() { + this._attempts = 1; + this._timeouts = this._originalTimeouts.slice(0); + }; + RetryOperation.prototype.stop = function() { + if (this._timeout) { + clearTimeout(this._timeout); + } + if (this._timer) { + clearTimeout(this._timer); + } + this._timeouts = []; + this._cachedTimeouts = null; + }; + RetryOperation.prototype.retry = function(err) { + if (this._timeout) { + clearTimeout(this._timeout); + } + if (!err) { + return false; + } + var currentTime = (/* @__PURE__ */ new Date()).getTime(); + if (err && currentTime - this._operationStart >= this._maxRetryTime) { + this._errors.push(err); + this._errors.unshift(new Error("RetryOperation timeout occurred")); + return false; + } + this._errors.push(err); + var timeout = this._timeouts.shift(); + if (timeout === void 0) { + if (this._cachedTimeouts) { + this._errors.splice(0, this._errors.length - 1); + timeout = this._cachedTimeouts.slice(-1); + } else { + return false; + } + } + var self2 = this; + this._timer = setTimeout(function() { + self2._attempts++; + if (self2._operationTimeoutCb) { + self2._timeout = setTimeout(function() { + self2._operationTimeoutCb(self2._attempts); + }, self2._operationTimeout); + if (self2._options.unref) { + self2._timeout.unref(); + } + } + self2._fn(self2._attempts); + }, timeout); + if (this._options.unref) { + this._timer.unref(); + } + return true; + }; + RetryOperation.prototype.attempt = function(fn, timeoutOps) { + this._fn = fn; + if (timeoutOps) { + if (timeoutOps.timeout) { + this._operationTimeout = timeoutOps.timeout; + } + if (timeoutOps.cb) { + this._operationTimeoutCb = timeoutOps.cb; + } + } + var self2 = this; + if (this._operationTimeoutCb) { + this._timeout = setTimeout(function() { + self2._operationTimeoutCb(); + }, self2._operationTimeout); + } + this._operationStart = (/* @__PURE__ */ new Date()).getTime(); + this._fn(this._attempts); + }; + RetryOperation.prototype.try = function(fn) { + console.log("Using RetryOperation.try() is deprecated"); + this.attempt(fn); + }; + RetryOperation.prototype.start = function(fn) { + console.log("Using RetryOperation.start() is deprecated"); + this.attempt(fn); + }; + RetryOperation.prototype.start = RetryOperation.prototype.try; + RetryOperation.prototype.errors = function() { + return this._errors; + }; + RetryOperation.prototype.attempts = function() { + return this._attempts; + }; + RetryOperation.prototype.mainError = function() { + if (this._errors.length === 0) { + return null; + } + var counts = {}; + var mainError = null; + var mainErrorCount = 0; + for (var i2 = 0; i2 < this._errors.length; i2++) { + var error2 = this._errors[i2]; + var message = error2.message; + var count = (counts[message] || 0) + 1; + counts[message] = count; + if (count >= mainErrorCount) { + mainError = error2; + mainErrorCount = count; + } + } + return mainError; + }; + } }); // -import * as os from "os"; +var require_retry2 = __commonJS({ + ""(exports) { + var RetryOperation = require_retry_operation(); + exports.operation = function(options) { + var timeouts = exports.timeouts(options); + return new RetryOperation(timeouts, { + forever: options && (options.forever || options.retries === Infinity), + unref: options && options.unref, + maxRetryTime: options && options.maxRetryTime + }); + }; + exports.timeouts = function(options) { + if (options instanceof Array) { + return [].concat(options); + } + var opts = { + retries: 10, + factor: 2, + minTimeout: 1 * 1e3, + maxTimeout: Infinity, + randomize: false + }; + for (var key in options) { + opts[key] = options[key]; + } + if (opts.minTimeout > opts.maxTimeout) { + throw new Error("minTimeout is greater than maxTimeout"); + } + var timeouts = []; + for (var i2 = 0; i2 < opts.retries; i2++) { + timeouts.push(this.createTimeout(i2, opts)); + } + if (options && options.forever && !timeouts.length) { + timeouts.push(this.createTimeout(i2, opts)); + } + timeouts.sort(function(a, b) { + return a - b; + }); + return timeouts; + }; + exports.createTimeout = function(attempt, opts) { + var random = opts.randomize ? Math.random() + 1 : 1; + var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt)); + timeout = Math.min(timeout, opts.maxTimeout); + return timeout; + }; + exports.wrap = function(obj, options, methods) { + if (options instanceof Array) { + methods = options; + options = null; + } + if (!methods) { + methods = []; + for (var key in obj) { + if (typeof obj[key] === "function") { + methods.push(key); + } + } + } + for (var i2 = 0; i2 < methods.length; i2++) { + var method = methods[i2]; + var original = obj[method]; + obj[method] = function retryWrapper(original2) { + var op = exports.operation(options); + var args = Array.prototype.slice.call(arguments, 1); + var callback = args.pop(); + args.push(function(err) { + if (op.retry(err)) { + return; + } + if (err) { + arguments[0] = op.mainError(); + } + callback.apply(this, arguments); + }); + op.attempt(function() { + original2.apply(obj, args); + }); + }.bind(obj, original); + obj[method].options = options; + } + }; + } +}); // -function toCommandValue(input) { - if (input === null || input === void 0) { - return ""; - } else if (typeof input === "string" || input instanceof String) { - return input; - } - return JSON.stringify(input); -} -function toCommandProperties(annotationProperties) { - if (!Object.keys(annotationProperties).length) { - return {}; +var require_retry3 = __commonJS({ + ""(exports, module) { + module.exports = require_retry2(); } - return { - title: annotationProperties.title, - file: annotationProperties.file, - line: annotationProperties.startLine, - endLine: annotationProperties.endLine, - col: annotationProperties.startColumn, - endColumn: annotationProperties.endColumn - }; -} +}); // -function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); -} -function issue(name, message = "") { - issueCommand(name, {}, message); -} -var CMD_STRING = "::"; -var Command = class { - constructor(command, properties, message) { - if (!command) { - command = "missing.command"; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += " "; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } else { - cmdStr += ","; +var require_p_retry = __commonJS({ + ""(exports, module) { + "use strict"; + var retry = require_retry3(); + var networkErrorMsgs = [ + "Failed to fetch", + // Chrome + "NetworkError when attempting to fetch resource.", + // Firefox + "The Internet connection appears to be offline.", + // Safari + "Network request failed" + // `cross-fetch` + ]; + var AbortError3 = class extends Error { + constructor(message) { + super(); + if (message instanceof Error) { + this.originalError = message; + ({ message } = message); + } else { + this.originalError = new Error(message); + this.originalError.stack = this.stack; + } + this.name = "AbortError"; + this.message = message; + } + }; + var decorateErrorWithCounts = (error2, attemptNumber, options) => { + const retriesLeft = options.retries - (attemptNumber - 1); + error2.attemptNumber = attemptNumber; + error2.retriesLeft = retriesLeft; + return error2; + }; + var isNetworkError = (errorMessage) => networkErrorMsgs.includes(errorMessage); + var pRetry2 = (input, options) => new Promise((resolve2, reject) => { + options = { + onFailedAttempt: () => { + }, + retries: 10, + ...options + }; + const operation = retry.operation(options); + operation.attempt(async (attemptNumber) => { + try { + resolve2(await input(attemptNumber)); + } catch (error2) { + if (!(error2 instanceof Error)) { + reject(new TypeError(`Non-error was thrown: "${error2}". You should only throw errors.`)); + return; + } + if (error2 instanceof AbortError3) { + operation.stop(); + reject(error2.originalError); + } else if (error2 instanceof TypeError && !isNetworkError(error2.message)) { + operation.stop(); + reject(error2); + } else { + decorateErrorWithCounts(error2, attemptNumber, options); + try { + await options.onFailedAttempt(error2); + } catch (error3) { + reject(error3); + return; + } + if (!operation.retry(error2)) { + reject(operation.mainError()); } - cmdStr += `${key}=${escapeProperty(val)}`; } } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; + }); + }); + module.exports = pRetry2; + module.exports.default = pRetry2; + module.exports.AbortError = AbortError3; } -}; -function escapeData(s) { - return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); -} -function escapeProperty(s) { - return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C"); -} +}); // -import * as crypto from "crypto"; -import * as fs from "fs"; -import * as os2 from "os"; -function issueFileCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${toCommandValue(message)}${os2.EOL}`, { - encoding: "utf8" - }); -} -function prepareKeyValueMessage(key, value) { - const delimiter3 = `ghadelimiter_${crypto.randomUUID()}`; - const convertedValue = toCommandValue(value); - if (key.includes(delimiter3)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter3}"`); - } - if (convertedValue.includes(delimiter3)) { - throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter3}"`); +var require_extend = __commonJS({ + ""(exports, module) { + "use strict"; + var hasOwn2 = Object.prototype.hasOwnProperty; + var toStr = Object.prototype.toString; + var defineProperty = Object.defineProperty; + var gOPD = Object.getOwnPropertyDescriptor; + var isArray2 = function isArray3(arr) { + if (typeof Array.isArray === "function") { + return Array.isArray(arr); + } + return toStr.call(arr) === "[object Array]"; + }; + var isPlainObject3 = function isPlainObject4(obj) { + if (!obj || toStr.call(obj) !== "[object Object]") { + return false; + } + var hasOwnConstructor = hasOwn2.call(obj, "constructor"); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn2.call(obj.constructor.prototype, "isPrototypeOf"); + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + var key; + for (key in obj) { + } + return typeof key === "undefined" || hasOwn2.call(obj, key); + }; + var setProperty = function setProperty2(target, options) { + if (defineProperty && options.name === "__proto__") { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } + }; + var getProperty = function getProperty2(obj, name) { + if (name === "__proto__") { + if (!hasOwn2.call(obj, name)) { + return void 0; + } else if (gOPD) { + return gOPD(obj, name).value; + } + } + return obj[name]; + }; + module.exports = function extend() { + var options, name, src, copy, copyIsArray, clone2; + var target = arguments[0]; + var i2 = 1; + var length = arguments.length; + var deep = false; + if (typeof target === "boolean") { + deep = target; + target = arguments[1] || {}; + i2 = 2; + } + if (target == null || typeof target !== "object" && typeof target !== "function") { + target = {}; + } + for (; i2 < length; ++i2) { + options = arguments[i2]; + if (options != null) { + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + if (target !== copy) { + if (deep && copy && (isPlainObject3(copy) || (copyIsArray = isArray2(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone2 = src && isArray2(src) ? src : []; + } else { + clone2 = src && isPlainObject3(src) ? src : {}; + } + setProperty(target, { name, newValue: extend(deep, clone2, copy) }); + } else if (typeof copy !== "undefined") { + setProperty(target, { name, newValue: copy }); + } + } + } + } + } + return target; + }; } - return `${key}<<${delimiter3}${os2.EOL}${convertedValue}${os2.EOL}${delimiter3}`; -} +}); // -import * as os5 from "os"; -import * as path5 from "path"; +var require_package = __commonJS({ + ""(exports, module) { + module.exports = { + name: "gaxios", + version: "7.1.3", + description: "A simple common HTTP client specifically for Google APIs and services.", + main: "build/cjs/src/index.js", + types: "build/cjs/src/index.d.ts", + files: [ + "build/" + ], + exports: { + ".": { + import: { + types: "./build/esm/src/index.d.ts", + default: "./build/esm/src/index.js" + }, + require: { + types: "./build/cjs/src/index.d.ts", + default: "./build/cjs/src/index.js" + } + } + }, + scripts: { + lint: "gts check --no-inline-config", + test: "c8 mocha build/esm/test", + "presystem-test": "npm run compile", + "system-test": "mocha build/esm/system-test --timeout 80000", + compile: "tsc -b ./tsconfig.json ./tsconfig.cjs.json && node utils/enable-esm.mjs", + fix: "gts fix", + prepare: "npm run compile", + pretest: "npm run compile", + webpack: "webpack", + "prebrowser-test": "npm run compile", + "browser-test": "node build/browser-test/browser-test-runner.js", + docs: "jsdoc -c .jsdoc.js", + "docs-test": "linkinator docs", + "predocs-test": "npm run docs", + "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", + prelint: "cd samples; npm link ../; npm install", + clean: "gts clean" + }, + repository: { + type: "git", + directory: "packages/gaxios", + url: "https://github.com/googleapis/google-cloud-node-core.git" + }, + keywords: [ + "google" + ], + engines: { + node: ">=18" + }, + author: "Google, LLC", + license: "Apache-2.0", + devDependencies: { + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@types/cors": "^2.8.6", + "@types/express": "^5.0.0", + "@types/extend": "^3.0.1", + "@types/mocha": "^10.0.10", + "@types/multiparty": "4.2.1", + "@types/mv": "^2.1.0", + "@types/ncp": "^2.0.1", + "@types/node": "^22.0.0", + "@types/sinon": "^17.0.0", + "@types/tmp": "0.2.6", + assert: "^2.0.0", + browserify: "^17.0.0", + c8: "^10.0.0", + cors: "^2.8.5", + express: "^5.0.0", + gts: "^6.0.0", + "is-docker": "^3.0.0", + jsdoc: "^4.0.0", + "jsdoc-fresh": "^5.0.0", + "jsdoc-region-tag": "^4.0.0", + karma: "^6.0.0", + "karma-chrome-launcher": "^3.0.0", + "karma-coverage": "^2.0.0", + "karma-firefox-launcher": "^2.0.0", + "karma-mocha": "^2.0.0", + "karma-remap-coverage": "^0.1.5", + "karma-sourcemap-loader": "^0.4.0", + "karma-webpack": "^5.0.1", + linkinator: "^6.1.2", + mocha: "^11.1.0", + multiparty: "^4.2.1", + mv: "^2.1.1", + ncp: "^2.0.0", + nock: "^14.0.0-beta.13", + "null-loader": "^4.0.0", + "pack-n-play": "^4.0.0", + puppeteer: "^24.0.0", + sinon: "^21.0.0", + "stream-browserify": "^3.0.0", + tmp: "0.2.5", + "ts-loader": "^9.5.2", + typescript: "^5.8.3", + webpack: "^5.35.0", + "webpack-cli": "^6.0.1" + }, + dependencies: { + extend: "^3.0.2", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.2", + rimraf: "^5.0.1" + }, + homepage: "https://github.com/googleapis/google-cloud-node-core/tree/main/packages/gaxios" + }; + } +}); // -import * as http from "http"; -import * as https from "https"; +var require_util9 = __commonJS({ + ""(exports, module) { + "use strict"; + var pkg = require_package(); + module.exports = { pkg }; + } +}); // -function getProxyUrl(reqUrl) { - const usingSsl = reqUrl.protocol === "https:"; - if (checkBypass(reqUrl)) { - return void 0; - } - const proxyVar = (() => { - if (usingSsl) { - return process.env["https_proxy"] || process.env["HTTPS_PROXY"]; - } else { - return process.env["http_proxy"] || process.env["HTTP_PROXY"]; +var require_common = __commonJS({ + ""(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GaxiosError = exports.GAXIOS_ERROR_SYMBOL = void 0; + exports.defaultErrorRedactor = defaultErrorRedactor; + var extend_1 = __importDefault(require_extend()); + var util_cjs_1 = __importDefault(require_util9()); + var pkg = util_cjs_1.default.pkg; + exports.GAXIOS_ERROR_SYMBOL = Symbol.for(`${pkg.name}-gaxios-error`); + var GaxiosError = class _GaxiosError extends Error { + config; + response; + /** + * An error code. + * Can be a system error code, DOMException error name, or any error's 'code' property where it is a `string`. + * + * It is only a `number` when the cause is sourced from an API-level error (AIP-193). + * + * @see {@link https://nodejs.org/api/errors.html#errorcode error.code} + * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/DOMException#error_names DOMException#error_names} + * @see {@link https://google.aip.dev/193#http11json-representation AIP-193} + * + * @example + * 'ECONNRESET' + * + * @example + * 'TimeoutError' + * + * @example + * 500 + */ + code; + /** + * An HTTP Status code. + * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Response/status Response#status} + * + * @example + * 500 + */ + status; + /** + * @deprecated use {@link GaxiosError.cause} instead. + * + * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause Error#cause} + * + * @privateRemarks + * + * We will want to remove this property later as the modern `cause` property is better suited + * for displaying and relaying nested errors. Keeping this here makes the resulting + * error log larger than it needs to be. + * + */ + error; + /** + * Support `instanceof` operator for `GaxiosError` across builds/duplicated files. + * + * @see {@link GAXIOS_ERROR_SYMBOL} + * @see {@link GaxiosError[Symbol.hasInstance]} + * @see {@link https://github.com/microsoft/TypeScript/issues/13965#issuecomment-278570200} + * @see {@link https://stackoverflow.com/questions/46618852/require-and-instanceof} + * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/@@hasInstance#reverting_to_default_instanceof_behavior} + */ + [exports.GAXIOS_ERROR_SYMBOL] = pkg.version; + /** + * Support `instanceof` operator for `GaxiosError` across builds/duplicated files. + * + * @see {@link GAXIOS_ERROR_SYMBOL} + * @see {@link GaxiosError[GAXIOS_ERROR_SYMBOL]} + */ + static [Symbol.hasInstance](instance) { + if (instance && typeof instance === "object" && exports.GAXIOS_ERROR_SYMBOL in instance && instance[exports.GAXIOS_ERROR_SYMBOL] === pkg.version) { + return true; + } + return Function.prototype[Symbol.hasInstance].call(_GaxiosError, instance); + } + constructor(message, config, response, cause) { + super(message, { cause }); + this.config = config; + this.response = response; + this.error = cause instanceof Error ? cause : void 0; + this.config = (0, extend_1.default)(true, {}, config); + if (this.response) { + this.response.config = (0, extend_1.default)(true, {}, this.response.config); + } + if (this.response) { + try { + this.response.data = translateData( + this.config.responseType, + // workaround for `node-fetch`'s `.data` deprecation... + this.response?.bodyUsed ? this.response?.data : void 0 + ); + } catch { + } + this.status = this.response.status; + } + if (cause instanceof DOMException) { + this.code = cause.name; + } else if (cause && typeof cause === "object" && "code" in cause && (typeof cause.code === "string" || typeof cause.code === "number")) { + this.code = cause.code; + } + } + /** + * An AIP-193 conforming error extractor. + * + * @see {@link https://google.aip.dev/193#http11json-representation AIP-193} + * + * @internal + * @expiremental + * + * @param res the response object + * @returns the extracted error information + */ + static extractAPIErrorFromResponse(res, defaultErrorMessage = "The request failed") { + let message = defaultErrorMessage; + if (typeof res.data === "string") { + message = res.data; + } + if (res.data && typeof res.data === "object" && "error" in res.data && res.data.error && !res.ok) { + if (typeof res.data.error === "string") { + return { + message: res.data.error, + code: res.status, + status: res.statusText + }; + } + if (typeof res.data.error === "object") { + message = "message" in res.data.error && typeof res.data.error.message === "string" ? res.data.error.message : message; + const status = "status" in res.data.error && typeof res.data.error.status === "string" ? res.data.error.status : res.statusText; + const code = "code" in res.data.error && typeof res.data.error.code === "number" ? res.data.error.code : res.status; + if ("errors" in res.data.error && Array.isArray(res.data.error.errors)) { + const errorMessages = []; + for (const e2 of res.data.error.errors) { + if (typeof e2 === "object" && "message" in e2 && typeof e2.message === "string") { + errorMessages.push(e2.message); + } + } + return Object.assign({ + message: errorMessages.join("\n") || message, + code, + status + }, res.data.error); + } + return Object.assign({ + message, + code, + status + }, res.data.error); + } + } + return { + message, + code: res.status, + status: res.statusText + }; + } + }; + exports.GaxiosError = GaxiosError; + function translateData(responseType, data) { + switch (responseType) { + case "stream": + return data; + case "json": + return JSON.parse(JSON.stringify(data)); + case "arraybuffer": + return JSON.parse(Buffer.from(data).toString("utf8")); + case "blob": + return JSON.parse(data.text()); + default: + return data; + } } - })(); - if (proxyVar) { - try { - return new DecodedURL(proxyVar); - } catch (_a2) { - if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://")) - return new DecodedURL(`http://${proxyVar}`); + function defaultErrorRedactor(data) { + const REDACT = "< - See `errorRedactor` option in `gaxios` for configuration>."; + function redactHeaders(headers) { + if (!headers) + return; + headers.forEach((_, key) => { + if (/^authentication$/i.test(key) || /^authorization$/i.test(key) || /secret/i.test(key)) + headers.set(key, REDACT); + }); + } + function redactString(obj, key) { + if (typeof obj === "object" && obj !== null && typeof obj[key] === "string") { + const text = obj[key]; + if (/grant_type=/i.test(text) || /assertion=/i.test(text) || /secret/i.test(text)) { + obj[key] = REDACT; + } + } + } + function redactObject(obj) { + if (!obj || typeof obj !== "object") { + return; + } else if (obj instanceof FormData || obj instanceof URLSearchParams || // support `node-fetch` FormData/URLSearchParams + "forEach" in obj && "set" in obj) { + obj.forEach((_, key) => { + if (["grant_type", "assertion"].includes(key) || /secret/.test(key)) { + obj.set(key, REDACT); + } + }); + } else { + if ("grant_type" in obj) { + obj["grant_type"] = REDACT; + } + if ("assertion" in obj) { + obj["assertion"] = REDACT; + } + if ("client_secret" in obj) { + obj["client_secret"] = REDACT; + } + } + } + if (data.config) { + redactHeaders(data.config.headers); + redactString(data.config, "data"); + redactObject(data.config.data); + redactString(data.config, "body"); + redactObject(data.config.body); + if (data.config.url.searchParams.has("token")) { + data.config.url.searchParams.set("token", REDACT); + } + if (data.config.url.searchParams.has("client_secret")) { + data.config.url.searchParams.set("client_secret", REDACT); + } + } + if (data.response) { + defaultErrorRedactor({ config: data.response.config }); + redactHeaders(data.response.headers); + if (data.response.bodyUsed) { + redactString(data.response, "data"); + redactObject(data.response.data); + } + } + return data; } - } else { - return void 0; - } -} -function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - const reqHost = reqUrl.hostname; - if (isLoopbackAddress(reqHost)) { - return true; - } - const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ""; - if (!noProxy) { - return false; - } - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } else if (reqUrl.protocol === "http:") { - reqPort = 80; - } else if (reqUrl.protocol === "https:") { - reqPort = 443; - } - const upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === "number") { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); } - for (const upperNoProxyItem of noProxy.split(",").map((x) => x.trim().toUpperCase()).filter((x) => x)) { - if (upperNoProxyItem === "*" || upperReqHosts.some((x) => x === upperNoProxyItem || x.endsWith(`.${upperNoProxyItem}`) || upperNoProxyItem.startsWith(".") && x.endsWith(`${upperNoProxyItem}`))) { +}); + +// +var require_retry4 = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getRetryConfig = getRetryConfig; + async function getRetryConfig(err) { + let config = getConfig(err); + if (!err || !err.config || !config && !err.config.retry) { + return { shouldRetry: false }; + } + config = config || {}; + config.currentRetryAttempt = config.currentRetryAttempt || 0; + config.retry = config.retry === void 0 || config.retry === null ? 3 : config.retry; + config.httpMethodsToRetry = config.httpMethodsToRetry || [ + "GET", + "HEAD", + "PUT", + "OPTIONS", + "DELETE" + ]; + config.noResponseRetries = config.noResponseRetries === void 0 || config.noResponseRetries === null ? 2 : config.noResponseRetries; + config.retryDelayMultiplier = config.retryDelayMultiplier ? config.retryDelayMultiplier : 2; + config.timeOfFirstRequest = config.timeOfFirstRequest ? config.timeOfFirstRequest : Date.now(); + config.totalTimeout = config.totalTimeout ? config.totalTimeout : Number.MAX_SAFE_INTEGER; + config.maxRetryDelay = config.maxRetryDelay ? config.maxRetryDelay : Number.MAX_SAFE_INTEGER; + const retryRanges = [ + // https://en.wikipedia.org/wiki/List_of_HTTP_status_codes + // 1xx - Retry (Informational, request still processing) + // 2xx - Do not retry (Success) + // 3xx - Do not retry (Redirect) + // 4xx - Do not retry (Client errors) + // 408 - Retry ("Request Timeout") + // 429 - Retry ("Too Many Requests") + // 5xx - Retry (Server errors) + [100, 199], + [408, 408], + [429, 429], + [500, 599] + ]; + config.statusCodesToRetry = config.statusCodesToRetry || retryRanges; + err.config.retryConfig = config; + const shouldRetryFn = config.shouldRetry || shouldRetryRequest; + if (!await shouldRetryFn(err)) { + return { shouldRetry: false, config: err.config }; + } + const delay = getNextRetryDelay(config); + err.config.retryConfig.currentRetryAttempt += 1; + const backoff = config.retryBackoff ? config.retryBackoff(err, delay) : new Promise((resolve2) => { + setTimeout(resolve2, delay); + }); + if (config.onRetryAttempt) { + await config.onRetryAttempt(err); + } + await backoff; + return { shouldRetry: true, config: err.config }; + } + function shouldRetryRequest(err) { + const config = getConfig(err); + if (err.config.signal?.aborted && err.code !== "TimeoutError" || err.code === "AbortError") { + return false; + } + if (!config || config.retry === 0) { + return false; + } + if (!err.response && (config.currentRetryAttempt || 0) >= config.noResponseRetries) { + return false; + } + if (!config.httpMethodsToRetry || !config.httpMethodsToRetry.includes(err.config.method?.toUpperCase() || "GET")) { + return false; + } + if (err.response && err.response.status) { + let isInRange = false; + for (const [min, max] of config.statusCodesToRetry) { + const status = err.response.status; + if (status >= min && status <= max) { + isInRange = true; + break; + } + } + if (!isInRange) { + return false; + } + } + config.currentRetryAttempt = config.currentRetryAttempt || 0; + if (config.currentRetryAttempt >= config.retry) { + return false; + } return true; } + function getConfig(err) { + if (err && err.config && err.config.retryConfig) { + return err.config.retryConfig; + } + return; + } + function getNextRetryDelay(config) { + const retryDelay = config.currentRetryAttempt ? 0 : config.retryDelay ?? 100; + const calculatedDelay = retryDelay + (Math.pow(config.retryDelayMultiplier, config.currentRetryAttempt) - 1) / 2 * 1e3; + const maxAllowableDelay = config.totalTimeout - (Date.now() - config.timeOfFirstRequest); + return Math.min(calculatedDelay, maxAllowableDelay, config.maxRetryDelay); + } } - return false; -} -function isLoopbackAddress(host) { - const hostLower = host.toLowerCase(); - return hostLower === "localhost" || hostLower.startsWith("127.") || hostLower.startsWith("[::1]") || hostLower.startsWith("[0:0:0:0:0:0:0:1]"); -} -var DecodedURL = class extends URL { - constructor(url, base) { - super(url, base); - this._decodedUsername = decodeURIComponent(super.username); - this._decodedPassword = decodeURIComponent(super.password); - } - get username() { - return this._decodedUsername; - } - get password() { - return this._decodedPassword; - } -}; +}); // -var tunnel = __toESM(require_tunnel2()); -var import_undici = __toESM(require_undici()); -var __awaiter = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); +var require_interceptor = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GaxiosInterceptorManager = void 0; + var GaxiosInterceptorManager = class extends Set { + }; + exports.GaxiosInterceptorManager = GaxiosInterceptorManager; } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); +}); + +// +var require_ms = __commonJS({ + ""(exports, module) { + var s2 = 1e3; + var m2 = s2 * 60; + var h2 = m2 * 60; + var d = h2 * 24; + var w = d * 7; + var y = d * 365.25; + module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse2(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); + }; + function parse2(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h2; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m2; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s2; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; } } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h2) { + return Math.round(ms / h2) + "h"; } + if (msAbs >= m2) { + return Math.round(ms / m2) + "m"; + } + if (msAbs >= s2) { + return Math.round(ms / s2) + "s"; + } + return ms + "ms"; } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h2) { + return plural(ms, msAbs, h2, "hour"); + } + if (msAbs >= m2) { + return plural(ms, msAbs, m2, "minute"); + } + if (msAbs >= s2) { + return plural(ms, msAbs, s2, "second"); + } + return ms + " ms"; + } + function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var HttpCodes; -(function(HttpCodes2) { - HttpCodes2[HttpCodes2["OK"] = 200] = "OK"; - HttpCodes2[HttpCodes2["MultipleChoices"] = 300] = "MultipleChoices"; - HttpCodes2[HttpCodes2["MovedPermanently"] = 301] = "MovedPermanently"; - HttpCodes2[HttpCodes2["ResourceMoved"] = 302] = "ResourceMoved"; - HttpCodes2[HttpCodes2["SeeOther"] = 303] = "SeeOther"; - HttpCodes2[HttpCodes2["NotModified"] = 304] = "NotModified"; - HttpCodes2[HttpCodes2["UseProxy"] = 305] = "UseProxy"; - HttpCodes2[HttpCodes2["SwitchProxy"] = 306] = "SwitchProxy"; - HttpCodes2[HttpCodes2["TemporaryRedirect"] = 307] = "TemporaryRedirect"; - HttpCodes2[HttpCodes2["PermanentRedirect"] = 308] = "PermanentRedirect"; - HttpCodes2[HttpCodes2["BadRequest"] = 400] = "BadRequest"; - HttpCodes2[HttpCodes2["Unauthorized"] = 401] = "Unauthorized"; - HttpCodes2[HttpCodes2["PaymentRequired"] = 402] = "PaymentRequired"; - HttpCodes2[HttpCodes2["Forbidden"] = 403] = "Forbidden"; - HttpCodes2[HttpCodes2["NotFound"] = 404] = "NotFound"; - HttpCodes2[HttpCodes2["MethodNotAllowed"] = 405] = "MethodNotAllowed"; - HttpCodes2[HttpCodes2["NotAcceptable"] = 406] = "NotAcceptable"; - HttpCodes2[HttpCodes2["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; - HttpCodes2[HttpCodes2["RequestTimeout"] = 408] = "RequestTimeout"; - HttpCodes2[HttpCodes2["Conflict"] = 409] = "Conflict"; - HttpCodes2[HttpCodes2["Gone"] = 410] = "Gone"; - HttpCodes2[HttpCodes2["TooManyRequests"] = 429] = "TooManyRequests"; - HttpCodes2[HttpCodes2["InternalServerError"] = 500] = "InternalServerError"; - HttpCodes2[HttpCodes2["NotImplemented"] = 501] = "NotImplemented"; - HttpCodes2[HttpCodes2["BadGateway"] = 502] = "BadGateway"; - HttpCodes2[HttpCodes2["ServiceUnavailable"] = 503] = "ServiceUnavailable"; - HttpCodes2[HttpCodes2["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes || (HttpCodes = {})); -var Headers2; -(function(Headers3) { - Headers3["Accept"] = "accept"; - Headers3["ContentType"] = "content-type"; -})(Headers2 || (Headers2 = {})); -var MediaTypes; -(function(MediaTypes2) { - MediaTypes2["ApplicationJson"] = "application/json"; -})(MediaTypes || (MediaTypes = {})); -var HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect -]; -var HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout -]; -var RetryableHttpVerbs = ["OPTIONS", "GET", "DELETE", "HEAD"]; -var ExponentialBackoffCeiling = 10; -var ExponentialBackoffTimeSlice = 5; -var HttpClientError = class _HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = "HttpClientError"; - this.statusCode = statusCode; - Object.setPrototypeOf(this, _HttpClientError.prototype); - } -}; -var HttpClientResponse = class { - constructor(message) { - this.message = message; - } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve2) => __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on("data", (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on("end", () => { - resolve2(output.toString()); - }); - })); - }); } - readBodyBuffer() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve2) => __awaiter(this, void 0, void 0, function* () { - const chunks = []; - this.message.on("data", (chunk) => { - chunks.push(chunk); - }); - this.message.on("end", () => { - resolve2(Buffer.concat(chunks)); +}); + +// +var require_common2 = __commonJS({ + ""(exports, module) { + function setup(env2) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require_ms(); + createDebug.destroy = destroy; + Object.keys(env2).forEach((key) => { + createDebug[key] = env2[key]; + }); + createDebug.names = []; + createDebug.skips = []; + createDebug.formatters = {}; + function selectColor(namespace) { + let hash = 0; + for (let i2 = 0; i2 < namespace.length; i2++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i2); + hash |= 0; + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + function debug2(...args) { + if (!debug2.enabled) { + return; + } + const self2 = debug2; + const curr = Number(/* @__PURE__ */ new Date()); + const ms = curr - (prevTime || curr); + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + if (match === "%%") { + return "%"; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === "function") { + const val = args[index]; + match = formatter.call(self2, val); + args.splice(index, 1); + index--; + } + return match; + }); + createDebug.formatArgs.call(self2, args); + const logFn = self2.log || createDebug.log; + logFn.apply(self2, args); + } + debug2.namespace = namespace; + debug2.useColors = createDebug.useColors(); + debug2.color = createDebug.selectColor(namespace); + debug2.extend = extend; + debug2.destroy = createDebug.destroy; + Object.defineProperty(debug2, "enabled", { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: (v) => { + enableOverride = v; + } }); - })); - }); + if (typeof createDebug.init === "function") { + createDebug.init(debug2); + } + return debug2; + } + function extend(namespace, delimiter3) { + const newDebug = createDebug(this.namespace + (typeof delimiter3 === "undefined" ? ":" : delimiter3) + namespace); + newDebug.log = this.log; + return newDebug; + } + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); + for (const ns of split) { + if (ns[0] === "-") { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { + if (template[templateIndex] === "*") { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; + } + } + while (templateIndex < template.length && template[templateIndex] === "*") { + templateIndex++; + } + return templateIndex === template.length; + } + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map((namespace) => "-" + namespace) + ].join(","); + createDebug.enable(""); + return namespaces; + } + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } + return false; + } + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + function destroy() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + createDebug.enable(createDebug.load()); + return createDebug; + } + module.exports = setup; } -}; -var HttpClient = class { - constructor(userAgent2, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = this._getUserAgentWithOrchestrationId(userAgent2); - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; +}); + +// +var require_browser = __commonJS({ + ""(exports, module) { + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = localstorage(); + exports.destroy = /* @__PURE__ */ (() => { + let warned = false; + return () => { + if (!warned) { + warned = true; + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + }; + })(); + exports.colors = [ + "#0000CC", + "#0000FF", + "#0033CC", + "#0033FF", + "#0066CC", + "#0066FF", + "#0099CC", + "#0099FF", + "#00CC00", + "#00CC33", + "#00CC66", + "#00CC99", + "#00CCCC", + "#00CCFF", + "#3300CC", + "#3300FF", + "#3333CC", + "#3333FF", + "#3366CC", + "#3366FF", + "#3399CC", + "#3399FF", + "#33CC00", + "#33CC33", + "#33CC66", + "#33CC99", + "#33CCCC", + "#33CCFF", + "#6600CC", + "#6600FF", + "#6633CC", + "#6633FF", + "#66CC00", + "#66CC33", + "#9900CC", + "#9900FF", + "#9933CC", + "#9933FF", + "#99CC00", + "#99CC33", + "#CC0000", + "#CC0033", + "#CC0066", + "#CC0099", + "#CC00CC", + "#CC00FF", + "#CC3300", + "#CC3333", + "#CC3366", + "#CC3399", + "#CC33CC", + "#CC33FF", + "#CC6600", + "#CC6633", + "#CC9900", + "#CC9933", + "#CCCC00", + "#CCCC33", + "#FF0000", + "#FF0033", + "#FF0066", + "#FF0099", + "#FF00CC", + "#FF00FF", + "#FF3300", + "#FF3333", + "#FF3366", + "#FF3399", + "#FF33CC", + "#FF33FF", + "#FF6600", + "#FF6633", + "#FF9900", + "#FF9933", + "#FFCC00", + "#FFCC33" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { + return true; } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; + if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + let m2; + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && (m2 = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m2[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function formatArgs(args) { + args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff); + if (!this.useColors) { + return; } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + const c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, (match) => { + if (match === "%%") { + return; + } + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + exports.log = console.debug || console.log || (() => { + }); + function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem("debug", namespaces); + } else { + exports.storage.removeItem("debug"); + } + } catch (error2) { } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; + } + function load() { + let r2; + try { + r2 = exports.storage.getItem("debug") || exports.storage.getItem("DEBUG"); + } catch (error2) { } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; + if (!r2 && typeof process !== "undefined" && "env" in process) { + r2 = process.env.DEBUG; } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; + return r2; + } + function localstorage() { + try { + return localStorage; + } catch (error2) { } } + module.exports = require_common2()(exports); + var { formatters } = module.exports; + formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (error2) { + return "[UnexpectedJSONParseError]: " + error2.message; + } + }; } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("OPTIONS", requestUrl, null, additionalHeaders || {}); - }); +}); + +// +var supports_color_exports = {}; +__export(supports_color_exports, { + createSupportsColor: () => createSupportsColor, + default: () => supports_color_default +}); +import process2 from "node:process"; +import os6 from "node:os"; +import tty from "node:tty"; +function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) { + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf("--"); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +} +function envForceColor() { + if (!("FORCE_COLOR" in env)) { + return; } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("GET", requestUrl, null, additionalHeaders || {}); - }); + if (env.FORCE_COLOR === "true") { + return 1; } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("DELETE", requestUrl, null, additionalHeaders || {}); - }); + if (env.FORCE_COLOR === "false") { + return 0; } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("POST", requestUrl, data, additionalHeaders || {}); - }); + if (env.FORCE_COLOR.length === 0) { + return 1; } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("PATCH", requestUrl, data, additionalHeaders || {}); - }); + const level = Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + if (![0, 1, 2, 3].includes(level)) { + return; } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("PUT", requestUrl, data, additionalHeaders || {}); - }); + return level; +} +function translateLevel(level) { + if (level === 0) { + return false; } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("HEAD", requestUrl, null, additionalHeaders || {}); - }); + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} +function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) { + const noFlagForceColor = envForceColor(); + if (noFlagForceColor !== void 0) { + flagForceColor = noFlagForceColor; } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); + const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; + if (forceColor === 0) { + return 0; } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - getJson(requestUrl_1) { - return __awaiter(this, arguments, void 0, function* (requestUrl, additionalHeaders = {}) { - additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + if (sniffFlags) { + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } } - postJson(requestUrl_1, obj_1) { - return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + if ("TF_BUILD" in env && "AGENT_NAME" in env) { + return 1; } - putJson(requestUrl_1, obj_1) { - return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + if (haveStream && !streamIsTTY && forceColor === void 0) { + return 0; } - patchJson(requestUrl_1, obj_1) { - return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + const min = forceColor || 0; + if (env.TERM === "dumb") { + return min; } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error("Client has already been disposed."); + if (process2.platform === "win32") { + const osRelease = os6.release().split("."); + if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) { + return 3; + } + if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if (env.TERM === "xterm-kitty") { + return 3; + } + if (env.TERM === "xterm-ghostty") { + return 3; + } + if (env.TERM === "wezterm") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": { + return version >= 3 ? 3 : 2; + } + case "Apple_Terminal": { + return 2; } - const parsedUrl = new URL(requestUrl); - let info2 = this._prepareRequest(verb, parsedUrl, headers); - const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info2, data); - if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (const handler2 of this.handlers) { - if (handler2.canHandleAuthentication(response)) { - authenticationHandler = handler2; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info2, data); - } else { - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while (response.message.statusCode && HttpRedirectCodes.includes(response.message.statusCode) && this._allowRedirects && redirectsRemaining > 0) { - const redirectUrl = response.message.headers["location"]; - if (!redirectUrl) { - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if (parsedUrl.protocol === "https:" && parsedUrl.protocol !== parsedRedirectUrl.protocol && !this._allowRedirectDowngrade) { - throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true."); - } - yield response.readBody(); - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - if (header.toLowerCase() === "authorization") { - delete headers[header]; - } - } - } - info2 = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info2, data); - redirectsRemaining--; - } - if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); - } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); } - this._disposed = true; } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info2, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve2, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } else if (!res) { - reject(new Error("Unknown error")); - } else { - resolve2(res); - } - } - this.requestRawWithCallback(info2, data, callbackForResult); - }); - }); + if (/-256(color)?$/i.test(env.TERM)) { + return 2; } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info2, data, onResult) { - if (typeof data === "string") { - if (!info2.options.headers) { - info2.options.headers = {}; + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + return min; +} +function createSupportsColor(stream, options = {}) { + const level = _supportsColor(stream, { + streamIsTTY: stream && stream.isTTY, + ...options + }); + return translateLevel(level); +} +var env, flagForceColor, supportsColor, supports_color_default; +var init_supports_color = __esm({ + ""() { + ({ env } = process2); + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { + flagForceColor = 0; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + flagForceColor = 1; + } + supportsColor = { + stdout: createSupportsColor({ isTTY: tty.isatty(1) }), + stderr: createSupportsColor({ isTTY: tty.isatty(2) }) + }; + supports_color_default = supportsColor; + } +}); + +// +var require_node = __commonJS({ + ""(exports, module) { + var tty2 = __require("tty"); + var util = __require("util"); + exports.init = init; + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.destroy = util.deprecate( + () => { + }, + "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." + ); + exports.colors = [6, 2, 3, 4, 5, 1]; + try { + const supportsColor2 = (init_supports_color(), __toCommonJS(supports_color_exports)); + if (supportsColor2 && (supportsColor2.stderr || supportsColor2).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; } - info2.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8"); + } catch (error2) { } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); + exports.inspectOpts = Object.keys(process.env).filter((key) => { + return /^debug_/i.test(key); + }).reduce((obj, key) => { + const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === "null") { + val = null; + } else { + val = Number(val); + } + obj[prop] = val; + return obj; + }, {}); + function useColors() { + return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty2.isatty(process.stderr.fd); + } + function formatArgs(args) { + const { namespace: name, useColors: useColors2 } = this; + if (useColors2) { + const c = this.color; + const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); + const prefix = ` ${colorCode};1m${name} \x1B[0m`; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push(colorCode + "m+" + module.exports.humanize(this.diff) + "\x1B[0m"); + } else { + args[0] = getDate() + name + " " + args[0]; } } - const req = info2.httpModule.request(info2.options, (msg) => { - const res = new HttpClientResponse(msg); - handleResult(void 0, res); - }); - let socket; - req.on("socket", (sock) => { - socket = sock; - }); - req.setTimeout(this._socketTimeout || 3 * 6e4, () => { - if (socket) { - socket.end(); + function getDate() { + if (exports.inspectOpts.hideDate) { + return ""; } - handleResult(new Error(`Request timeout: ${info2.options.path}`)); - }); - req.on("error", function(err) { - handleResult(err); - }); - if (data && typeof data === "string") { - req.write(data, "utf8"); + return (/* @__PURE__ */ new Date()).toISOString() + " "; } - if (data && typeof data !== "string") { - data.on("close", function() { - req.end(); - }); - data.pipe(req); - } else { - req.end(); + function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + "\n"); } - } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - getAgentDispatcher(serverUrl) { - const parsedUrl = new URL(serverUrl); - const proxyUrl = getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (!useProxy) { - return; + function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + delete process.env.DEBUG; + } } - return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info2 = {}; - info2.parsedUrl = requestUrl; - const usingSsl = info2.parsedUrl.protocol === "https:"; - info2.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info2.options = {}; - info2.options.host = info2.parsedUrl.hostname; - info2.options.port = info2.parsedUrl.port ? parseInt(info2.parsedUrl.port) : defaultPort; - info2.options.path = (info2.parsedUrl.pathname || "") + (info2.parsedUrl.search || ""); - info2.options.method = method; - info2.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info2.options.headers["user-agent"] = this.userAgent; + function load() { + return process.env.DEBUG; } - info2.options.agent = this._getAgent(info2.parsedUrl); - if (this.handlers) { - for (const handler2 of this.handlers) { - handler2.prepareRequest(info2.options); + function init(debug2) { + debug2.inspectOpts = {}; + const keys = Object.keys(exports.inspectOpts); + for (let i2 = 0; i2 < keys.length; i2++) { + debug2.inspectOpts[keys[i2]] = exports.inspectOpts[keys[i2]]; } } - return info2; + module.exports = require_common2()(exports); + var { formatters } = module.exports; + formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); + }; + formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); +}); + +// +var require_src = __commonJS({ + ""(exports, module) { + if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { + module.exports = require_browser(); + } else { + module.exports = require_node(); } - return lowercaseKeys(headers || {}); } - /** - * Gets an existing header value or returns a default. - * Handles converting number header values to strings since HTTP headers must be strings. - * Note: This returns string | string[] since some headers can have multiple values. - * For headers that must always be a single string (like Content-Type), use the - * specialized _getExistingOrDefaultContentTypeHeader method instead. - */ - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - const headerValue = lowercaseKeys(this.requestOptions.headers)[header]; - if (headerValue) { - clientHeader = typeof headerValue === "number" ? headerValue.toString() : headerValue; +}); + +// +var require_helpers = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.req = exports.json = exports.toBuffer = void 0; + var http4 = __importStar(__require("http")); + var https3 = __importStar(__require("https")); + async function toBuffer(stream) { + let length = 0; + const chunks = []; + for await (const chunk of stream) { + length += chunk.length; + chunks.push(chunk); } + return Buffer.concat(chunks, length); } - const additionalValue = additionalHeaders[header]; - if (additionalValue !== void 0) { - return typeof additionalValue === "number" ? additionalValue.toString() : additionalValue; + exports.toBuffer = toBuffer; + async function json(stream) { + const buf = await toBuffer(stream); + const str = buf.toString("utf8"); + try { + return JSON.parse(str); + } catch (_err) { + const err = _err; + err.message += ` (input: ${str})`; + throw err; + } } - if (clientHeader !== void 0) { - return clientHeader; + exports.json = json; + function req(url, opts = {}) { + const href = typeof url === "string" ? url : url.href; + const req2 = (href.startsWith("https:") ? https3 : http4).request(url, opts); + const promise = new Promise((resolve2, reject) => { + req2.once("response", resolve2).once("error", reject).end(); + }); + req2.then = promise.then.bind(promise); + return req2; } - return _default; + exports.req = req; } - /** - * Specialized version of _getExistingOrDefaultHeader for Content-Type header. - * Always returns a single string (not an array) since Content-Type should be a single value. - * Converts arrays to comma-separated strings and numbers to strings to ensure type safety. - * This was split from _getExistingOrDefaultHeader to provide stricter typing for callers - * that assign the result to places expecting a string (e.g., additionalHeaders[Headers.ContentType]). - */ - _getExistingOrDefaultContentTypeHeader(additionalHeaders, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - const headerValue = lowercaseKeys(this.requestOptions.headers)[Headers2.ContentType]; - if (headerValue) { - if (typeof headerValue === "number") { - clientHeader = String(headerValue); - } else if (Array.isArray(headerValue)) { - clientHeader = headerValue.join(", "); - } else { - clientHeader = headerValue; - } - } - } - const additionalValue = additionalHeaders[Headers2.ContentType]; - if (additionalValue !== void 0) { - if (typeof additionalValue === "number") { - return String(additionalValue); - } else if (Array.isArray(additionalValue)) { - return additionalValue.join(", "); - } else { - return additionalValue; - } - } - if (clientHeader !== void 0) { - return clientHeader; - } - return _default; - } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (!useProxy) { - agent = this._agent; - } - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === "https:"; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign(Object.assign({}, (proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` - }), { host: proxyUrl.hostname, port: proxyUrl.port }) - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === "https:"; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; +}); + +// +var require_dist = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - if (!agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - if (usingSsl && this._ignoreSslError) { - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; - } - _getProxyAgentDispatcher(parsedUrl, proxyUrl) { - let proxyAgent; - if (this._keepAlive) { - proxyAgent = this._proxyAgentDispatcher; - } - if (proxyAgent) { - return proxyAgent; - } - const usingSsl = parsedUrl.protocol === "https:"; - proxyAgent = new import_undici.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, (proxyUrl.username || proxyUrl.password) && { - token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString("base64")}` - })); - this._proxyAgentDispatcher = proxyAgent; - if (usingSsl && this._ignoreSslError) { - proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { - rejectUnauthorized: false - }); - } - return proxyAgent; - } - _getUserAgentWithOrchestrationId(userAgent2) { - const baseUserAgent = userAgent2 || "actions/http-client"; - const orchId = process.env["ACTIONS_ORCHESTRATION_ID"]; - if (orchId) { - const sanitizedId = orchId.replace(/[^a-z0-9_.-]/gi, "_"); - return `${baseUserAgent} actions_orchestration_id/${sanitizedId}`; - } - return baseUserAgent; - } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise((resolve2) => setTimeout(() => resolve2(), ms)); + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; }); - } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve2, reject) => __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {} - }; - if (statusCode === HttpCodes.NotFound) { - resolve2(response); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p in m2) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m2, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Agent = void 0; + var net = __importStar(__require("net")); + var http4 = __importStar(__require("http")); + var https_1 = __require("https"); + __exportStar(require_helpers(), exports); + var INTERNAL = Symbol("AgentBaseInternalState"); + var Agent3 = class extends http4.Agent { + constructor(opts) { + super(opts); + this[INTERNAL] = {}; + } + /** + * Determine whether this is an `http` or `https` request. + */ + isSecureEndpoint(options) { + if (options) { + if (typeof options.secureEndpoint === "boolean") { + return options.secureEndpoint; + } + if (typeof options.protocol === "string") { + return options.protocol === "https:"; + } } - function dateTimeDeserializer(key, value) { - if (typeof value === "string") { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } + const { stack } = new Error(); + if (typeof stack !== "string") + return false; + return stack.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1); + } + // In order to support async signatures in `connect()` and Node's native + // connection pooling in `http.Agent`, the array of sockets for each origin + // has to be updated synchronously. This is so the length of the array is + // accurate when `addRequest()` is next called. We achieve this by creating a + // fake socket and adding it to `sockets[origin]` and incrementing + // `totalSocketCount`. + incrementSockets(name) { + if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) { + return null; + } + if (!this.sockets[name]) { + this.sockets[name] = []; + } + const fakeSocket = new net.Socket({ writable: false }); + this.sockets[name].push(fakeSocket); + this.totalSocketCount++; + return fakeSocket; + } + decrementSockets(name, socket) { + if (!this.sockets[name] || socket === null) { + return; + } + const sockets = this.sockets[name]; + const index = sockets.indexOf(socket); + if (index !== -1) { + sockets.splice(index, 1); + this.totalSocketCount--; + if (sockets.length === 0) { + delete this.sockets[name]; } - return value; } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } else { - obj = JSON.parse(contents); + } + // In order to properly update the socket pool, we need to call `getName()` on + // the core `https.Agent` if it is a secureEndpoint. + getName(options) { + const secureEndpoint = this.isSecureEndpoint(options); + if (secureEndpoint) { + return https_1.Agent.prototype.getName.call(this, options); + } + return super.getName(options); + } + createSocket(req, options, cb) { + const connectOpts = { + ...options, + secureEndpoint: this.isSecureEndpoint(options) + }; + const name = this.getName(connectOpts); + const fakeSocket = this.incrementSockets(name); + Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => { + this.decrementSockets(name, fakeSocket); + if (socket instanceof http4.Agent) { + try { + return socket.addRequest(req, connectOpts); + } catch (err) { + return cb(err); } - response.result = obj; } - response.headers = res.message.headers; - } catch (err) { + this[INTERNAL].currentSocket = socket; + super.createSocket(req, options, cb); + }, (err) => { + this.decrementSockets(name, fakeSocket); + cb(err); + }); + } + createConnection() { + const socket = this[INTERNAL].currentSocket; + this[INTERNAL].currentSocket = void 0; + if (!socket) { + throw new Error("No socket was returned in the `connect()` function"); } - if (statusCode > 299) { - let msg; - if (obj && obj.message) { - msg = obj.message; - } else if (contents && contents.length > 0) { - msg = contents; - } else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } else { - resolve2(response); + return socket; + } + get defaultPort() { + return this[INTERNAL].defaultPort ?? (this.protocol === "https:" ? 443 : 80); + } + set defaultPort(v) { + if (this[INTERNAL]) { + this[INTERNAL].defaultPort = v; } - })); - }); + } + get protocol() { + return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? "https:" : "http:"); + } + set protocol(v) { + if (this[INTERNAL]) { + this[INTERNAL].protocol = v; + } + } + }; + exports.Agent = Agent3; } -}; -var lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); +}); // -var __awaiter2 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); +var require_parse_proxy_response = __commonJS({ + ""(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseProxyResponse = void 0; + var debug_1 = __importDefault(require_src()); + var debug2 = (0, debug_1.default)("https-proxy-agent:parse-proxy-response"); + function parseProxyResponse(socket) { + return new Promise((resolve2, reject) => { + let buffersLength = 0; + const buffers = []; + function read() { + const b = socket.read(); + if (b) + ondata(b); + else + socket.once("readable", read); + } + function cleanup() { + socket.removeListener("end", onend); + socket.removeListener("error", onerror); + socket.removeListener("readable", read); + } + function onend() { + cleanup(); + debug2("onend"); + reject(new Error("Proxy connection ended before receiving CONNECT response")); + } + function onerror(err) { + cleanup(); + debug2("onerror %o", err); + reject(err); + } + function ondata(b) { + buffers.push(b); + buffersLength += b.length; + const buffered = Buffer.concat(buffers, buffersLength); + const endOfHeaders = buffered.indexOf("\r\n\r\n"); + if (endOfHeaders === -1) { + debug2("have not received end of HTTP headers yet..."); + read(); + return; + } + const headerParts = buffered.slice(0, endOfHeaders).toString("ascii").split("\r\n"); + const firstLine = headerParts.shift(); + if (!firstLine) { + socket.destroy(); + return reject(new Error("No header received from proxy CONNECT response")); + } + const firstLineParts = firstLine.split(" "); + const statusCode = +firstLineParts[1]; + const statusText = firstLineParts.slice(2).join(" "); + const headers = {}; + for (const header of headerParts) { + if (!header) + continue; + const firstColon = header.indexOf(":"); + if (firstColon === -1) { + socket.destroy(); + return reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`)); + } + const key = header.slice(0, firstColon).toLowerCase(); + const value = header.slice(firstColon + 1).trimStart(); + const current = headers[key]; + if (typeof current === "string") { + headers[key] = [current, value]; + } else if (Array.isArray(current)) { + current.push(value); + } else { + headers[key] = value; + } + } + debug2("got proxy server response: %o %o", firstLine, headers); + cleanup(); + resolve2({ + connect: { + statusCode, + statusText, + headers + }, + buffered + }); + } + socket.on("error", onerror); + socket.on("end", onend); + read(); + }); + } + exports.parseProxyResponse = parseProxyResponse; } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); +}); + +// +var require_dist2 = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k in mod) + if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) + __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.HttpsProxyAgent = void 0; + var net = __importStar(__require("net")); + var tls = __importStar(__require("tls")); + var assert_1 = __importDefault(__require("assert")); + var debug_1 = __importDefault(require_src()); + var agent_base_1 = require_dist(); + var url_1 = __require("url"); + var parse_proxy_response_1 = require_parse_proxy_response(); + var debug2 = (0, debug_1.default)("https-proxy-agent"); + var setServernameFromNonIpHost = (options) => { + if (options.servername === void 0 && options.host && !net.isIP(options.host)) { + return { + ...options, + servername: options.host + }; } + return options; + }; + var HttpsProxyAgent = class extends agent_base_1.Agent { + constructor(proxy, opts) { + super(opts); + this.options = { path: void 0 }; + this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy; + this.proxyHeaders = opts?.headers ?? {}; + debug2("Creating new HttpsProxyAgent instance: %o", this.proxy.href); + const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, ""); + const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80; + this.connectOpts = { + // Attempt to negotiate http/1.1 for proxy servers that support http/2 + ALPNProtocols: ["http/1.1"], + ...opts ? omit2(opts, "headers") : null, + host, + port + }; + } + /** + * Called when the node-core HTTP client library is creating a + * new HTTP request. + */ + async connect(req, opts) { + const { proxy } = this; + if (!opts.host) { + throw new TypeError('No "host" provided'); + } + let socket; + if (proxy.protocol === "https:") { + debug2("Creating `tls.Socket`: %o", this.connectOpts); + socket = tls.connect(setServernameFromNonIpHost(this.connectOpts)); + } else { + debug2("Creating `net.Socket`: %o", this.connectOpts); + socket = net.connect(this.connectOpts); + } + const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders }; + const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host; + let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\r +`; + if (proxy.username || proxy.password) { + const auth6 = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`; + headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth6).toString("base64")}`; + } + headers.Host = `${host}:${opts.port}`; + if (!headers["Proxy-Connection"]) { + headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close"; + } + for (const name of Object.keys(headers)) { + payload += `${name}: ${headers[name]}\r +`; + } + const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket); + socket.write(`${payload}\r +`); + const { connect, buffered } = await proxyResponsePromise; + req.emit("proxyConnect", connect); + this.emit("proxyConnect", connect, req); + if (connect.statusCode === 200) { + req.once("socket", resume); + if (opts.secureEndpoint) { + debug2("Upgrading socket connection to TLS"); + return tls.connect({ + ...omit2(setServernameFromNonIpHost(opts), "host", "path", "port"), + socket + }); + } + return socket; + } + socket.destroy(); + const fakeSocket = new net.Socket({ writable: false }); + fakeSocket.readable = true; + req.once("socket", (s2) => { + debug2("Replaying proxy buffer for failed request"); + (0, assert_1.default)(s2.listenerCount("data") > 0); + s2.push(buffered); + s2.push(null); + }); + return fakeSocket; + } + }; + HttpsProxyAgent.protocols = ["http", "https"]; + exports.HttpsProxyAgent = HttpsProxyAgent; + function resume(socket) { + socket.resume(); } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var BearerCredentialHandler = class { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error("The request has no headers"); + function omit2(obj, ...keys) { + const ret = {}; + let key; + for (key in obj) { + if (!keys.includes(key)) { + ret[key] = obj[key]; + } + } + return ret; } - options.headers["Authorization"] = `Bearer ${this.token}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter2(this, void 0, void 0, function* () { - throw new Error("not implemented"); - }); } -}; +}); // -var __awaiter3 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); +function dataUriToBuffer(uri) { + if (!/^data:/i.test(uri)) { + throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")'); } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + uri = uri.replace(/\r?\n/g, ""); + const firstComma = uri.indexOf(","); + if (firstComma === -1 || firstComma <= 4) { + throw new TypeError("malformed data: URI"); + } + const meta = uri.substring(5, firstComma).split(";"); + let charset = ""; + let base64 = false; + const type = meta[0] || "text/plain"; + let typeFull = type; + for (let i2 = 1; i2 < meta.length; i2++) { + if (meta[i2] === "base64") { + base64 = true; + } else if (meta[i2]) { + typeFull += `;${meta[i2]}`; + if (meta[i2].indexOf("charset=") === 0) { + charset = meta[i2].substring(8); } } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var OidcClient = class _OidcClient { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry - }; - return new HttpClient("actions/oidc-client", [new BearerCredentialHandler(_OidcClient.getRequestToken())], requestOptions); } - static getRequestToken() { - const token = process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]; - if (!token) { - throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable"); - } - return token; + if (!meta[0] && !charset.length) { + typeFull += ";charset=US-ASCII"; + charset = "US-ASCII"; } - static getIDTokenUrl() { - const runtimeUrl = process.env["ACTIONS_ID_TOKEN_REQUEST_URL"]; - if (!runtimeUrl) { - throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable"); - } - return runtimeUrl; + const encoding = base64 ? "base64" : "ascii"; + const data = unescape(uri.substring(firstComma + 1)); + const buffer = Buffer.from(data, encoding); + buffer.type = type; + buffer.typeFull = typeFull; + buffer.charset = charset; + return buffer; +} +var dist_default; +var init_dist = __esm({ + ""() { + dist_default = dataUriToBuffer; } - static getCall(id_token_url) { - return __awaiter3(this, void 0, void 0, function* () { - var _a2; - const httpclient = _OidcClient.createHttpClient(); - const res = yield httpclient.getJson(id_token_url).catch((error2) => { - throw new Error(`Failed to get ID Token. - - Error Code : ${error2.statusCode} - - Error Message: ${error2.message}`); - }); - const id_token = (_a2 = res.result) === null || _a2 === void 0 ? void 0 : _a2.value; - if (!id_token) { - throw new Error("Response json body do not have ID Token field"); +}); + +// +var require_ponyfill_es2018 = __commonJS({ + ""(exports, module) { + (function(global2, factory) { + typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.WebStreamsPolyfill = {})); + })(exports, function(exports2) { + "use strict"; + function noop5() { + return void 0; } - return id_token; - }); - } - static getIDToken(audience) { - return __awaiter3(this, void 0, void 0, function* () { - try { - let id_token_url = _OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; + function typeIsObject(x2) { + return typeof x2 === "object" && x2 !== null || typeof x2 === "function"; + } + const rethrowAssertionErrorRejection = noop5; + function setFunctionName(fn, name) { + try { + Object.defineProperty(fn, "name", { + value: name, + configurable: true + }); + } catch (_a4) { } - debug(`ID token url is ${id_token_url}`); - const id_token = yield _OidcClient.getCall(id_token_url); - setSecret(id_token); - return id_token; - } catch (error2) { - throw new Error(`Error message: ${error2.message}`); } - }); - } -}; - -// -import { EOL as EOL3 } from "os"; -import { constants, promises } from "fs"; -var __awaiter4 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + const originalPromise = Promise; + const originalPromiseThen = Promise.prototype.then; + const originalPromiseReject = Promise.reject.bind(originalPromise); + function newPromise(executor) { + return new originalPromise(executor); } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function promiseResolvedWith(value) { + return newPromise((resolve2) => resolve2(value)); } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var { access, appendFile, writeFile } = promises; -var SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; -var Summary = class { - constructor() { - this._buffer = ""; - } - /** - * Finds the summary file path from the environment, rejects if env var is not found or file does not exist - * Also checks r/w permissions. - * - * @returns step summary file path - */ - filePath() { - return __awaiter4(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; + function promiseRejectedWith(reason) { + return originalPromiseReject(reason); } - const pathFromEnv = process.env[SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error(`Unable to find environment variable for $${SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + function PerformPromiseThen(promise, onFulfilled, onRejected) { + return originalPromiseThen.call(promise, onFulfilled, onRejected); } - try { - yield access(pathFromEnv, constants.R_OK | constants.W_OK); - } catch (_a2) { - throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + function uponPromise(promise, onFulfilled, onRejected) { + PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), void 0, rethrowAssertionErrorRejection); } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - /** - * Wraps content in an HTML tag, adding any HTML attributes - * - * @param {string} tag HTML tag to wrap - * @param {string | null} content content within the tag - * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add - * - * @returns {string} content wrapped in HTML element - */ - wrap(tag, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs).map(([key, value]) => ` ${key}="${value}"`).join(""); - if (!content) { - return `<${tag}${htmlAttrs}>`; - } - return `<${tag}${htmlAttrs}>${content}`; - } - /** - * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. - * - * @param {SummaryWriteOptions} [options] (optional) options for write operation - * - * @returns {Promise} summary instance - */ - write(options) { - return __awaiter4(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: "utf8" }); - return this.emptyBuffer(); - }); - } - /** - * Clears the summary buffer and wipes the summary file - * - * @returns {Summary} summary instance - */ - clear() { - return __awaiter4(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - /** - * Returns the current summary buffer as a string - * - * @returns {string} string of summary buffer - */ - stringify() { - return this._buffer; - } - /** - * If the summary buffer is empty - * - * @returns {boolen} true if the buffer is empty - */ - isEmptyBuffer() { - return this._buffer.length === 0; - } - /** - * Resets the summary buffer without writing to summary file - * - * @returns {Summary} summary instance - */ - emptyBuffer() { - this._buffer = ""; - return this; - } - /** - * Adds raw text to the summary buffer - * - * @param {string} text content to add - * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) - * - * @returns {Summary} summary instance - */ - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - /** - * Adds the operating system-specific end-of-line marker to the buffer - * - * @returns {Summary} summary instance - */ - addEOL() { - return this.addRaw(EOL3); - } - /** - * Adds an HTML codeblock to the summary buffer - * - * @param {string} code content to render within fenced code block - * @param {string} lang (optional) language to syntax highlight code - * - * @returns {Summary} summary instance - */ - addCodeBlock(code, lang) { - const attrs = Object.assign({}, lang && { lang }); - const element = this.wrap("pre", this.wrap("code", code), attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML list to the summary buffer - * - * @param {string[]} items list of items to render - * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) - * - * @returns {Summary} summary instance - */ - addList(items, ordered = false) { - const tag = ordered ? "ol" : "ul"; - const listItems = items.map((item) => this.wrap("li", item)).join(""); - const element = this.wrap(tag, listItems); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML table to the summary buffer - * - * @param {SummaryTableCell[]} rows table rows - * - * @returns {Summary} summary instance - */ - addTable(rows) { - const tableBody = rows.map((row) => { - const cells = row.map((cell) => { - if (typeof cell === "string") { - return this.wrap("td", cell); - } - const { header, data, colspan, rowspan } = cell; - const tag = header ? "th" : "td"; - const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan }); - return this.wrap(tag, data, attrs); - }).join(""); - return this.wrap("tr", cells); - }).join(""); - const element = this.wrap("table", tableBody); - return this.addRaw(element).addEOL(); - } - /** - * Adds a collapsable HTML details element to the summary buffer - * - * @param {string} label text for the closed state - * @param {string} content collapsable content - * - * @returns {Summary} summary instance - */ - addDetails(label, content) { - const element = this.wrap("details", this.wrap("summary", label) + content); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML image tag to the summary buffer - * - * @param {string} src path to the image you to embed - * @param {string} alt text description of the image - * @param {SummaryImageOptions} options (optional) addition image attributes - * - * @returns {Summary} summary instance - */ - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); - const element = this.wrap("img", null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML section heading element - * - * @param {string} text heading text - * @param {number | string} [level=1] (optional) the heading level, default: 1 - * - * @returns {Summary} summary instance - */ - addHeading(text, level) { - const tag = `h${level}`; - const allowedTag = ["h1", "h2", "h3", "h4", "h5", "h6"].includes(tag) ? tag : "h1"; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML thematic break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addSeparator() { - const element = this.wrap("hr", null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML line break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addBreak() { - const element = this.wrap("br", null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML blockquote to the summary buffer - * - * @param {string} text quote text - * @param {string} cite (optional) citation url - * - * @returns {Summary} summary instance - */ - addQuote(text, cite) { - const attrs = Object.assign({}, cite && { cite }); - const element = this.wrap("blockquote", text, attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML anchor tag to the summary buffer - * - * @param {string} text link text/content - * @param {string} href hyperlink - * - * @returns {Summary} summary instance - */ - addLink(text, href) { - const element = this.wrap("a", text, { href }); - return this.addRaw(element).addEOL(); - } -}; -var _summary = new Summary(); -var markdownSummary = _summary; -var summary = _summary; - -// -import * as path from "path"; -function toPosixPath(pth) { - return pth.replace(/[\\]/g, "/"); -} -function toWin32Path(pth) { - return pth.replace(/[/]/g, "\\"); -} -function toPlatformPath(pth) { - return pth.replace(/[/\\]/g, path.sep); -} - -// -var platform_exports = {}; -__export(platform_exports, { - arch: () => arch, - getDetails: () => getDetails, - isLinux: () => isLinux, - isMacOS: () => isMacOS, - isWindows: () => isWindows, - platform: () => platform -}); -import os4 from "os"; - -// -import { StringDecoder } from "string_decoder"; - -// -import * as os3 from "os"; -import * as events from "events"; -import * as child from "child_process"; -import * as path4 from "path"; - -// -import * as path3 from "path"; - -// -import * as fs2 from "fs"; -import * as path2 from "path"; -var __awaiter5 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + function uponFulfillment(promise, onFulfilled) { + uponPromise(promise, onFulfilled); } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function uponRejection(promise, onRejected) { + uponPromise(promise, void 0, onRejected); } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var { chmod, copyFile, lstat, mkdir, open, readdir, rename, rm, rmdir, stat, symlink, unlink } = fs2.promises; -var IS_WINDOWS = process.platform === "win32"; -var READONLY = fs2.constants.O_RDONLY; -function exists(fsPath) { - return __awaiter5(this, void 0, void 0, function* () { - try { - yield stat(fsPath); - } catch (err) { - if (err.code === "ENOENT") { - return false; + function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) { + return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler); } - throw err; - } - return true; - }); -} -function isRooted(p) { - p = normalizeSeparators(p); - if (!p) { - throw new Error('isRooted() parameter "p" cannot be empty'); - } - if (IS_WINDOWS) { - return p.startsWith("\\") || /^[A-Z]:/i.test(p); - } - return p.startsWith("/"); -} -function tryGetExecutablePath(filePath, extensions) { - return __awaiter5(this, void 0, void 0, function* () { - let stats = void 0; - try { - stats = yield stat(filePath); - } catch (err) { - if (err.code !== "ENOENT") { - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + function setPromiseIsHandledToTrue(promise) { + PerformPromiseThen(promise, void 0, rethrowAssertionErrorRejection); } - } - if (stats && stats.isFile()) { - if (IS_WINDOWS) { - const upperExt = path2.extname(filePath).toUpperCase(); - if (extensions.some((validExt) => validExt.toUpperCase() === upperExt)) { - return filePath; + let _queueMicrotask = (callback) => { + if (typeof queueMicrotask === "function") { + _queueMicrotask = queueMicrotask; + } else { + const resolvedPromise = promiseResolvedWith(void 0); + _queueMicrotask = (cb) => PerformPromiseThen(resolvedPromise, cb); } - } else { - if (isUnixExecutable(stats)) { - return filePath; - } - } - } - const originalFilePath = filePath; - for (const extension of extensions) { - filePath = originalFilePath + extension; - stats = void 0; - try { - stats = yield stat(filePath); - } catch (err) { - if (err.code !== "ENOENT") { - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + return _queueMicrotask(callback); + }; + function reflectCall(F2, V, args) { + if (typeof F2 !== "function") { + throw new TypeError("Argument is not a function"); } + return Function.prototype.apply.call(F2, V, args); } - if (stats && stats.isFile()) { - if (IS_WINDOWS) { - try { - const directory = path2.dirname(filePath); - const upperName = path2.basename(filePath).toUpperCase(); - for (const actualName of yield readdir(directory)) { - if (upperName === actualName.toUpperCase()) { - filePath = path2.join(directory, actualName); + function promiseCall(F2, V, args) { + try { + return promiseResolvedWith(reflectCall(F2, V, args)); + } catch (value) { + return promiseRejectedWith(value); + } + } + const QUEUE_MAX_ARRAY_SIZE = 16384; + class SimpleQueue { + constructor() { + this._cursor = 0; + this._size = 0; + this._front = { + _elements: [], + _next: void 0 + }; + this._back = this._front; + this._cursor = 0; + this._size = 0; + } + get length() { + return this._size; + } + // For exception safety, this method is structured in order: + // 1. Read state + // 2. Calculate required state mutations + // 3. Perform state mutations + push(element) { + const oldBack = this._back; + let newBack = oldBack; + if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) { + newBack = { + _elements: [], + _next: void 0 + }; + } + oldBack._elements.push(element); + if (newBack !== oldBack) { + this._back = newBack; + oldBack._next = newBack; + } + ++this._size; + } + // Like push(), shift() follows the read -> calculate -> mutate pattern for + // exception safety. + shift() { + const oldFront = this._front; + let newFront = oldFront; + const oldCursor = this._cursor; + let newCursor = oldCursor + 1; + const elements = oldFront._elements; + const element = elements[oldCursor]; + if (newCursor === QUEUE_MAX_ARRAY_SIZE) { + newFront = oldFront._next; + newCursor = 0; + } + --this._size; + this._cursor = newCursor; + if (oldFront !== newFront) { + this._front = newFront; + } + elements[oldCursor] = void 0; + return element; + } + // The tricky thing about forEach() is that it can be called + // re-entrantly. The queue may be mutated inside the callback. It is easy to + // see that push() within the callback has no negative effects since the end + // of the queue is checked for on every iteration. If shift() is called + // repeatedly within the callback then the next iteration may return an + // element that has been removed. In this case the callback will be called + // with undefined values until we either "catch up" with elements that still + // exist or reach the back of the queue. + forEach(callback) { + let i2 = this._cursor; + let node = this._front; + let elements = node._elements; + while (i2 !== elements.length || node._next !== void 0) { + if (i2 === elements.length) { + node = node._next; + elements = node._elements; + i2 = 0; + if (elements.length === 0) { break; } } - } catch (err) { - console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + callback(elements[i2]); + ++i2; } - return filePath; + } + // Return the element that would be returned if shift() was called now, + // without modifying the queue. + peek() { + const front = this._front; + const cursor = this._cursor; + return front._elements[cursor]; + } + } + const AbortSteps = Symbol("[[AbortSteps]]"); + const ErrorSteps = Symbol("[[ErrorSteps]]"); + const CancelSteps = Symbol("[[CancelSteps]]"); + const PullSteps = Symbol("[[PullSteps]]"); + const ReleaseSteps = Symbol("[[ReleaseSteps]]"); + function ReadableStreamReaderGenericInitialize(reader, stream) { + reader._ownerReadableStream = stream; + stream._reader = reader; + if (stream._state === "readable") { + defaultReaderClosedPromiseInitialize(reader); + } else if (stream._state === "closed") { + defaultReaderClosedPromiseInitializeAsResolved(reader); } else { - if (isUnixExecutable(stats)) { - return filePath; - } + defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); } } - } - return ""; - }); -} -function normalizeSeparators(p) { - p = p || ""; - if (IS_WINDOWS) { - p = p.replace(/\//g, "\\"); - return p.replace(/\\\\+/g, "\\"); - } - return p.replace(/\/\/+/g, "/"); -} -function isUnixExecutable(stats) { - return (stats.mode & 1) > 0 || (stats.mode & 8) > 0 && process.getgid !== void 0 && stats.gid === process.getgid() || (stats.mode & 64) > 0 && process.getuid !== void 0 && stats.uid === process.getuid(); -} - -// -var __awaiter6 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function ReadableStreamReaderGenericCancel(reader, reason) { + const stream = reader._ownerReadableStream; + return ReadableStreamCancel(stream, reason); } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -function which(tool, check) { - return __awaiter6(this, void 0, void 0, function* () { - if (!tool) { - throw new Error("parameter 'tool' is required"); - } - if (check) { - const result = yield which(tool, false); - if (!result) { - if (IS_WINDOWS) { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + function ReadableStreamReaderGenericRelease(reader) { + const stream = reader._ownerReadableStream; + if (stream._state === "readable") { + defaultReaderClosedPromiseReject(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`)); } else { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + defaultReaderClosedPromiseResetToRejected(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`)); } + stream._readableStreamController[ReleaseSteps](); + stream._reader = void 0; + reader._ownerReadableStream = void 0; } - return result; - } - const matches = yield findInPath(tool); - if (matches && matches.length > 0) { - return matches[0]; - } - return ""; - }); -} -function findInPath(tool) { - return __awaiter6(this, void 0, void 0, function* () { - if (!tool) { - throw new Error("parameter 'tool' is required"); - } - const extensions = []; - if (IS_WINDOWS && process.env["PATHEXT"]) { - for (const extension of process.env["PATHEXT"].split(path3.delimiter)) { - if (extension) { - extensions.push(extension); + function readerLockException(name) { + return new TypeError("Cannot " + name + " a stream using a released reader"); + } + function defaultReaderClosedPromiseInitialize(reader) { + reader._closedPromise = newPromise((resolve2, reject) => { + reader._closedPromise_resolve = resolve2; + reader._closedPromise_reject = reject; + }); + } + function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { + defaultReaderClosedPromiseInitialize(reader); + defaultReaderClosedPromiseReject(reader, reason); + } + function defaultReaderClosedPromiseInitializeAsResolved(reader) { + defaultReaderClosedPromiseInitialize(reader); + defaultReaderClosedPromiseResolve(reader); + } + function defaultReaderClosedPromiseReject(reader, reason) { + if (reader._closedPromise_reject === void 0) { + return; } + setPromiseIsHandledToTrue(reader._closedPromise); + reader._closedPromise_reject(reason); + reader._closedPromise_resolve = void 0; + reader._closedPromise_reject = void 0; } - } - if (isRooted(tool)) { - const filePath = yield tryGetExecutablePath(tool, extensions); - if (filePath) { - return [filePath]; + function defaultReaderClosedPromiseResetToRejected(reader, reason) { + defaultReaderClosedPromiseInitializeAsRejected(reader, reason); } - return []; - } - if (tool.includes(path3.sep)) { - return []; - } - const directories = []; - if (process.env.PATH) { - for (const p of process.env.PATH.split(path3.delimiter)) { - if (p) { - directories.push(p); + function defaultReaderClosedPromiseResolve(reader) { + if (reader._closedPromise_resolve === void 0) { + return; } + reader._closedPromise_resolve(void 0); + reader._closedPromise_resolve = void 0; + reader._closedPromise_reject = void 0; } - } - const matches = []; - for (const directory of directories) { - const filePath = yield tryGetExecutablePath(path3.join(directory, tool), extensions); - if (filePath) { - matches.push(filePath); + const NumberIsFinite = Number.isFinite || function(x2) { + return typeof x2 === "number" && isFinite(x2); + }; + const MathTrunc = Math.trunc || function(v) { + return v < 0 ? Math.ceil(v) : Math.floor(v); + }; + function isDictionary(x2) { + return typeof x2 === "object" || typeof x2 === "function"; } - } - return matches; - }); -} - -// -import { setTimeout as setTimeout2 } from "timers"; -var __awaiter7 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + function assertDictionary(obj, context3) { + if (obj !== void 0 && !isDictionary(obj)) { + throw new TypeError(`${context3} is not an object.`); + } } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function assertFunction(x2, context3) { + if (typeof x2 !== "function") { + throw new TypeError(`${context3} is not a function.`); + } } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var IS_WINDOWS2 = process.platform === "win32"; -var ToolRunner = class extends events.EventEmitter { - constructor(toolPath, args, options) { - super(); - if (!toolPath) { - throw new Error("Parameter 'toolPath' cannot be null or empty."); - } - this.toolPath = toolPath; - this.args = args || []; - this.options = options || {}; - } - _debug(message) { - if (this.options.listeners && this.options.listeners.debug) { - this.options.listeners.debug(message); - } - } - _getCommandString(options, noPrefix) { - const toolPath = this._getSpawnFileName(); - const args = this._getSpawnArgs(options); - let cmd = noPrefix ? "" : "[command]"; - if (IS_WINDOWS2) { - if (this._isCmdFile()) { - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; + function isObject(x2) { + return typeof x2 === "object" && x2 !== null || typeof x2 === "function"; + } + function assertObject(x2, context3) { + if (!isObject(x2)) { + throw new TypeError(`${context3} is not an object.`); } - } else if (options.windowsVerbatimArguments) { - cmd += `"${toolPath}"`; - for (const a of args) { - cmd += ` ${a}`; + } + function assertRequiredArgument(x2, position, context3) { + if (x2 === void 0) { + throw new TypeError(`Parameter ${position} is required in '${context3}'.`); } - } else { - cmd += this._windowsQuoteCmdArg(toolPath); - for (const a of args) { - cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + function assertRequiredField(x2, field, context3) { + if (x2 === void 0) { + throw new TypeError(`${field} is required in '${context3}'.`); } } - } else { - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; + function convertUnrestrictedDouble(value) { + return Number(value); } - } - return cmd; - } - _processLineBuffer(data, strBuffer, onLine) { - try { - let s = strBuffer + data.toString(); - let n = s.indexOf(os3.EOL); - while (n > -1) { - const line = s.substring(0, n); - onLine(line); - s = s.substring(n + os3.EOL.length); - n = s.indexOf(os3.EOL); + function censorNegativeZero(x2) { + return x2 === 0 ? 0 : x2; } - return s; - } catch (err) { - this._debug(`error processing line. Failed with error ${err}`); - return ""; - } - } - _getSpawnFileName() { - if (IS_WINDOWS2) { - if (this._isCmdFile()) { - return process.env["COMSPEC"] || "cmd.exe"; + function integerPart(x2) { + return censorNegativeZero(MathTrunc(x2)); } - } - return this.toolPath; - } - _getSpawnArgs(options) { - if (IS_WINDOWS2) { - if (this._isCmdFile()) { - let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; - for (const a of this.args) { - argline += " "; - argline += options.windowsVerbatimArguments ? a : this._windowsQuoteCmdArg(a); + function convertUnsignedLongLongWithEnforceRange(value, context3) { + const lowerBound = 0; + const upperBound = Number.MAX_SAFE_INTEGER; + let x2 = Number(value); + x2 = censorNegativeZero(x2); + if (!NumberIsFinite(x2)) { + throw new TypeError(`${context3} is not a finite number`); } - argline += '"'; - return [argline]; + x2 = integerPart(x2); + if (x2 < lowerBound || x2 > upperBound) { + throw new TypeError(`${context3} is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`); + } + if (!NumberIsFinite(x2) || x2 === 0) { + return 0; + } + return x2; } - } - return this.args; - } - _endsWith(str, end) { - return str.endsWith(end); - } - _isCmdFile() { - const upperToolPath = this.toolPath.toUpperCase(); - return this._endsWith(upperToolPath, ".CMD") || this._endsWith(upperToolPath, ".BAT"); - } - _windowsQuoteCmdArg(arg) { - if (!this._isCmdFile()) { - return this._uvQuoteCmdArg(arg); - } - if (!arg) { - return '""'; - } - const cmdSpecialChars = [ - " ", - " ", - "&", - "(", - ")", - "[", - "]", - "{", - "}", - "^", - "=", - ";", - "!", - "'", - "+", - ",", - "`", - "~", - "|", - "<", - ">", - '"' - ]; - let needsQuotes = false; - for (const char of arg) { - if (cmdSpecialChars.some((x) => x === char)) { - needsQuotes = true; - break; + function assertReadableStream(x2, context3) { + if (!IsReadableStream(x2)) { + throw new TypeError(`${context3} is not a ReadableStream.`); + } } - } - if (!needsQuotes) { - return arg; - } - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === "\\") { - reverse += "\\"; - } else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '"'; - } else { - quoteHit = false; + function AcquireReadableStreamDefaultReader(stream) { + return new ReadableStreamDefaultReader(stream); } - } - reverse += '"'; - return reverse.split("").reverse().join(""); - } - _uvQuoteCmdArg(arg) { - if (!arg) { - return '""'; - } - if (!arg.includes(" ") && !arg.includes(" ") && !arg.includes('"')) { - return arg; - } - if (!arg.includes('"') && !arg.includes("\\")) { - return `"${arg}"`; - } - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === "\\") { - reverse += "\\"; - } else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += "\\"; - } else { - quoteHit = false; + function ReadableStreamAddReadRequest(stream, readRequest) { + stream._reader._readRequests.push(readRequest); } - } - reverse += '"'; - return reverse.split("").reverse().join(""); - } - _cloneExecOptions(options) { - options = options || {}; - const result = { - cwd: options.cwd || process.cwd(), - env: options.env || process.env, - silent: options.silent || false, - windowsVerbatimArguments: options.windowsVerbatimArguments || false, - failOnStdErr: options.failOnStdErr || false, - ignoreReturnCode: options.ignoreReturnCode || false, - delay: options.delay || 1e4 - }; - result.outStream = options.outStream || process.stdout; - result.errStream = options.errStream || process.stderr; - return result; - } - _getSpawnOptions(options, toolPath) { - options = options || {}; - const result = {}; - result.cwd = options.cwd; - result.env = options.env; - result["windowsVerbatimArguments"] = options.windowsVerbatimArguments || this._isCmdFile(); - if (options.windowsVerbatimArguments) { - result.argv0 = `"${toolPath}"`; - } - return result; - } - /** - * Exec a tool. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param tool path to tool to exec - * @param options optional exec options. See ExecOptions - * @returns number - */ - exec() { - return __awaiter7(this, void 0, void 0, function* () { - if (!isRooted(this.toolPath) && (this.toolPath.includes("/") || IS_WINDOWS2 && this.toolPath.includes("\\"))) { - this.toolPath = path4.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + function ReadableStreamFulfillReadRequest(stream, chunk, done) { + const reader = stream._reader; + const readRequest = reader._readRequests.shift(); + if (done) { + readRequest._closeSteps(); + } else { + readRequest._chunkSteps(chunk); + } } - this.toolPath = yield which(this.toolPath, true); - return new Promise((resolve2, reject) => __awaiter7(this, void 0, void 0, function* () { - this._debug(`exec tool: ${this.toolPath}`); - this._debug("arguments:"); - for (const arg of this.args) { - this._debug(` ${arg}`); + function ReadableStreamGetNumReadRequests(stream) { + return stream._reader._readRequests.length; + } + function ReadableStreamHasDefaultReader(stream) { + const reader = stream._reader; + if (reader === void 0) { + return false; } - const optionsNonNull = this._cloneExecOptions(this.options); - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os3.EOL); + if (!IsReadableStreamDefaultReader(reader)) { + return false; } - const state = new ExecState(optionsNonNull, this.toolPath); - state.on("debug", (message) => { - this._debug(message); - }); - if (this.options.cwd && !(yield exists(this.options.cwd))) { - return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + return true; + } + class ReadableStreamDefaultReader { + constructor(stream) { + assertRequiredArgument(stream, 1, "ReadableStreamDefaultReader"); + assertReadableStream(stream, "First parameter"); + if (IsReadableStreamLocked(stream)) { + throw new TypeError("This stream has already been locked for exclusive reading by another reader"); + } + ReadableStreamReaderGenericInitialize(this, stream); + this._readRequests = new SimpleQueue(); } - const fileName = this._getSpawnFileName(); - const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); - let stdbuffer = ""; - if (cp.stdout) { - cp.stdout.on("data", (data) => { - if (this.options.listeners && this.options.listeners.stdout) { - this.options.listeners.stdout(data); - } - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(data); - } - stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { - if (this.options.listeners && this.options.listeners.stdline) { - this.options.listeners.stdline(line); - } - }); - }); + /** + * Returns a promise that will be fulfilled when the stream becomes closed, + * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing. + */ + get closed() { + if (!IsReadableStreamDefaultReader(this)) { + return promiseRejectedWith(defaultReaderBrandCheckException("closed")); + } + return this._closedPromise; } - let errbuffer = ""; - if (cp.stderr) { - cp.stderr.on("data", (data) => { - state.processStderr = true; - if (this.options.listeners && this.options.listeners.stderr) { - this.options.listeners.stderr(data); - } - if (!optionsNonNull.silent && optionsNonNull.errStream && optionsNonNull.outStream) { - const s = optionsNonNull.failOnStdErr ? optionsNonNull.errStream : optionsNonNull.outStream; - s.write(data); - } - errbuffer = this._processLineBuffer(data, errbuffer, (line) => { - if (this.options.listeners && this.options.listeners.errline) { - this.options.listeners.errline(line); - } - }); + /** + * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}. + */ + cancel(reason = void 0) { + if (!IsReadableStreamDefaultReader(this)) { + return promiseRejectedWith(defaultReaderBrandCheckException("cancel")); + } + if (this._ownerReadableStream === void 0) { + return promiseRejectedWith(readerLockException("cancel")); + } + return ReadableStreamReaderGenericCancel(this, reason); + } + /** + * Returns a promise that allows access to the next chunk from the stream's internal queue, if available. + * + * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source. + */ + read() { + if (!IsReadableStreamDefaultReader(this)) { + return promiseRejectedWith(defaultReaderBrandCheckException("read")); + } + if (this._ownerReadableStream === void 0) { + return promiseRejectedWith(readerLockException("read from")); + } + let resolvePromise; + let rejectPromise; + const promise = newPromise((resolve2, reject) => { + resolvePromise = resolve2; + rejectPromise = reject; }); + const readRequest = { + _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }), + _closeSteps: () => resolvePromise({ value: void 0, done: true }), + _errorSteps: (e2) => rejectPromise(e2) + }; + ReadableStreamDefaultReaderRead(this, readRequest); + return promise; } - cp.on("error", (err) => { - state.processError = err.message; - state.processExited = true; - state.processClosed = true; - state.CheckComplete(); - }); - cp.on("exit", (code) => { - state.processExitCode = code; - state.processExited = true; - this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); - state.CheckComplete(); + /** + * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active. + * If the associated stream is errored when the lock is released, the reader will appear errored in the same way + * from now on; otherwise, the reader will appear closed. + * + * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by + * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to + * do so will throw a `TypeError` and leave the reader locked to the stream. + */ + releaseLock() { + if (!IsReadableStreamDefaultReader(this)) { + throw defaultReaderBrandCheckException("releaseLock"); + } + if (this._ownerReadableStream === void 0) { + return; + } + ReadableStreamDefaultReaderRelease(this); + } + } + Object.defineProperties(ReadableStreamDefaultReader.prototype, { + cancel: { enumerable: true }, + read: { enumerable: true }, + releaseLock: { enumerable: true }, + closed: { enumerable: true } + }); + setFunctionName(ReadableStreamDefaultReader.prototype.cancel, "cancel"); + setFunctionName(ReadableStreamDefaultReader.prototype.read, "read"); + setFunctionName(ReadableStreamDefaultReader.prototype.releaseLock, "releaseLock"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamDefaultReader.prototype, Symbol.toStringTag, { + value: "ReadableStreamDefaultReader", + configurable: true }); - cp.on("close", (code) => { - state.processExitCode = code; - state.processExited = true; - state.processClosed = true; - this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); - state.CheckComplete(); + } + function IsReadableStreamDefaultReader(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_readRequests")) { + return false; + } + return x2 instanceof ReadableStreamDefaultReader; + } + function ReadableStreamDefaultReaderRead(reader, readRequest) { + const stream = reader._ownerReadableStream; + stream._disturbed = true; + if (stream._state === "closed") { + readRequest._closeSteps(); + } else if (stream._state === "errored") { + readRequest._errorSteps(stream._storedError); + } else { + stream._readableStreamController[PullSteps](readRequest); + } + } + function ReadableStreamDefaultReaderRelease(reader) { + ReadableStreamReaderGenericRelease(reader); + const e2 = new TypeError("Reader was released"); + ReadableStreamDefaultReaderErrorReadRequests(reader, e2); + } + function ReadableStreamDefaultReaderErrorReadRequests(reader, e2) { + const readRequests = reader._readRequests; + reader._readRequests = new SimpleQueue(); + readRequests.forEach((readRequest) => { + readRequest._errorSteps(e2); }); - state.on("done", (error2, exitCode) => { - if (stdbuffer.length > 0) { - this.emit("stdline", stdbuffer); - } - if (errbuffer.length > 0) { - this.emit("errline", errbuffer); + } + function defaultReaderBrandCheckException(name) { + return new TypeError(`ReadableStreamDefaultReader.prototype.${name} can only be used on a ReadableStreamDefaultReader`); + } + const AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () { + }).prototype); + class ReadableStreamAsyncIteratorImpl { + constructor(reader, preventCancel) { + this._ongoingPromise = void 0; + this._isFinished = false; + this._reader = reader; + this._preventCancel = preventCancel; + } + next() { + const nextSteps = () => this._nextSteps(); + this._ongoingPromise = this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) : nextSteps(); + return this._ongoingPromise; + } + return(value) { + const returnSteps = () => this._returnSteps(value); + return this._ongoingPromise ? transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) : returnSteps(); + } + _nextSteps() { + if (this._isFinished) { + return Promise.resolve({ value: void 0, done: true }); } - cp.removeAllListeners(); - if (error2) { - reject(error2); - } else { - resolve2(exitCode); + const reader = this._reader; + let resolvePromise; + let rejectPromise; + const promise = newPromise((resolve2, reject) => { + resolvePromise = resolve2; + rejectPromise = reject; + }); + const readRequest = { + _chunkSteps: (chunk) => { + this._ongoingPromise = void 0; + _queueMicrotask(() => resolvePromise({ value: chunk, done: false })); + }, + _closeSteps: () => { + this._ongoingPromise = void 0; + this._isFinished = true; + ReadableStreamReaderGenericRelease(reader); + resolvePromise({ value: void 0, done: true }); + }, + _errorSteps: (reason) => { + this._ongoingPromise = void 0; + this._isFinished = true; + ReadableStreamReaderGenericRelease(reader); + rejectPromise(reason); + } + }; + ReadableStreamDefaultReaderRead(reader, readRequest); + return promise; + } + _returnSteps(value) { + if (this._isFinished) { + return Promise.resolve({ value, done: true }); } - }); - if (this.options.input) { - if (!cp.stdin) { - throw new Error("child process missing stdin"); + this._isFinished = true; + const reader = this._reader; + if (!this._preventCancel) { + const result = ReadableStreamReaderGenericCancel(reader, value); + ReadableStreamReaderGenericRelease(reader); + return transformPromiseWith(result, () => ({ value, done: true })); } - cp.stdin.end(this.options.input); + ReadableStreamReaderGenericRelease(reader); + return promiseResolvedWith({ value, done: true }); } - })); - }); - } -}; -function argStringToArray(argString) { - const args = []; - let inQuotes = false; - let escaped = false; - let arg = ""; - function append(c) { - if (escaped && c !== '"') { - arg += "\\"; - } - arg += c; - escaped = false; - } - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i); - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes; - } else { - append(c); } - continue; - } - if (c === "\\" && escaped) { - append(c); - continue; - } - if (c === "\\" && inQuotes) { - escaped = true; - continue; - } - if (c === " " && !inQuotes) { - if (arg.length > 0) { - args.push(arg); - arg = ""; + const ReadableStreamAsyncIteratorPrototype = { + next() { + if (!IsReadableStreamAsyncIterator(this)) { + return promiseRejectedWith(streamAsyncIteratorBrandCheckException("next")); + } + return this._asyncIteratorImpl.next(); + }, + return(value) { + if (!IsReadableStreamAsyncIterator(this)) { + return promiseRejectedWith(streamAsyncIteratorBrandCheckException("return")); + } + return this._asyncIteratorImpl.return(value); + } + }; + Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype); + function AcquireReadableStreamAsyncIterator(stream, preventCancel) { + const reader = AcquireReadableStreamDefaultReader(stream); + const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel); + const iterator2 = Object.create(ReadableStreamAsyncIteratorPrototype); + iterator2._asyncIteratorImpl = impl; + return iterator2; + } + function IsReadableStreamAsyncIterator(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_asyncIteratorImpl")) { + return false; + } + try { + return x2._asyncIteratorImpl instanceof ReadableStreamAsyncIteratorImpl; + } catch (_a4) { + return false; + } } - continue; - } - append(c); - } - if (arg.length > 0) { - args.push(arg.trim()); - } - return args; -} -var ExecState = class _ExecState extends events.EventEmitter { - constructor(options, toolPath) { - super(); - this.processClosed = false; - this.processError = ""; - this.processExitCode = 0; - this.processExited = false; - this.processStderr = false; - this.delay = 1e4; - this.done = false; - this.timeout = null; - if (!toolPath) { - throw new Error("toolPath must not be empty"); - } - this.options = options; - this.toolPath = toolPath; - if (options.delay) { - this.delay = options.delay; - } - } - CheckComplete() { - if (this.done) { - return; - } - if (this.processClosed) { - this._setResult(); - } else if (this.processExited) { - this.timeout = setTimeout2(_ExecState.HandleTimeout, this.delay, this); - } - } - _debug(message) { - this.emit("debug", message); - } - _setResult() { - let error2; - if (this.processExited) { - if (this.processError) { - error2 = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); - } else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { - error2 = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); - } else if (this.processStderr && this.options.failOnStdErr) { - error2 = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + function streamAsyncIteratorBrandCheckException(name) { + return new TypeError(`ReadableStreamAsyncIterator.${name} can only be used on a ReadableSteamAsyncIterator`); } - } - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - this.done = true; - this.emit("done", error2, this.processExitCode); - } - static HandleTimeout(state) { - if (state.done) { - return; - } - if (!state.processClosed && state.processExited) { - const message = `The STDIO streams did not close within ${state.delay / 1e3} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; - state._debug(message); - } - state._setResult(); - } -}; - -// -var __awaiter8 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + const NumberIsNaN = Number.isNaN || function(x2) { + return x2 !== x2; + }; + var _a3, _b, _c; + function CreateArrayFromList(elements) { + return elements.slice(); + } + function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) { + new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); + } + let TransferArrayBuffer = (O) => { + if (typeof O.transfer === "function") { + TransferArrayBuffer = (buffer) => buffer.transfer(); + } else if (typeof structuredClone === "function") { + TransferArrayBuffer = (buffer) => structuredClone(buffer, { transfer: [buffer] }); + } else { + TransferArrayBuffer = (buffer) => buffer; + } + return TransferArrayBuffer(O); + }; + let IsDetachedBuffer = (O) => { + if (typeof O.detached === "boolean") { + IsDetachedBuffer = (buffer) => buffer.detached; + } else { + IsDetachedBuffer = (buffer) => buffer.byteLength === 0; + } + return IsDetachedBuffer(O); + }; + function ArrayBufferSlice(buffer, begin, end) { + if (buffer.slice) { + return buffer.slice(begin, end); + } + const length = end - begin; + const slice = new ArrayBuffer(length); + CopyDataBlockBytes(slice, 0, buffer, begin, length); + return slice; } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function GetMethod(receiver, prop) { + const func = receiver[prop]; + if (func === void 0 || func === null) { + return void 0; + } + if (typeof func !== "function") { + throw new TypeError(`${String(prop)} is not a function`); + } + return func; } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -function exec(commandLine, args, options) { - return __awaiter8(this, void 0, void 0, function* () { - const commandArgs = argStringToArray(commandLine); - if (commandArgs.length === 0) { - throw new Error(`Parameter 'commandLine' cannot be null or empty.`); - } - const toolPath = commandArgs[0]; - args = commandArgs.slice(1).concat(args || []); - const runner = new ToolRunner(toolPath, args, options); - return runner.exec(); - }); -} -function getExecOutput(commandLine, args, options) { - return __awaiter8(this, void 0, void 0, function* () { - var _a2, _b; - let stdout = ""; - let stderr = ""; - const stdoutDecoder = new StringDecoder("utf8"); - const stderrDecoder = new StringDecoder("utf8"); - const originalStdoutListener = (_a2 = options === null || options === void 0 ? void 0 : options.listeners) === null || _a2 === void 0 ? void 0 : _a2.stdout; - const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; - const stdErrListener = (data) => { - stderr += stderrDecoder.write(data); - if (originalStdErrListener) { - originalStdErrListener(data); + function CreateAsyncFromSyncIterator(syncIteratorRecord) { + const syncIterable = { + [Symbol.iterator]: () => syncIteratorRecord.iterator + }; + const asyncIterator = async function* () { + return yield* syncIterable; + }(); + const nextMethod = asyncIterator.next; + return { iterator: asyncIterator, nextMethod, done: false }; + } + const SymbolAsyncIterator = (_c = (_a3 = Symbol.asyncIterator) !== null && _a3 !== void 0 ? _a3 : (_b = Symbol.for) === null || _b === void 0 ? void 0 : _b.call(Symbol, "Symbol.asyncIterator")) !== null && _c !== void 0 ? _c : "@@asyncIterator"; + function GetIterator(obj, hint = "sync", method) { + if (method === void 0) { + if (hint === "async") { + method = GetMethod(obj, SymbolAsyncIterator); + if (method === void 0) { + const syncMethod = GetMethod(obj, Symbol.iterator); + const syncIteratorRecord = GetIterator(obj, "sync", syncMethod); + return CreateAsyncFromSyncIterator(syncIteratorRecord); + } + } else { + method = GetMethod(obj, Symbol.iterator); + } + } + if (method === void 0) { + throw new TypeError("The object is not iterable"); + } + const iterator2 = reflectCall(method, obj, []); + if (!typeIsObject(iterator2)) { + throw new TypeError("The iterator method must return an object"); + } + const nextMethod = iterator2.next; + return { iterator: iterator2, nextMethod, done: false }; } - }; - const stdOutListener = (data) => { - stdout += stdoutDecoder.write(data); - if (originalStdoutListener) { - originalStdoutListener(data); + function IteratorNext(iteratorRecord) { + const result = reflectCall(iteratorRecord.nextMethod, iteratorRecord.iterator, []); + if (!typeIsObject(result)) { + throw new TypeError("The iterator.next() method must return an object"); + } + return result; } - }; - const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); - const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); - stdout += stdoutDecoder.end(); - stderr += stderrDecoder.end(); - return { - exitCode, - stdout, - stderr - }; - }); -} - -// -var __awaiter9 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + function IteratorComplete(iterResult) { + return Boolean(iterResult.done); } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function IteratorValue(iterResult) { + return iterResult.value; } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var getWindowsInfo = () => __awaiter9(void 0, void 0, void 0, function* () { - const { stdout: version } = yield getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', void 0, { - silent: true - }); - const { stdout: name } = yield getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', void 0, { - silent: true - }); - return { - name: name.trim(), - version: version.trim() - }; -}); -var getMacOsInfo = () => __awaiter9(void 0, void 0, void 0, function* () { - var _a2, _b, _c, _d; - const { stdout } = yield getExecOutput("sw_vers", void 0, { - silent: true - }); - const version = (_b = (_a2 = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a2 === void 0 ? void 0 : _a2[1]) !== null && _b !== void 0 ? _b : ""; - const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ""; - return { - name, - version - }; -}); -var getLinuxInfo = () => __awaiter9(void 0, void 0, void 0, function* () { - const { stdout } = yield getExecOutput("lsb_release", ["-i", "-r", "-s"], { - silent: true - }); - const [name, version] = stdout.trim().split("\n"); - return { - name, - version - }; -}); -var platform = os4.platform(); -var arch = os4.arch(); -var isWindows = platform === "win32"; -var isMacOS = platform === "darwin"; -var isLinux = platform === "linux"; -function getDetails() { - return __awaiter9(this, void 0, void 0, function* () { - return Object.assign(Object.assign({}, yield isWindows ? getWindowsInfo() : isMacOS ? getMacOsInfo() : getLinuxInfo()), { - platform, - arch, - isWindows, - isMacOS, - isLinux - }); - }); -} - -// -var __awaiter10 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + function IsNonNegativeNumber(v) { + if (typeof v !== "number") { + return false; + } + if (NumberIsNaN(v)) { + return false; + } + if (v < 0) { + return false; + } + return true; } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function CloneAsUint8Array(O) { + const buffer = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength); + return new Uint8Array(buffer); } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var ExitCode; -(function(ExitCode2) { - ExitCode2[ExitCode2["Success"] = 0] = "Success"; - ExitCode2[ExitCode2["Failure"] = 1] = "Failure"; -})(ExitCode || (ExitCode = {})); -function exportVariable(name, val) { - const convertedVal = toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env["GITHUB_ENV"] || ""; - if (filePath) { - return issueFileCommand("ENV", prepareKeyValueMessage(name, val)); - } - issueCommand("set-env", { name }, convertedVal); -} -function setSecret(secret) { - issueCommand("add-mask", {}, secret); -} -function addPath(inputPath) { - const filePath = process.env["GITHUB_PATH"] || ""; - if (filePath) { - issueFileCommand("PATH", inputPath); - } else { - issueCommand("add-path", {}, inputPath); - } - process.env["PATH"] = `${inputPath}${path5.delimiter}${process.env["PATH"]}`; -} -function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - if (options && options.trimWhitespace === false) { - return val; - } - return val.trim(); -} -function getMultilineInput(name, options) { - const inputs = getInput(name, options).split("\n").filter((x) => x !== ""); - if (options && options.trimWhitespace === false) { - return inputs; - } - return inputs.map((input) => input.trim()); -} -function getBooleanInput(name, options) { - const trueValue = ["true", "True", "TRUE"]; - const falseValue = ["false", "False", "FALSE"]; - const val = getInput(name, options); - if (trueValue.includes(val)) - return true; - if (falseValue.includes(val)) - return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} -Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); -} -function setOutput(name, value) { - const filePath = process.env["GITHUB_OUTPUT"] || ""; - if (filePath) { - return issueFileCommand("OUTPUT", prepareKeyValueMessage(name, value)); - } - process.stdout.write(os5.EOL); - issueCommand("set-output", { name }, toCommandValue(value)); -} -function setCommandEcho(enabled) { - issue("echo", enabled ? "on" : "off"); -} -function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); -} -function isDebug() { - return process.env["RUNNER_DEBUG"] === "1"; -} -function debug(message) { - issueCommand("debug", {}, message); -} -function error(message, properties = {}) { - issueCommand("error", toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -function warning(message, properties = {}) { - issueCommand("warning", toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -function notice(message, properties = {}) { - issueCommand("notice", toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -function info(message) { - process.stdout.write(message + os5.EOL); -} -function startGroup(name) { - issue("group", name); -} -function endGroup() { - issue("endgroup"); -} -function group(name, fn) { - return __awaiter10(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } finally { - endGroup(); - } - return result; - }); -} -function saveState(name, value) { - const filePath = process.env["GITHUB_STATE"] || ""; - if (filePath) { - return issueFileCommand("STATE", prepareKeyValueMessage(name, value)); - } - issueCommand("save-state", { name }, toCommandValue(value)); -} -function getState(name) { - return process.env[`STATE_${name}`] || ""; -} -function getIDToken(aud) { - return __awaiter10(this, void 0, void 0, function* () { - return yield OidcClient.getIDToken(aud); - }); -} - -// -import { readFileSync, existsSync as existsSync2 } from "fs"; -import { EOL as EOL6 } from "os"; -var Context = class { - /** - * Hydrate the context from the environment - */ - constructor() { - var _a2, _b, _c; - this.payload = {}; - if (process.env.GITHUB_EVENT_PATH) { - if (existsSync2(process.env.GITHUB_EVENT_PATH)) { - this.payload = JSON.parse(readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: "utf8" })); - } else { - const path6 = process.env.GITHUB_EVENT_PATH; - process.stdout.write(`GITHUB_EVENT_PATH ${path6} does not exist${EOL6}`); + function DequeueValue(container) { + const pair = container._queue.shift(); + container._queueTotalSize -= pair.size; + if (container._queueTotalSize < 0) { + container._queueTotalSize = 0; + } + return pair.value; } - } - this.eventName = process.env.GITHUB_EVENT_NAME; - this.sha = process.env.GITHUB_SHA; - this.ref = process.env.GITHUB_REF; - this.workflow = process.env.GITHUB_WORKFLOW; - this.action = process.env.GITHUB_ACTION; - this.actor = process.env.GITHUB_ACTOR; - this.job = process.env.GITHUB_JOB; - this.runAttempt = parseInt(process.env.GITHUB_RUN_ATTEMPT, 10); - this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); - this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); - this.apiUrl = (_a2 = process.env.GITHUB_API_URL) !== null && _a2 !== void 0 ? _a2 : `https://api.github.com`; - this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; - this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; - } - get issue() { - const payload = this.payload; - return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); - } - get repo() { - if (process.env.GITHUB_REPOSITORY) { - const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); - return { owner, repo }; - } - if (this.payload.repository) { - return { - owner: this.payload.repository.owner.login, - repo: this.payload.repository.name - }; - } - throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); - } -}; - -// -var httpClient = __toESM(require_lib()); -var import_undici2 = __toESM(require_undici()); -var __awaiter11 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve2) { - resolve2(value); - }); - } - return new (P || (P = Promise))(function(resolve2, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + function EnqueueValueWithSize(container, value, size) { + if (!IsNonNegativeNumber(size) || size === Infinity) { + throw new RangeError("Size must be a finite, non-NaN, non-negative number."); + } + container._queue.push({ value, size }); + container._queueTotalSize += size; } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + function PeekQueueValue(container) { + const pair = container._queue.peek(); + return pair.value; } - } - function step(result) { - result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -function getProxyAgent(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgent(destinationUrl); -} -function getProxyAgentDispatcher(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgentDispatcher(destinationUrl); -} -function getProxyFetch(destinationUrl) { - const httpDispatcher = getProxyAgentDispatcher(destinationUrl); - const proxyFetch = (url, opts) => __awaiter11(this, void 0, void 0, function* () { - return (0, import_undici2.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher })); - }); - return proxyFetch; -} -function getApiBaseUrl() { - return process.env["GITHUB_API_URL"] || "https://api.github.com"; -} - -// -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } - if (typeof process === "object" && process.version !== void 0) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } - return ""; -} - -// -function register(state, name, method, options) { - if (typeof method !== "function") { - throw new Error("method for before hook must be a function"); - } - if (!options) { - options = {}; - } - if (Array.isArray(name)) { - return name.reverse().reduce((callback, name2) => { - return register.bind(null, state, name2, callback, options); - }, method)(); - } - return Promise.resolve().then(() => { - if (!state.registry[name]) { - return method(options); - } - return state.registry[name].reduce((method2, registered) => { - return registered.hook.bind(null, method2, options); - }, method)(); - }); -} - -// -function addHook(state, kind, name, hook6) { - const orig = hook6; - if (!state.registry[name]) { - state.registry[name] = []; - } - if (kind === "before") { - hook6 = (method, options) => { - return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); - }; - } - if (kind === "after") { - hook6 = (method, options) => { - let result; - return Promise.resolve().then(method.bind(null, options)).then((result_) => { - result = result_; - return orig(result, options); - }).then(() => { - return result; + function ResetQueue(container) { + container._queue = new SimpleQueue(); + container._queueTotalSize = 0; + } + function isDataViewConstructor(ctor) { + return ctor === DataView; + } + function isDataView(view) { + return isDataViewConstructor(view.constructor); + } + function arrayBufferViewElementSize(ctor) { + if (isDataViewConstructor(ctor)) { + return 1; + } + return ctor.BYTES_PER_ELEMENT; + } + class ReadableStreamBYOBRequest { + constructor() { + throw new TypeError("Illegal constructor"); + } + /** + * Returns the view for writing in to, or `null` if the BYOB request has already been responded to. + */ + get view() { + if (!IsReadableStreamBYOBRequest(this)) { + throw byobRequestBrandCheckException("view"); + } + return this._view; + } + respond(bytesWritten) { + if (!IsReadableStreamBYOBRequest(this)) { + throw byobRequestBrandCheckException("respond"); + } + assertRequiredArgument(bytesWritten, 1, "respond"); + bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, "First parameter"); + if (this._associatedReadableByteStreamController === void 0) { + throw new TypeError("This BYOB request has been invalidated"); + } + if (IsDetachedBuffer(this._view.buffer)) { + throw new TypeError(`The BYOB request's buffer has been detached and so cannot be used as a response`); + } + ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); + } + respondWithNewView(view) { + if (!IsReadableStreamBYOBRequest(this)) { + throw byobRequestBrandCheckException("respondWithNewView"); + } + assertRequiredArgument(view, 1, "respondWithNewView"); + if (!ArrayBuffer.isView(view)) { + throw new TypeError("You can only respond with array buffer views"); + } + if (this._associatedReadableByteStreamController === void 0) { + throw new TypeError("This BYOB request has been invalidated"); + } + if (IsDetachedBuffer(view.buffer)) { + throw new TypeError("The given view's buffer has been detached and so cannot be used as a response"); + } + ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); + } + } + Object.defineProperties(ReadableStreamBYOBRequest.prototype, { + respond: { enumerable: true }, + respondWithNewView: { enumerable: true }, + view: { enumerable: true } }); - }; - } - if (kind === "error") { - hook6 = (method, options) => { - return Promise.resolve().then(method.bind(null, options)).catch((error2) => { - return orig(error2, options); + setFunctionName(ReadableStreamBYOBRequest.prototype.respond, "respond"); + setFunctionName(ReadableStreamBYOBRequest.prototype.respondWithNewView, "respondWithNewView"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamBYOBRequest.prototype, Symbol.toStringTag, { + value: "ReadableStreamBYOBRequest", + configurable: true + }); + } + class ReadableByteStreamController { + constructor() { + throw new TypeError("Illegal constructor"); + } + /** + * Returns the current BYOB pull request, or `null` if there isn't one. + */ + get byobRequest() { + if (!IsReadableByteStreamController(this)) { + throw byteStreamControllerBrandCheckException("byobRequest"); + } + return ReadableByteStreamControllerGetBYOBRequest(this); + } + /** + * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is + * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure. + */ + get desiredSize() { + if (!IsReadableByteStreamController(this)) { + throw byteStreamControllerBrandCheckException("desiredSize"); + } + return ReadableByteStreamControllerGetDesiredSize(this); + } + /** + * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from + * the stream, but once those are read, the stream will become closed. + */ + close() { + if (!IsReadableByteStreamController(this)) { + throw byteStreamControllerBrandCheckException("close"); + } + if (this._closeRequested) { + throw new TypeError("The stream has already been closed; do not close it again!"); + } + const state = this._controlledReadableByteStream._state; + if (state !== "readable") { + throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be closed`); + } + ReadableByteStreamControllerClose(this); + } + enqueue(chunk) { + if (!IsReadableByteStreamController(this)) { + throw byteStreamControllerBrandCheckException("enqueue"); + } + assertRequiredArgument(chunk, 1, "enqueue"); + if (!ArrayBuffer.isView(chunk)) { + throw new TypeError("chunk must be an array buffer view"); + } + if (chunk.byteLength === 0) { + throw new TypeError("chunk must have non-zero byteLength"); + } + if (chunk.buffer.byteLength === 0) { + throw new TypeError(`chunk's buffer must have non-zero byteLength`); + } + if (this._closeRequested) { + throw new TypeError("stream is closed or draining"); + } + const state = this._controlledReadableByteStream._state; + if (state !== "readable") { + throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be enqueued to`); + } + ReadableByteStreamControllerEnqueue(this, chunk); + } + /** + * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`. + */ + error(e2 = void 0) { + if (!IsReadableByteStreamController(this)) { + throw byteStreamControllerBrandCheckException("error"); + } + ReadableByteStreamControllerError(this, e2); + } + /** @internal */ + [CancelSteps](reason) { + ReadableByteStreamControllerClearPendingPullIntos(this); + ResetQueue(this); + const result = this._cancelAlgorithm(reason); + ReadableByteStreamControllerClearAlgorithms(this); + return result; + } + /** @internal */ + [PullSteps](readRequest) { + const stream = this._controlledReadableByteStream; + if (this._queueTotalSize > 0) { + ReadableByteStreamControllerFillReadRequestFromQueue(this, readRequest); + return; + } + const autoAllocateChunkSize = this._autoAllocateChunkSize; + if (autoAllocateChunkSize !== void 0) { + let buffer; + try { + buffer = new ArrayBuffer(autoAllocateChunkSize); + } catch (bufferE) { + readRequest._errorSteps(bufferE); + return; + } + const pullIntoDescriptor = { + buffer, + bufferByteLength: autoAllocateChunkSize, + byteOffset: 0, + byteLength: autoAllocateChunkSize, + bytesFilled: 0, + minimumFill: 1, + elementSize: 1, + viewConstructor: Uint8Array, + readerType: "default" + }; + this._pendingPullIntos.push(pullIntoDescriptor); + } + ReadableStreamAddReadRequest(stream, readRequest); + ReadableByteStreamControllerCallPullIfNeeded(this); + } + /** @internal */ + [ReleaseSteps]() { + if (this._pendingPullIntos.length > 0) { + const firstPullInto = this._pendingPullIntos.peek(); + firstPullInto.readerType = "none"; + this._pendingPullIntos = new SimpleQueue(); + this._pendingPullIntos.push(firstPullInto); + } + } + } + Object.defineProperties(ReadableByteStreamController.prototype, { + close: { enumerable: true }, + enqueue: { enumerable: true }, + error: { enumerable: true }, + byobRequest: { enumerable: true }, + desiredSize: { enumerable: true } }); - }; - } - state.registry[name].push({ - hook: hook6, - orig - }); -} - -// -function removeHook(state, name, method) { - if (!state.registry[name]) { - return; - } - const index = state.registry[name].map((registered) => { - return registered.orig; - }).indexOf(method); - if (index === -1) { - return; - } - state.registry[name].splice(index, 1); -} - -// -var bind = Function.bind; -var bindable = bind.bind(bind); -function bindApi(hook6, state, name) { - const removeHookRef = bindable(removeHook, null).apply( - null, - name ? [state, name] : [state] - ); - hook6.api = { remove: removeHookRef }; - hook6.remove = removeHookRef; - ["before", "error", "after", "wrap"].forEach((kind) => { - const args = name ? [state, kind, name] : [state, kind]; - hook6[kind] = hook6.api[kind] = bindable(addHook, null).apply(null, args); - }); -} -function Singular() { - const singularHookName = Symbol("Singular"); - const singularHookState = { - registry: {} - }; - const singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; -} -function Collection() { - const state = { - registry: {} - }; - const hook6 = register.bind(null, state); - bindApi(hook6, state); - return hook6; -} -var before_after_hook_default = { Singular, Collection }; - -// -var VERSION = "0.0.0-development"; -var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; -var DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "" - } -}; -function lowercaseKeys2(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} -function isPlainObject(value) { - if (typeof value !== "object" || value === null) - return false; - if (Object.prototype.toString.call(value) !== "[object Object]") - return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) - return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); -} -function mergeDeep(defaults2, options) { - const result = Object.assign({}, defaults2); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults2)) - Object.assign(result, { [key]: options[key] }); - else - result[key] = mergeDeep(defaults2[key], options[key]); - } else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; -} -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; - } - } - return obj; -} -function merge(defaults2, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } else { - options = Object.assign({}, route); - } - options.headers = lowercaseKeys2(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults2 || {}, options); - if (options.url === "/graphql") { - if (defaults2 && defaults2.mediaType.previews?.length) { - mergedOptions.mediaType.previews = defaults2.mediaType.previews.filter( - (preview) => !mergedOptions.mediaType.previews.includes(preview) - ).concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); - } - return mergedOptions; -} -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return url + separator + names.map((name) => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} -var urlVariableRegex = /\{[^{}}]+\}/g; -function removeNonChars(variableName) { - return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); -} -function omit(object, keysToOmit) { - const result = { __proto__: null }; - for (const key of Object.keys(object)) { - if (keysToOmit.indexOf(key) === -1) { - result[key] = object[key]; - } - } - return result; -} -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }).join(""); -} -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); -} -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } -} -function isDefined(value) { - return value !== void 0 && value !== null; -} -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} -function getValues(context3, operator, key, modifier) { - var value = context3[key], result = []; - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); + setFunctionName(ReadableByteStreamController.prototype.close, "close"); + setFunctionName(ReadableByteStreamController.prototype.enqueue, "enqueue"); + setFunctionName(ReadableByteStreamController.prototype.error, "error"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableByteStreamController.prototype, Symbol.toStringTag, { + value: "ReadableByteStreamController", + configurable: true + }); } - result.push( - encodeValue(operator, value, isKeyOperator(operator) ? key : "") - ); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - result.push( - encodeValue(operator, value2, isKeyOperator(operator) ? key : "") - ); - }); + function IsReadableByteStreamController(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_controlledReadableByteStream")) { + return false; + } + return x2 instanceof ReadableByteStreamController; + } + function IsReadableStreamBYOBRequest(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_associatedReadableByteStreamController")) { + return false; + } + return x2 instanceof ReadableStreamBYOBRequest; + } + function ReadableByteStreamControllerCallPullIfNeeded(controller) { + const shouldPull = ReadableByteStreamControllerShouldCallPull(controller); + if (!shouldPull) { + return; + } + if (controller._pulling) { + controller._pullAgain = true; + return; + } + controller._pulling = true; + const pullPromise = controller._pullAlgorithm(); + uponPromise(pullPromise, () => { + controller._pulling = false; + if (controller._pullAgain) { + controller._pullAgain = false; + ReadableByteStreamControllerCallPullIfNeeded(controller); + } + return null; + }, (e2) => { + ReadableByteStreamControllerError(controller, e2); + return null; + }); + } + function ReadableByteStreamControllerClearPendingPullIntos(controller) { + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + controller._pendingPullIntos = new SimpleQueue(); + } + function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { + let done = false; + if (stream._state === "closed") { + done = true; + } + const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); + if (pullIntoDescriptor.readerType === "default") { + ReadableStreamFulfillReadRequest(stream, filledView, done); } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); + ReadableStreamFulfillReadIntoRequest(stream, filledView, done); } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function(value2) { - tmp.push(encodeValue(operator, value2)); - }); + } + function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { + const bytesFilled = pullIntoDescriptor.bytesFilled; + const elementSize = pullIntoDescriptor.elementSize; + return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); + } + function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { + controller._queue.push({ buffer, byteOffset, byteLength }); + controller._queueTotalSize += byteLength; + } + function ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, buffer, byteOffset, byteLength) { + let clonedChunk; + try { + clonedChunk = ArrayBufferSlice(buffer, byteOffset, byteOffset + byteLength); + } catch (cloneE) { + ReadableByteStreamControllerError(controller, cloneE); + throw cloneE; + } + ReadableByteStreamControllerEnqueueChunkToQueue(controller, clonedChunk, 0, byteLength); + } + function ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstDescriptor) { + if (firstDescriptor.bytesFilled > 0) { + ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, firstDescriptor.buffer, firstDescriptor.byteOffset, firstDescriptor.bytesFilled); + } + ReadableByteStreamControllerShiftPendingPullInto(controller); + } + function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { + const maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); + const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; + let totalBytesToCopyRemaining = maxBytesToCopy; + let ready = false; + const remainderBytes = maxBytesFilled % pullIntoDescriptor.elementSize; + const maxAlignedBytes = maxBytesFilled - remainderBytes; + if (maxAlignedBytes >= pullIntoDescriptor.minimumFill) { + totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; + ready = true; + } + const queue = controller._queue; + while (totalBytesToCopyRemaining > 0) { + const headOfQueue = queue.peek(); + const bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); + const destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; + CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); + if (headOfQueue.byteLength === bytesToCopy) { + queue.shift(); + } else { + headOfQueue.byteOffset += bytesToCopy; + headOfQueue.byteLength -= bytesToCopy; + } + controller._queueTotalSize -= bytesToCopy; + ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); + totalBytesToCopyRemaining -= bytesToCopy; + } + return ready; + } + function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { + pullIntoDescriptor.bytesFilled += size; + } + function ReadableByteStreamControllerHandleQueueDrain(controller) { + if (controller._queueTotalSize === 0 && controller._closeRequested) { + ReadableByteStreamControllerClearAlgorithms(controller); + ReadableStreamClose(controller._controlledReadableByteStream); } else { - Object.keys(value).forEach(function(k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); + ReadableByteStreamControllerCallPullIfNeeded(controller); } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); + } + function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { + if (controller._byobRequest === null) { + return; } + controller._byobRequest._associatedReadableByteStreamController = void 0; + controller._byobRequest._view = null; + controller._byobRequest = null; } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); + function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { + while (controller._pendingPullIntos.length > 0) { + if (controller._queueTotalSize === 0) { + return; + } + const pullIntoDescriptor = controller._pendingPullIntos.peek(); + if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) { + ReadableByteStreamControllerShiftPendingPullInto(controller); + ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor); + } + } } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - return result; -} -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} -function expand(template, context3) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - template = template.replace( - /\{([^\{\}]+)\}|([^\{\}]+)/g, - function(_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); + function ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller) { + const reader = controller._controlledReadableByteStream._reader; + while (reader._readRequests.length > 0) { + if (controller._queueTotalSize === 0) { + return; + } + const readRequest = reader._readRequests.shift(); + ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest); } - expression.split(/,/g).forEach(function(variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context3, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; + } + function ReadableByteStreamControllerPullInto(controller, view, min, readIntoRequest) { + const stream = controller._controlledReadableByteStream; + const ctor = view.constructor; + const elementSize = arrayBufferViewElementSize(ctor); + const { byteOffset, byteLength } = view; + const minimumFill = min * elementSize; + let buffer; + try { + buffer = TransferArrayBuffer(view.buffer); + } catch (e2) { + readIntoRequest._errorSteps(e2); + return; + } + const pullIntoDescriptor = { + buffer, + bufferByteLength: buffer.byteLength, + byteOffset, + byteLength, + bytesFilled: 0, + minimumFill, + elementSize, + viewConstructor: ctor, + readerType: "byob" + }; + if (controller._pendingPullIntos.length > 0) { + controller._pendingPullIntos.push(pullIntoDescriptor); + ReadableStreamAddReadIntoRequest(stream, readIntoRequest); + return; + } + if (stream._state === "closed") { + const emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); + readIntoRequest._closeSteps(emptyView); + return; + } + if (controller._queueTotalSize > 0) { + if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) { + const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); + ReadableByteStreamControllerHandleQueueDrain(controller); + readIntoRequest._chunkSteps(filledView); + return; } - return (values.length !== 0 ? operator : "") + values.join(separator); + if (controller._closeRequested) { + const e2 = new TypeError("Insufficient bytes to fill elements in the given buffer"); + ReadableByteStreamControllerError(controller, e2); + readIntoRequest._errorSteps(e2); + return; + } + } + controller._pendingPullIntos.push(pullIntoDescriptor); + ReadableStreamAddReadIntoRequest(stream, readIntoRequest); + ReadableByteStreamControllerCallPullIfNeeded(controller); + } + function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { + if (firstDescriptor.readerType === "none") { + ReadableByteStreamControllerShiftPendingPullInto(controller); + } + const stream = controller._controlledReadableByteStream; + if (ReadableStreamHasBYOBReader(stream)) { + while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { + const pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); + ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); + } + } + } + function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { + ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); + if (pullIntoDescriptor.readerType === "none") { + ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, pullIntoDescriptor); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + return; + } + if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill) { + return; + } + ReadableByteStreamControllerShiftPendingPullInto(controller); + const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; + if (remainderSize > 0) { + const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; + ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, pullIntoDescriptor.buffer, end - remainderSize, remainderSize); + } + pullIntoDescriptor.bytesFilled -= remainderSize; + ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + } + function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { + const firstDescriptor = controller._pendingPullIntos.peek(); + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + const state = controller._controlledReadableByteStream._state; + if (state === "closed") { + ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); } else { - return values.join(","); + ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); } - } else { - return encodeReserved(literal); + ReadableByteStreamControllerCallPullIfNeeded(controller); } - } - ); - if (template === "/") { - return template; - } else { - return template.replace(/\/$/, ""); - } -} -function parse(options) { - let method = options.method.toUpperCase(); - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType" - ]); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept.split(/,/).map( - (format) => format.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}` - ) - ).join(","); - } - if (url.endsWith("/graphql")) { - if (options.mediaType.previews?.length) { - const previewsFromAcceptHeader = headers.accept.match(/(? { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); + function ReadableByteStreamControllerShiftPendingPullInto(controller) { + const descriptor = controller._pendingPullIntos.shift(); + return descriptor; } - } - } - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; + function ReadableByteStreamControllerShouldCallPull(controller) { + const stream = controller._controlledReadableByteStream; + if (stream._state !== "readable") { + return false; + } + if (controller._closeRequested) { + return false; + } + if (!controller._started) { + return false; + } + if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { + return true; + } + if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) { + return true; + } + const desiredSize = ReadableByteStreamControllerGetDesiredSize(controller); + if (desiredSize > 0) { + return true; + } + return false; } - } - } - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - return Object.assign( - { method, url, headers }, - typeof body !== "undefined" ? { body } : null, - options.request ? { request: options.request } : null - ); -} -function endpointWithDefaults(defaults2, route, options) { - return parse(merge(defaults2, route, options)); -} -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS2 = merge(oldDefaults, newDefaults); - const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); - return Object.assign(endpoint2, { - DEFAULTS: DEFAULTS2, - defaults: withDefaults.bind(null, DEFAULTS2), - merge: merge.bind(null, DEFAULTS2), - parse - }); -} -var endpoint = withDefaults(null, DEFAULTS); - -// -var import_fast_content_type_parse = __toESM(require_fast_content_type_parse()); - -// -var noiseValue = /^-?\d+n+$/; -var originalStringify = JSON.stringify; -var originalParse = JSON.parse; -var JSONStringify = (value, replacer, space) => { - if ("rawJSON" in JSON) { - return originalStringify( - value, - (key, value2) => { - if (typeof value2 === "bigint") - return JSON.rawJSON(value2.toString()); - if (typeof replacer === "function") - return replacer(key, value2); - if (Array.isArray(replacer) && replacer.includes(key)) - return value2; - return value2; - }, - space - ); - } - if (!value) - return originalStringify(value, replacer, space); - const bigInts = /([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; - const noise = /([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; - const convertedToCustomJSON = originalStringify( - value, - (key, value2) => { - const isNoise = typeof value2 === "string" && Boolean(value2.match(noiseValue)); - if (isNoise) - return value2.toString() + "n"; - if (typeof value2 === "bigint") - return value2.toString() + "n"; - if (typeof replacer === "function") - return replacer(key, value2); - if (Array.isArray(replacer) && replacer.includes(key)) - return value2; - return value2; - }, - space - ); - const processedJSON = convertedToCustomJSON.replace(bigInts, "$1$2$3"); - const denoisedJSON = processedJSON.replace(noise, "$1$2$3"); - return denoisedJSON; -}; -var isContextSourceSupported = () => JSON.parse("1", (_, __, context3) => !!context3 && context3.source === "1"); -var JSONParseV2 = (text, reviver) => { - const intRegex = /^-?\d+$/; - return JSON.parse(text, (key, value, context3) => { - const isBigNumber = typeof value === "number" && (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER); - const isInt = intRegex.test(context3.source); - const isBigInt = isBigNumber && isInt; - if (isBigInt) - return BigInt(context3.source); - if (typeof reviver !== "function") - return value; - return reviver(key, value, context3); - }); -}; -var JSONParse = (text, reviver) => { - if (!text) - return originalParse(text, reviver); - if (isContextSourceSupported()) - return JSONParseV2(text, reviver); - const MAX_INT = Number.MAX_SAFE_INTEGER.toString(); - const MAX_DIGITS = MAX_INT.length; - const stringsOrLargeNumbers = /"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g; - const noiseValueWithQuotes = /^"-?\d+n+"$/; - const customFormat = /^-?\d+n$/; - const serializedData = text.replace( - stringsOrLargeNumbers, - (text2, digits, fractional, exponential) => { - const isString = text2[0] === '"'; - const isNoise = isString && Boolean(text2.match(noiseValueWithQuotes)); - if (isNoise) - return text2.substring(0, text2.length - 1) + 'n"'; - const isFractionalOrExponential = fractional || exponential; - const isLessThanMaxSafeInt = digits && (digits.length < MAX_DIGITS || digits.length === MAX_DIGITS && digits <= MAX_INT); - if (isString || isFractionalOrExponential || isLessThanMaxSafeInt) - return text2; - return '"' + text2 + 'n"'; - } - ); - return originalParse(serializedData, (key, value, context3) => { - const isCustomFormatBigInt = typeof value === "string" && Boolean(value.match(customFormat)); - if (isCustomFormatBigInt) - return BigInt(value.substring(0, value.length - 1)); - const isNoiseValue = typeof value === "string" && Boolean(value.match(noiseValue)); - if (isNoiseValue) - return value.substring(0, value.length - 1); - if (typeof reviver !== "function") - return value; - return reviver(key, value, context3); - }); -}; - -// -var RequestError = class extends Error { - name; - /** - * http status code - */ - status; - /** - * Request options that lead to the error. - */ - request; - /** - * Response object if a response was received - */ - response; - constructor(message, statusCode, options) { - super(message, { cause: options.cause }); - this.name = "HttpError"; - this.status = Number.parseInt(statusCode); - if (Number.isNaN(this.status)) { - this.status = 0; - } - if ("response" in options) { - this.response = options.response; - } - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace( - /(? ""; -async function fetchWrapper(requestOptions) { - const fetch3 = requestOptions.request?.fetch || globalThis.fetch; - if (!fetch3) { - throw new Error( - "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" - ); - } - const log = requestOptions.request?.log || console; - const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false; - const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body; - const requestHeaders = Object.fromEntries( - Object.entries(requestOptions.headers).map(([name, value]) => [ - name, - String(value) - ]) - ); - let fetchResponse; - try { - fetchResponse = await fetch3(requestOptions.url, { - method: requestOptions.method, - body, - redirect: requestOptions.request?.redirect, - headers: requestHeaders, - signal: requestOptions.request?.signal, - // duplex must be set if request.body is ReadableStream or Async Iterables. - // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. - ...requestOptions.body && { duplex: "half" } - }); - } catch (error2) { - let message = "Unknown Error"; - if (error2 instanceof Error) { - if (error2.name === "AbortError") { - error2.status = 500; - throw error2; + function ReadableByteStreamControllerClearAlgorithms(controller) { + controller._pullAlgorithm = void 0; + controller._cancelAlgorithm = void 0; } - message = error2.message; - if (error2.name === "TypeError" && "cause" in error2) { - if (error2.cause instanceof Error) { - message = error2.cause.message; - } else if (typeof error2.cause === "string") { - message = error2.cause; + function ReadableByteStreamControllerClose(controller) { + const stream = controller._controlledReadableByteStream; + if (controller._closeRequested || stream._state !== "readable") { + return; + } + if (controller._queueTotalSize > 0) { + controller._closeRequested = true; + return; + } + if (controller._pendingPullIntos.length > 0) { + const firstPendingPullInto = controller._pendingPullIntos.peek(); + if (firstPendingPullInto.bytesFilled % firstPendingPullInto.elementSize !== 0) { + const e2 = new TypeError("Insufficient bytes to fill elements in the given buffer"); + ReadableByteStreamControllerError(controller, e2); + throw e2; + } } + ReadableByteStreamControllerClearAlgorithms(controller); + ReadableStreamClose(stream); } - } - const requestError = new RequestError(message, 500, { - request: requestOptions - }); - requestError.cause = error2; - throw requestError; - } - const status = fetchResponse.status; - const url = fetchResponse.url; - const responseHeaders = {}; - for (const [key, value] of fetchResponse.headers) { - responseHeaders[key] = value; - } - const octokitResponse = { - url, - status, - headers: responseHeaders, - data: "" - }; - if ("deprecation" in responseHeaders) { - const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` - ); - } - if (status === 204 || status === 205) { - return octokitResponse; - } - if (requestOptions.method === "HEAD") { - if (status < 400) { - return octokitResponse; - } - throw new RequestError(fetchResponse.statusText, status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status === 304) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError("Not modified", status, { - response: octokitResponse, - request: requestOptions - }); - } - if (status >= 400) { - octokitResponse.data = await getResponseData(fetchResponse); - throw new RequestError(toErrorMessage(octokitResponse.data), status, { - response: octokitResponse, - request: requestOptions - }); - } - octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; - return octokitResponse; -} -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - if (!contentType) { - return response.text().catch(noop); - } - const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType); - if (isJSONResponse(mimetype)) { - let text = ""; - try { - text = await response.text(); - return JSONParse(text); - } catch (err) { - return text; - } - } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") { - return response.text().catch(noop); - } else { - return response.arrayBuffer().catch( - /* v8 ignore next -- @preserve */ - () => new ArrayBuffer(0) - ); - } -} -function isJSONResponse(mimetype) { - return mimetype.type === "application/json" || mimetype.type === "application/scim+json"; -} -function toErrorMessage(data) { - if (typeof data === "string") { - return data; - } - if (data instanceof ArrayBuffer) { - return "Unknown error"; - } - if ("message" in data) { - const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : ""; - return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`; - } - return `Unknown error: ${JSON.stringify(data)}`; -} -function withDefaults2(oldEndpoint, newDefaults) { - const endpoint2 = oldEndpoint.defaults(newDefaults); - const newApi = function(route, parameters) { - const endpointOptions = endpoint2.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint2.parse(endpointOptions)); - } - const request2 = (route2, parameters2) => { - return fetchWrapper( - endpoint2.parse(endpoint2.merge(route2, parameters2)) - ); - }; - Object.assign(request2, { - endpoint: endpoint2, - defaults: withDefaults2.bind(null, endpoint2) - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults2.bind(null, endpoint2) - }); -} -var request = withDefaults2(endpoint, defaults_default); - -// -var VERSION3 = "0.0.0-development"; -function _buildMessageForResponseErrors(data) { - return `Request failed due to following response errors: -` + data.errors.map((e) => ` - ${e.message}`).join("\n"); -} -var GraphqlResponseError = class extends Error { - constructor(request2, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request2; - this.headers = headers; - this.response = response; - this.errors = response.errors; - this.data = response.data; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - name = "GraphqlResponseError"; - errors; - data; -}; -var NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType", - "operationName" -]; -var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; -var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request2, query, options) { - if (options) { - if (typeof query === "string" && "query" in options) { - return Promise.reject( - new Error(`[@octokit/graphql] "query" cannot be used as variable name`) - ); - } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) - continue; - return Promise.reject( - new Error( - `[@octokit/graphql] "${key}" cannot be used as variable name` - ) - ); - } - } - const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys( - parsedOptions - ).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl2 = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl2)) { - requestOptions.url = baseUrl2.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request2(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; + function ReadableByteStreamControllerEnqueue(controller, chunk) { + const stream = controller._controlledReadableByteStream; + if (controller._closeRequested || stream._state !== "readable") { + return; + } + const { buffer, byteOffset, byteLength } = chunk; + if (IsDetachedBuffer(buffer)) { + throw new TypeError("chunk's buffer is detached and so cannot be enqueued"); + } + const transferredBuffer = TransferArrayBuffer(buffer); + if (controller._pendingPullIntos.length > 0) { + const firstPendingPullInto = controller._pendingPullIntos.peek(); + if (IsDetachedBuffer(firstPendingPullInto.buffer)) { + throw new TypeError("The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk"); + } + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer); + if (firstPendingPullInto.readerType === "none") { + ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstPendingPullInto); + } + } + if (ReadableStreamHasDefaultReader(stream)) { + ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller); + if (ReadableStreamGetNumReadRequests(stream) === 0) { + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + } else { + if (controller._pendingPullIntos.length > 0) { + ReadableByteStreamControllerShiftPendingPullInto(controller); + } + const transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); + ReadableStreamFulfillReadRequest(stream, transferredView, false); + } + } else if (ReadableStreamHasBYOBReader(stream)) { + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + } else { + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + } + ReadableByteStreamControllerCallPullIfNeeded(controller); } - throw new GraphqlResponseError( - requestOptions, - headers, - response.data - ); - } - return response.data.data; - }); -} -function withDefaults3(request2, newDefaults) { - const newRequest = request2.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults3.bind(null, newRequest), - endpoint: newRequest.endpoint - }); -} -var graphql2 = withDefaults3(request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}` - }, - method: "POST", - url: "/graphql" -}); -function withCustomRequest(customRequest) { - return withDefaults3(customRequest, { - method: "POST", - url: "/graphql" - }); -} - -// -var b64url = "(?:[a-zA-Z0-9_-]+)"; -var sep3 = "\\."; -var jwtRE = new RegExp(`^${b64url}${sep3}${b64url}${sep3}${b64url}$`); -var isJWT = jwtRE.test.bind(jwtRE); -async function auth(token) { - const isApp = isJWT(token); - const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_"); - const isUserToServer = token.startsWith("ghu_"); - const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; - return { - type: "token", - token, - tokenType - }; -} -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; -} -async function hook(token, request2, route, parameters) { - const endpoint2 = request2.endpoint.merge( - route, - parameters - ); - endpoint2.headers.authorization = withAuthorizationPrefix(token); - return request2(endpoint2); -} -var createTokenAuth = function createTokenAuth2(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error( - "[@octokit/auth-token] Token passed to createTokenAuth is not a string" - ); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; - -// -var VERSION4 = "7.0.6"; - -// -var noop2 = () => { -}; -var consoleWarn = console.warn.bind(console); -var consoleError = console.error.bind(console); -function createLogger(logger = {}) { - if (typeof logger.debug !== "function") { - logger.debug = noop2; - } - if (typeof logger.info !== "function") { - logger.info = noop2; - } - if (typeof logger.warn !== "function") { - logger.warn = consoleWarn; - } - if (typeof logger.error !== "function") { - logger.error = consoleError; - } - return logger; -} -var userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`; -var Octokit = class { - static VERSION = VERSION4; - static defaults(defaults2) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults2 === "function") { - super(defaults2(options)); + function ReadableByteStreamControllerError(controller, e2) { + const stream = controller._controlledReadableByteStream; + if (stream._state !== "readable") { return; } - super( - Object.assign( - {}, - defaults2, - options, - options.userAgent && defaults2.userAgent ? { - userAgent: `${options.userAgent} ${defaults2.userAgent}` - } : null - ) - ); + ReadableByteStreamControllerClearPendingPullIntos(controller); + ResetQueue(controller); + ReadableByteStreamControllerClearAlgorithms(controller); + ReadableStreamError(stream, e2); + } + function ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest) { + const entry = controller._queue.shift(); + controller._queueTotalSize -= entry.byteLength; + ReadableByteStreamControllerHandleQueueDrain(controller); + const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); + readRequest._chunkSteps(view); + } + function ReadableByteStreamControllerGetBYOBRequest(controller) { + if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) { + const firstDescriptor = controller._pendingPullIntos.peek(); + const view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); + const byobRequest = Object.create(ReadableStreamBYOBRequest.prototype); + SetUpReadableStreamBYOBRequest(byobRequest, controller, view); + controller._byobRequest = byobRequest; + } + return controller._byobRequest; + } + function ReadableByteStreamControllerGetDesiredSize(controller) { + const state = controller._controlledReadableByteStream._state; + if (state === "errored") { + return null; + } + if (state === "closed") { + return 0; + } + return controller._strategyHWM - controller._queueTotalSize; } - }; - return OctokitWithDefaults; - } - static plugins = []; - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin(...newPlugins) { - const currentPlugins = this.plugins; - const NewOctokit = class extends this { - static plugins = currentPlugins.concat( - newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) - ); - }; - return NewOctokit; - } - constructor(options = {}) { - const hook6 = new before_after_hook_default.Collection(); - const requestDefaults = { - baseUrl: request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - // @ts-ignore internal usage only, no need to type - hook: hook6.bind(null, "request") - }), - mediaType: { - previews: [], - format: "" + function ReadableByteStreamControllerRespond(controller, bytesWritten) { + const firstDescriptor = controller._pendingPullIntos.peek(); + const state = controller._controlledReadableByteStream._state; + if (state === "closed") { + if (bytesWritten !== 0) { + throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream"); + } + } else { + if (bytesWritten === 0) { + throw new TypeError("bytesWritten must be greater than 0 when calling respond() on a readable stream"); + } + if (firstDescriptor.bytesFilled + bytesWritten > firstDescriptor.byteLength) { + throw new RangeError("bytesWritten out of range"); + } + } + firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); + ReadableByteStreamControllerRespondInternal(controller, bytesWritten); } - }; - requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - this.request = request.defaults(requestDefaults); - this.graphql = withCustomRequest(this.request).defaults(requestDefaults); - this.log = createLogger(options.log); - this.hook = hook6; - if (!options.authStrategy) { - if (!options.auth) { - this.auth = async () => ({ - type: "unauthenticated" + function ReadableByteStreamControllerRespondWithNewView(controller, view) { + const firstDescriptor = controller._pendingPullIntos.peek(); + const state = controller._controlledReadableByteStream._state; + if (state === "closed") { + if (view.byteLength !== 0) { + throw new TypeError("The view's length must be 0 when calling respondWithNewView() on a closed stream"); + } + } else { + if (view.byteLength === 0) { + throw new TypeError("The view's length must be greater than 0 when calling respondWithNewView() on a readable stream"); + } + } + if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { + throw new RangeError("The region specified by view does not match byobRequest"); + } + if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) { + throw new RangeError("The buffer of view has different capacity than byobRequest"); + } + if (firstDescriptor.bytesFilled + view.byteLength > firstDescriptor.byteLength) { + throw new RangeError("The region specified by view is larger than byobRequest"); + } + const viewByteLength = view.byteLength; + firstDescriptor.buffer = TransferArrayBuffer(view.buffer); + ReadableByteStreamControllerRespondInternal(controller, viewByteLength); + } + function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) { + controller._controlledReadableByteStream = stream; + controller._pullAgain = false; + controller._pulling = false; + controller._byobRequest = null; + controller._queue = controller._queueTotalSize = void 0; + ResetQueue(controller); + controller._closeRequested = false; + controller._started = false; + controller._strategyHWM = highWaterMark; + controller._pullAlgorithm = pullAlgorithm; + controller._cancelAlgorithm = cancelAlgorithm; + controller._autoAllocateChunkSize = autoAllocateChunkSize; + controller._pendingPullIntos = new SimpleQueue(); + stream._readableStreamController = controller; + const startResult = startAlgorithm(); + uponPromise(promiseResolvedWith(startResult), () => { + controller._started = true; + ReadableByteStreamControllerCallPullIfNeeded(controller); + return null; + }, (r2) => { + ReadableByteStreamControllerError(controller, r2); + return null; }); - } else { - const auth6 = createTokenAuth(options.auth); - hook6.wrap("request", auth6.hook); - this.auth = auth6; } - } else { - const { authStrategy, ...otherOptions } = options; - const auth6 = authStrategy( - Object.assign( - { - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions - }, - options.auth - ) - ); - hook6.wrap("request", auth6.hook); - this.auth = auth6; - } - const classConstructor = this.constructor; - for (let i = 0; i < classConstructor.plugins.length; ++i) { - Object.assign(this, classConstructor.plugins[i](this, options)); - } - } - // assigned during constructor - request; - graphql; - log; - hook; - // TODO: type `octokit.auth` based on passed options.authStrategy - auth; -}; - -// -var VERSION5 = "17.0.0"; - -// -var Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: [ - "POST /orgs/{org}/actions/runners/{runner_id}/labels" - ], - addCustomLabelsToSelfHostedRunnerForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" - ], - addRepoAccessToSelfHostedRunnerGroupInOrg: [ - "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}" - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" - ], - addSelectedRepoToOrgVariable: [ - "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" - ], - approveWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" - ], - cancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" - ], - createEnvironmentVariable: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/variables" - ], - createHostedRunnerForOrg: ["POST /orgs/{org}/actions/hosted-runners"], - createOrUpdateEnvironmentSecret: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: [ - "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" - ], - createOrgVariable: ["POST /orgs/{org}/actions/variables"], - createRegistrationTokenForOrg: [ - "POST /orgs/{org}/actions/runners/registration-token" - ], - createRegistrationTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/registration-token" - ], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/remove-token" - ], - createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], - createWorkflowDispatch: [ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" - ], - deleteActionsCacheById: [ - "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" - ], - deleteActionsCacheByKey: [ - "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" - ], - deleteArtifact: [ - "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" - ], - deleteCustomImageFromOrg: [ - "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}" - ], - deleteCustomImageVersionFromOrg: [ - "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}" - ], - deleteEnvironmentSecret: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" - ], - deleteEnvironmentVariable: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" - ], - deleteHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" - ], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], - deleteRepoSecret: [ - "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" - ], - deleteRepoVariable: [ - "DELETE /repos/{owner}/{repo}/actions/variables/{name}" - ], - deleteSelfHostedRunnerFromOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}" - ], - deleteSelfHostedRunnerFromRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" - ], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: [ - "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" - ], - disableSelectedRepositoryGithubActionsOrganization: [ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" - ], - disableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" - ], - downloadArtifact: [ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" - ], - downloadJobLogsForWorkflowRun: [ - "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" - ], - downloadWorkflowRunAttemptLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" - ], - downloadWorkflowRunLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" - ], - enableSelectedRepositoryGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" - ], - enableWorkflow: [ - "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" - ], - forceCancelWorkflowRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel" - ], - generateRunnerJitconfigForOrg: [ - "POST /orgs/{org}/actions/runners/generate-jitconfig" - ], - generateRunnerJitconfigForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" - ], - getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) { + const controller = Object.create(ReadableByteStreamController.prototype); + let startAlgorithm; + let pullAlgorithm; + let cancelAlgorithm; + if (underlyingByteSource.start !== void 0) { + startAlgorithm = () => underlyingByteSource.start(controller); + } else { + startAlgorithm = () => void 0; + } + if (underlyingByteSource.pull !== void 0) { + pullAlgorithm = () => underlyingByteSource.pull(controller); + } else { + pullAlgorithm = () => promiseResolvedWith(void 0); + } + if (underlyingByteSource.cancel !== void 0) { + cancelAlgorithm = (reason) => underlyingByteSource.cancel(reason); + } else { + cancelAlgorithm = () => promiseResolvedWith(void 0); + } + const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; + if (autoAllocateChunkSize === 0) { + throw new TypeError("autoAllocateChunkSize must be greater than 0"); + } + SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize); + } + function SetUpReadableStreamBYOBRequest(request2, controller, view) { + request2._associatedReadableByteStreamController = controller; + request2._view = view; + } + function byobRequestBrandCheckException(name) { + return new TypeError(`ReadableStreamBYOBRequest.prototype.${name} can only be used on a ReadableStreamBYOBRequest`); + } + function byteStreamControllerBrandCheckException(name) { + return new TypeError(`ReadableByteStreamController.prototype.${name} can only be used on a ReadableByteStreamController`); + } + function convertReaderOptions(options, context3) { + assertDictionary(options, context3); + const mode = options === null || options === void 0 ? void 0 : options.mode; + return { + mode: mode === void 0 ? void 0 : convertReadableStreamReaderMode(mode, `${context3} has member 'mode' that`) + }; + } + function convertReadableStreamReaderMode(mode, context3) { + mode = `${mode}`; + if (mode !== "byob") { + throw new TypeError(`${context3} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`); + } + return mode; + } + function convertByobReadOptions(options, context3) { + var _a4; + assertDictionary(options, context3); + const min = (_a4 = options === null || options === void 0 ? void 0 : options.min) !== null && _a4 !== void 0 ? _a4 : 1; + return { + min: convertUnsignedLongLongWithEnforceRange(min, `${context3} has member 'min' that`) + }; + } + function AcquireReadableStreamBYOBReader(stream) { + return new ReadableStreamBYOBReader(stream); + } + function ReadableStreamAddReadIntoRequest(stream, readIntoRequest) { + stream._reader._readIntoRequests.push(readIntoRequest); + } + function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { + const reader = stream._reader; + const readIntoRequest = reader._readIntoRequests.shift(); + if (done) { + readIntoRequest._closeSteps(chunk); + } else { + readIntoRequest._chunkSteps(chunk); + } + } + function ReadableStreamGetNumReadIntoRequests(stream) { + return stream._reader._readIntoRequests.length; + } + function ReadableStreamHasBYOBReader(stream) { + const reader = stream._reader; + if (reader === void 0) { + return false; + } + if (!IsReadableStreamBYOBReader(reader)) { + return false; + } + return true; + } + class ReadableStreamBYOBReader { + constructor(stream) { + assertRequiredArgument(stream, 1, "ReadableStreamBYOBReader"); + assertReadableStream(stream, "First parameter"); + if (IsReadableStreamLocked(stream)) { + throw new TypeError("This stream has already been locked for exclusive reading by another reader"); + } + if (!IsReadableByteStreamController(stream._readableStreamController)) { + throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source"); + } + ReadableStreamReaderGenericInitialize(this, stream); + this._readIntoRequests = new SimpleQueue(); + } + /** + * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or + * the reader's lock is released before the stream finishes closing. + */ + get closed() { + if (!IsReadableStreamBYOBReader(this)) { + return promiseRejectedWith(byobReaderBrandCheckException("closed")); + } + return this._closedPromise; + } + /** + * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}. + */ + cancel(reason = void 0) { + if (!IsReadableStreamBYOBReader(this)) { + return promiseRejectedWith(byobReaderBrandCheckException("cancel")); + } + if (this._ownerReadableStream === void 0) { + return promiseRejectedWith(readerLockException("cancel")); + } + return ReadableStreamReaderGenericCancel(this, reason); + } + read(view, rawOptions = {}) { + if (!IsReadableStreamBYOBReader(this)) { + return promiseRejectedWith(byobReaderBrandCheckException("read")); + } + if (!ArrayBuffer.isView(view)) { + return promiseRejectedWith(new TypeError("view must be an array buffer view")); + } + if (view.byteLength === 0) { + return promiseRejectedWith(new TypeError("view must have non-zero byteLength")); + } + if (view.buffer.byteLength === 0) { + return promiseRejectedWith(new TypeError(`view's buffer must have non-zero byteLength`)); + } + if (IsDetachedBuffer(view.buffer)) { + return promiseRejectedWith(new TypeError("view's buffer has been detached")); + } + let options; + try { + options = convertByobReadOptions(rawOptions, "options"); + } catch (e2) { + return promiseRejectedWith(e2); + } + const min = options.min; + if (min === 0) { + return promiseRejectedWith(new TypeError("options.min must be greater than 0")); + } + if (!isDataView(view)) { + if (min > view.length) { + return promiseRejectedWith(new RangeError("options.min must be less than or equal to view's length")); + } + } else if (min > view.byteLength) { + return promiseRejectedWith(new RangeError("options.min must be less than or equal to view's byteLength")); + } + if (this._ownerReadableStream === void 0) { + return promiseRejectedWith(readerLockException("read from")); + } + let resolvePromise; + let rejectPromise; + const promise = newPromise((resolve2, reject) => { + resolvePromise = resolve2; + rejectPromise = reject; + }); + const readIntoRequest = { + _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }), + _closeSteps: (chunk) => resolvePromise({ value: chunk, done: true }), + _errorSteps: (e2) => rejectPromise(e2) + }; + ReadableStreamBYOBReaderRead(this, view, min, readIntoRequest); + return promise; + } + /** + * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active. + * If the associated stream is errored when the lock is released, the reader will appear errored in the same way + * from now on; otherwise, the reader will appear closed. + * + * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by + * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to + * do so will throw a `TypeError` and leave the reader locked to the stream. + */ + releaseLock() { + if (!IsReadableStreamBYOBReader(this)) { + throw byobReaderBrandCheckException("releaseLock"); + } + if (this._ownerReadableStream === void 0) { + return; + } + ReadableStreamBYOBReaderRelease(this); + } + } + Object.defineProperties(ReadableStreamBYOBReader.prototype, { + cancel: { enumerable: true }, + read: { enumerable: true }, + releaseLock: { enumerable: true }, + closed: { enumerable: true } + }); + setFunctionName(ReadableStreamBYOBReader.prototype.cancel, "cancel"); + setFunctionName(ReadableStreamBYOBReader.prototype.read, "read"); + setFunctionName(ReadableStreamBYOBReader.prototype.releaseLock, "releaseLock"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamBYOBReader.prototype, Symbol.toStringTag, { + value: "ReadableStreamBYOBReader", + configurable: true + }); + } + function IsReadableStreamBYOBReader(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_readIntoRequests")) { + return false; + } + return x2 instanceof ReadableStreamBYOBReader; + } + function ReadableStreamBYOBReaderRead(reader, view, min, readIntoRequest) { + const stream = reader._ownerReadableStream; + stream._disturbed = true; + if (stream._state === "errored") { + readIntoRequest._errorSteps(stream._storedError); + } else { + ReadableByteStreamControllerPullInto(stream._readableStreamController, view, min, readIntoRequest); + } + } + function ReadableStreamBYOBReaderRelease(reader) { + ReadableStreamReaderGenericRelease(reader); + const e2 = new TypeError("Reader was released"); + ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e2); + } + function ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e2) { + const readIntoRequests = reader._readIntoRequests; + reader._readIntoRequests = new SimpleQueue(); + readIntoRequests.forEach((readIntoRequest) => { + readIntoRequest._errorSteps(e2); + }); + } + function byobReaderBrandCheckException(name) { + return new TypeError(`ReadableStreamBYOBReader.prototype.${name} can only be used on a ReadableStreamBYOBReader`); + } + function ExtractHighWaterMark(strategy, defaultHWM) { + const { highWaterMark } = strategy; + if (highWaterMark === void 0) { + return defaultHWM; + } + if (NumberIsNaN(highWaterMark) || highWaterMark < 0) { + throw new RangeError("Invalid highWaterMark"); + } + return highWaterMark; + } + function ExtractSizeAlgorithm(strategy) { + const { size } = strategy; + if (!size) { + return () => 1; + } + return size; + } + function convertQueuingStrategy(init, context3) { + assertDictionary(init, context3); + const highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark; + const size = init === null || init === void 0 ? void 0 : init.size; + return { + highWaterMark: highWaterMark === void 0 ? void 0 : convertUnrestrictedDouble(highWaterMark), + size: size === void 0 ? void 0 : convertQueuingStrategySize(size, `${context3} has member 'size' that`) + }; + } + function convertQueuingStrategySize(fn, context3) { + assertFunction(fn, context3); + return (chunk) => convertUnrestrictedDouble(fn(chunk)); + } + function convertUnderlyingSink(original, context3) { + assertDictionary(original, context3); + const abort = original === null || original === void 0 ? void 0 : original.abort; + const close = original === null || original === void 0 ? void 0 : original.close; + const start = original === null || original === void 0 ? void 0 : original.start; + const type = original === null || original === void 0 ? void 0 : original.type; + const write = original === null || original === void 0 ? void 0 : original.write; + return { + abort: abort === void 0 ? void 0 : convertUnderlyingSinkAbortCallback(abort, original, `${context3} has member 'abort' that`), + close: close === void 0 ? void 0 : convertUnderlyingSinkCloseCallback(close, original, `${context3} has member 'close' that`), + start: start === void 0 ? void 0 : convertUnderlyingSinkStartCallback(start, original, `${context3} has member 'start' that`), + write: write === void 0 ? void 0 : convertUnderlyingSinkWriteCallback(write, original, `${context3} has member 'write' that`), + type + }; + } + function convertUnderlyingSinkAbortCallback(fn, original, context3) { + assertFunction(fn, context3); + return (reason) => promiseCall(fn, original, [reason]); + } + function convertUnderlyingSinkCloseCallback(fn, original, context3) { + assertFunction(fn, context3); + return () => promiseCall(fn, original, []); + } + function convertUnderlyingSinkStartCallback(fn, original, context3) { + assertFunction(fn, context3); + return (controller) => reflectCall(fn, original, [controller]); + } + function convertUnderlyingSinkWriteCallback(fn, original, context3) { + assertFunction(fn, context3); + return (chunk, controller) => promiseCall(fn, original, [chunk, controller]); + } + function assertWritableStream(x2, context3) { + if (!IsWritableStream(x2)) { + throw new TypeError(`${context3} is not a WritableStream.`); + } + } + function isAbortSignal2(value) { + if (typeof value !== "object" || value === null) { + return false; + } + try { + return typeof value.aborted === "boolean"; + } catch (_a4) { + return false; + } + } + const supportsAbortController = typeof AbortController === "function"; + function createAbortController() { + if (supportsAbortController) { + return new AbortController(); + } + return void 0; + } + class WritableStream { + constructor(rawUnderlyingSink = {}, rawStrategy = {}) { + if (rawUnderlyingSink === void 0) { + rawUnderlyingSink = null; + } else { + assertObject(rawUnderlyingSink, "First parameter"); + } + const strategy = convertQueuingStrategy(rawStrategy, "Second parameter"); + const underlyingSink = convertUnderlyingSink(rawUnderlyingSink, "First parameter"); + InitializeWritableStream(this); + const type = underlyingSink.type; + if (type !== void 0) { + throw new RangeError("Invalid type is specified"); + } + const sizeAlgorithm = ExtractSizeAlgorithm(strategy); + const highWaterMark = ExtractHighWaterMark(strategy, 1); + SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm); + } + /** + * Returns whether or not the writable stream is locked to a writer. + */ + get locked() { + if (!IsWritableStream(this)) { + throw streamBrandCheckException$2("locked"); + } + return IsWritableStreamLocked(this); + } + /** + * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be + * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort + * mechanism of the underlying sink. + * + * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled + * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel + * the stream) if the stream is currently locked. + */ + abort(reason = void 0) { + if (!IsWritableStream(this)) { + return promiseRejectedWith(streamBrandCheckException$2("abort")); + } + if (IsWritableStreamLocked(this)) { + return promiseRejectedWith(new TypeError("Cannot abort a stream that already has a writer")); + } + return WritableStreamAbort(this, reason); + } + /** + * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its + * close behavior. During this time any further attempts to write will fail (without erroring the stream). + * + * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream + * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with + * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked. + */ + close() { + if (!IsWritableStream(this)) { + return promiseRejectedWith(streamBrandCheckException$2("close")); + } + if (IsWritableStreamLocked(this)) { + return promiseRejectedWith(new TypeError("Cannot close a stream that already has a writer")); + } + if (WritableStreamCloseQueuedOrInFlight(this)) { + return promiseRejectedWith(new TypeError("Cannot close an already-closing stream")); + } + return WritableStreamClose(this); + } + /** + * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream + * is locked, no other writer can be acquired until this one is released. + * + * This functionality is especially useful for creating abstractions that desire the ability to write to a stream + * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at + * the same time, which would cause the resulting written data to be unpredictable and probably useless. + */ + getWriter() { + if (!IsWritableStream(this)) { + throw streamBrandCheckException$2("getWriter"); + } + return AcquireWritableStreamDefaultWriter(this); + } + } + Object.defineProperties(WritableStream.prototype, { + abort: { enumerable: true }, + close: { enumerable: true }, + getWriter: { enumerable: true }, + locked: { enumerable: true } + }); + setFunctionName(WritableStream.prototype.abort, "abort"); + setFunctionName(WritableStream.prototype.close, "close"); + setFunctionName(WritableStream.prototype.getWriter, "getWriter"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(WritableStream.prototype, Symbol.toStringTag, { + value: "WritableStream", + configurable: true + }); + } + function AcquireWritableStreamDefaultWriter(stream) { + return new WritableStreamDefaultWriter(stream); + } + function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) { + const stream = Object.create(WritableStream.prototype); + InitializeWritableStream(stream); + const controller = Object.create(WritableStreamDefaultController.prototype); + SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm); + return stream; + } + function InitializeWritableStream(stream) { + stream._state = "writable"; + stream._storedError = void 0; + stream._writer = void 0; + stream._writableStreamController = void 0; + stream._writeRequests = new SimpleQueue(); + stream._inFlightWriteRequest = void 0; + stream._closeRequest = void 0; + stream._inFlightCloseRequest = void 0; + stream._pendingAbortRequest = void 0; + stream._backpressure = false; + } + function IsWritableStream(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_writableStreamController")) { + return false; + } + return x2 instanceof WritableStream; + } + function IsWritableStreamLocked(stream) { + if (stream._writer === void 0) { + return false; + } + return true; + } + function WritableStreamAbort(stream, reason) { + var _a4; + if (stream._state === "closed" || stream._state === "errored") { + return promiseResolvedWith(void 0); + } + stream._writableStreamController._abortReason = reason; + (_a4 = stream._writableStreamController._abortController) === null || _a4 === void 0 ? void 0 : _a4.abort(reason); + const state = stream._state; + if (state === "closed" || state === "errored") { + return promiseResolvedWith(void 0); + } + if (stream._pendingAbortRequest !== void 0) { + return stream._pendingAbortRequest._promise; + } + let wasAlreadyErroring = false; + if (state === "erroring") { + wasAlreadyErroring = true; + reason = void 0; + } + const promise = newPromise((resolve2, reject) => { + stream._pendingAbortRequest = { + _promise: void 0, + _resolve: resolve2, + _reject: reject, + _reason: reason, + _wasAlreadyErroring: wasAlreadyErroring + }; + }); + stream._pendingAbortRequest._promise = promise; + if (!wasAlreadyErroring) { + WritableStreamStartErroring(stream, reason); + } + return promise; + } + function WritableStreamClose(stream) { + const state = stream._state; + if (state === "closed" || state === "errored") { + return promiseRejectedWith(new TypeError(`The stream (in ${state} state) is not in the writable state and cannot be closed`)); + } + const promise = newPromise((resolve2, reject) => { + const closeRequest = { + _resolve: resolve2, + _reject: reject + }; + stream._closeRequest = closeRequest; + }); + const writer = stream._writer; + if (writer !== void 0 && stream._backpressure && state === "writable") { + defaultWriterReadyPromiseResolve(writer); + } + WritableStreamDefaultControllerClose(stream._writableStreamController); + return promise; + } + function WritableStreamAddWriteRequest(stream) { + const promise = newPromise((resolve2, reject) => { + const writeRequest = { + _resolve: resolve2, + _reject: reject + }; + stream._writeRequests.push(writeRequest); + }); + return promise; + } + function WritableStreamDealWithRejection(stream, error2) { + const state = stream._state; + if (state === "writable") { + WritableStreamStartErroring(stream, error2); + return; + } + WritableStreamFinishErroring(stream); + } + function WritableStreamStartErroring(stream, reason) { + const controller = stream._writableStreamController; + stream._state = "erroring"; + stream._storedError = reason; + const writer = stream._writer; + if (writer !== void 0) { + WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); + } + if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) { + WritableStreamFinishErroring(stream); + } + } + function WritableStreamFinishErroring(stream) { + stream._state = "errored"; + stream._writableStreamController[ErrorSteps](); + const storedError = stream._storedError; + stream._writeRequests.forEach((writeRequest) => { + writeRequest._reject(storedError); + }); + stream._writeRequests = new SimpleQueue(); + if (stream._pendingAbortRequest === void 0) { + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return; + } + const abortRequest = stream._pendingAbortRequest; + stream._pendingAbortRequest = void 0; + if (abortRequest._wasAlreadyErroring) { + abortRequest._reject(storedError); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return; + } + const promise = stream._writableStreamController[AbortSteps](abortRequest._reason); + uponPromise(promise, () => { + abortRequest._resolve(); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return null; + }, (reason) => { + abortRequest._reject(reason); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return null; + }); + } + function WritableStreamFinishInFlightWrite(stream) { + stream._inFlightWriteRequest._resolve(void 0); + stream._inFlightWriteRequest = void 0; + } + function WritableStreamFinishInFlightWriteWithError(stream, error2) { + stream._inFlightWriteRequest._reject(error2); + stream._inFlightWriteRequest = void 0; + WritableStreamDealWithRejection(stream, error2); + } + function WritableStreamFinishInFlightClose(stream) { + stream._inFlightCloseRequest._resolve(void 0); + stream._inFlightCloseRequest = void 0; + const state = stream._state; + if (state === "erroring") { + stream._storedError = void 0; + if (stream._pendingAbortRequest !== void 0) { + stream._pendingAbortRequest._resolve(); + stream._pendingAbortRequest = void 0; + } + } + stream._state = "closed"; + const writer = stream._writer; + if (writer !== void 0) { + defaultWriterClosedPromiseResolve(writer); + } + } + function WritableStreamFinishInFlightCloseWithError(stream, error2) { + stream._inFlightCloseRequest._reject(error2); + stream._inFlightCloseRequest = void 0; + if (stream._pendingAbortRequest !== void 0) { + stream._pendingAbortRequest._reject(error2); + stream._pendingAbortRequest = void 0; + } + WritableStreamDealWithRejection(stream, error2); + } + function WritableStreamCloseQueuedOrInFlight(stream) { + if (stream._closeRequest === void 0 && stream._inFlightCloseRequest === void 0) { + return false; + } + return true; + } + function WritableStreamHasOperationMarkedInFlight(stream) { + if (stream._inFlightWriteRequest === void 0 && stream._inFlightCloseRequest === void 0) { + return false; + } + return true; + } + function WritableStreamMarkCloseRequestInFlight(stream) { + stream._inFlightCloseRequest = stream._closeRequest; + stream._closeRequest = void 0; + } + function WritableStreamMarkFirstWriteRequestInFlight(stream) { + stream._inFlightWriteRequest = stream._writeRequests.shift(); + } + function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { + if (stream._closeRequest !== void 0) { + stream._closeRequest._reject(stream._storedError); + stream._closeRequest = void 0; + } + const writer = stream._writer; + if (writer !== void 0) { + defaultWriterClosedPromiseReject(writer, stream._storedError); + } + } + function WritableStreamUpdateBackpressure(stream, backpressure) { + const writer = stream._writer; + if (writer !== void 0 && backpressure !== stream._backpressure) { + if (backpressure) { + defaultWriterReadyPromiseReset(writer); + } else { + defaultWriterReadyPromiseResolve(writer); + } + } + stream._backpressure = backpressure; + } + class WritableStreamDefaultWriter { + constructor(stream) { + assertRequiredArgument(stream, 1, "WritableStreamDefaultWriter"); + assertWritableStream(stream, "First parameter"); + if (IsWritableStreamLocked(stream)) { + throw new TypeError("This stream has already been locked for exclusive writing by another writer"); + } + this._ownerWritableStream = stream; + stream._writer = this; + const state = stream._state; + if (state === "writable") { + if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) { + defaultWriterReadyPromiseInitialize(this); + } else { + defaultWriterReadyPromiseInitializeAsResolved(this); + } + defaultWriterClosedPromiseInitialize(this); + } else if (state === "erroring") { + defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); + defaultWriterClosedPromiseInitialize(this); + } else if (state === "closed") { + defaultWriterReadyPromiseInitializeAsResolved(this); + defaultWriterClosedPromiseInitializeAsResolved(this); + } else { + const storedError = stream._storedError; + defaultWriterReadyPromiseInitializeAsRejected(this, storedError); + defaultWriterClosedPromiseInitializeAsRejected(this, storedError); + } + } + /** + * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or + * the writer’s lock is released before the stream finishes closing. + */ + get closed() { + if (!IsWritableStreamDefaultWriter(this)) { + return promiseRejectedWith(defaultWriterBrandCheckException("closed")); + } + return this._closedPromise; + } + /** + * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full. + * A producer can use this information to determine the right amount of data to write. + * + * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort + * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when + * the writer’s lock is released. + */ + get desiredSize() { + if (!IsWritableStreamDefaultWriter(this)) { + throw defaultWriterBrandCheckException("desiredSize"); + } + if (this._ownerWritableStream === void 0) { + throw defaultWriterLockException("desiredSize"); + } + return WritableStreamDefaultWriterGetDesiredSize(this); + } + /** + * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions + * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips + * back to zero or below, the getter will return a new promise that stays pending until the next transition. + * + * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become + * rejected. + */ + get ready() { + if (!IsWritableStreamDefaultWriter(this)) { + return promiseRejectedWith(defaultWriterBrandCheckException("ready")); + } + return this._readyPromise; + } + /** + * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}. + */ + abort(reason = void 0) { + if (!IsWritableStreamDefaultWriter(this)) { + return promiseRejectedWith(defaultWriterBrandCheckException("abort")); + } + if (this._ownerWritableStream === void 0) { + return promiseRejectedWith(defaultWriterLockException("abort")); + } + return WritableStreamDefaultWriterAbort(this, reason); + } + /** + * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}. + */ + close() { + if (!IsWritableStreamDefaultWriter(this)) { + return promiseRejectedWith(defaultWriterBrandCheckException("close")); + } + const stream = this._ownerWritableStream; + if (stream === void 0) { + return promiseRejectedWith(defaultWriterLockException("close")); + } + if (WritableStreamCloseQueuedOrInFlight(stream)) { + return promiseRejectedWith(new TypeError("Cannot close an already-closing stream")); + } + return WritableStreamDefaultWriterClose(this); + } + /** + * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active. + * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from + * now on; otherwise, the writer will appear closed. + * + * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the + * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled). + * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents + * other producers from writing in an interleaved manner. + */ + releaseLock() { + if (!IsWritableStreamDefaultWriter(this)) { + throw defaultWriterBrandCheckException("releaseLock"); + } + const stream = this._ownerWritableStream; + if (stream === void 0) { + return; + } + WritableStreamDefaultWriterRelease(this); + } + write(chunk = void 0) { + if (!IsWritableStreamDefaultWriter(this)) { + return promiseRejectedWith(defaultWriterBrandCheckException("write")); + } + if (this._ownerWritableStream === void 0) { + return promiseRejectedWith(defaultWriterLockException("write to")); + } + return WritableStreamDefaultWriterWrite(this, chunk); + } + } + Object.defineProperties(WritableStreamDefaultWriter.prototype, { + abort: { enumerable: true }, + close: { enumerable: true }, + releaseLock: { enumerable: true }, + write: { enumerable: true }, + closed: { enumerable: true }, + desiredSize: { enumerable: true }, + ready: { enumerable: true } + }); + setFunctionName(WritableStreamDefaultWriter.prototype.abort, "abort"); + setFunctionName(WritableStreamDefaultWriter.prototype.close, "close"); + setFunctionName(WritableStreamDefaultWriter.prototype.releaseLock, "releaseLock"); + setFunctionName(WritableStreamDefaultWriter.prototype.write, "write"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(WritableStreamDefaultWriter.prototype, Symbol.toStringTag, { + value: "WritableStreamDefaultWriter", + configurable: true + }); + } + function IsWritableStreamDefaultWriter(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_ownerWritableStream")) { + return false; + } + return x2 instanceof WritableStreamDefaultWriter; + } + function WritableStreamDefaultWriterAbort(writer, reason) { + const stream = writer._ownerWritableStream; + return WritableStreamAbort(stream, reason); + } + function WritableStreamDefaultWriterClose(writer) { + const stream = writer._ownerWritableStream; + return WritableStreamClose(stream); + } + function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { + const stream = writer._ownerWritableStream; + const state = stream._state; + if (WritableStreamCloseQueuedOrInFlight(stream) || state === "closed") { + return promiseResolvedWith(void 0); + } + if (state === "errored") { + return promiseRejectedWith(stream._storedError); + } + return WritableStreamDefaultWriterClose(writer); + } + function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error2) { + if (writer._closedPromiseState === "pending") { + defaultWriterClosedPromiseReject(writer, error2); + } else { + defaultWriterClosedPromiseResetToRejected(writer, error2); + } + } + function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error2) { + if (writer._readyPromiseState === "pending") { + defaultWriterReadyPromiseReject(writer, error2); + } else { + defaultWriterReadyPromiseResetToRejected(writer, error2); + } + } + function WritableStreamDefaultWriterGetDesiredSize(writer) { + const stream = writer._ownerWritableStream; + const state = stream._state; + if (state === "errored" || state === "erroring") { + return null; + } + if (state === "closed") { + return 0; + } + return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); + } + function WritableStreamDefaultWriterRelease(writer) { + const stream = writer._ownerWritableStream; + const releasedError = new TypeError(`Writer was released and can no longer be used to monitor the stream's closedness`); + WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); + WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); + stream._writer = void 0; + writer._ownerWritableStream = void 0; + } + function WritableStreamDefaultWriterWrite(writer, chunk) { + const stream = writer._ownerWritableStream; + const controller = stream._writableStreamController; + const chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); + if (stream !== writer._ownerWritableStream) { + return promiseRejectedWith(defaultWriterLockException("write to")); + } + const state = stream._state; + if (state === "errored") { + return promiseRejectedWith(stream._storedError); + } + if (WritableStreamCloseQueuedOrInFlight(stream) || state === "closed") { + return promiseRejectedWith(new TypeError("The stream is closing or closed and cannot be written to")); + } + if (state === "erroring") { + return promiseRejectedWith(stream._storedError); + } + const promise = WritableStreamAddWriteRequest(stream); + WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); + return promise; + } + const closeSentinel = {}; + class WritableStreamDefaultController { + constructor() { + throw new TypeError("Illegal constructor"); + } + /** + * The reason which was passed to `WritableStream.abort(reason)` when the stream was aborted. + * + * @deprecated + * This property has been removed from the specification, see https://github.com/whatwg/streams/pull/1177. + * Use {@link WritableStreamDefaultController.signal}'s `reason` instead. + */ + get abortReason() { + if (!IsWritableStreamDefaultController(this)) { + throw defaultControllerBrandCheckException$2("abortReason"); + } + return this._abortReason; + } + /** + * An `AbortSignal` that can be used to abort the pending write or close operation when the stream is aborted. + */ + get signal() { + if (!IsWritableStreamDefaultController(this)) { + throw defaultControllerBrandCheckException$2("signal"); + } + if (this._abortController === void 0) { + throw new TypeError("WritableStreamDefaultController.prototype.signal is not supported"); + } + return this._abortController.signal; + } + /** + * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`. + * + * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying + * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the + * normal lifecycle of interactions with the underlying sink. + */ + error(e2 = void 0) { + if (!IsWritableStreamDefaultController(this)) { + throw defaultControllerBrandCheckException$2("error"); + } + const state = this._controlledWritableStream._state; + if (state !== "writable") { + return; + } + WritableStreamDefaultControllerError(this, e2); + } + /** @internal */ + [AbortSteps](reason) { + const result = this._abortAlgorithm(reason); + WritableStreamDefaultControllerClearAlgorithms(this); + return result; + } + /** @internal */ + [ErrorSteps]() { + ResetQueue(this); + } + } + Object.defineProperties(WritableStreamDefaultController.prototype, { + abortReason: { enumerable: true }, + signal: { enumerable: true }, + error: { enumerable: true } + }); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(WritableStreamDefaultController.prototype, Symbol.toStringTag, { + value: "WritableStreamDefaultController", + configurable: true + }); + } + function IsWritableStreamDefaultController(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_controlledWritableStream")) { + return false; + } + return x2 instanceof WritableStreamDefaultController; + } + function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) { + controller._controlledWritableStream = stream; + stream._writableStreamController = controller; + controller._queue = void 0; + controller._queueTotalSize = void 0; + ResetQueue(controller); + controller._abortReason = void 0; + controller._abortController = createAbortController(); + controller._started = false; + controller._strategySizeAlgorithm = sizeAlgorithm; + controller._strategyHWM = highWaterMark; + controller._writeAlgorithm = writeAlgorithm; + controller._closeAlgorithm = closeAlgorithm; + controller._abortAlgorithm = abortAlgorithm; + const backpressure = WritableStreamDefaultControllerGetBackpressure(controller); + WritableStreamUpdateBackpressure(stream, backpressure); + const startResult = startAlgorithm(); + const startPromise = promiseResolvedWith(startResult); + uponPromise(startPromise, () => { + controller._started = true; + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + return null; + }, (r2) => { + controller._started = true; + WritableStreamDealWithRejection(stream, r2); + return null; + }); + } + function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) { + const controller = Object.create(WritableStreamDefaultController.prototype); + let startAlgorithm; + let writeAlgorithm; + let closeAlgorithm; + let abortAlgorithm; + if (underlyingSink.start !== void 0) { + startAlgorithm = () => underlyingSink.start(controller); + } else { + startAlgorithm = () => void 0; + } + if (underlyingSink.write !== void 0) { + writeAlgorithm = (chunk) => underlyingSink.write(chunk, controller); + } else { + writeAlgorithm = () => promiseResolvedWith(void 0); + } + if (underlyingSink.close !== void 0) { + closeAlgorithm = () => underlyingSink.close(); + } else { + closeAlgorithm = () => promiseResolvedWith(void 0); + } + if (underlyingSink.abort !== void 0) { + abortAlgorithm = (reason) => underlyingSink.abort(reason); + } else { + abortAlgorithm = () => promiseResolvedWith(void 0); + } + SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm); + } + function WritableStreamDefaultControllerClearAlgorithms(controller) { + controller._writeAlgorithm = void 0; + controller._closeAlgorithm = void 0; + controller._abortAlgorithm = void 0; + controller._strategySizeAlgorithm = void 0; + } + function WritableStreamDefaultControllerClose(controller) { + EnqueueValueWithSize(controller, closeSentinel, 0); + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { + try { + return controller._strategySizeAlgorithm(chunk); + } catch (chunkSizeE) { + WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); + return 1; + } + } + function WritableStreamDefaultControllerGetDesiredSize(controller) { + return controller._strategyHWM - controller._queueTotalSize; + } + function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { + try { + EnqueueValueWithSize(controller, chunk, chunkSize); + } catch (enqueueE) { + WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); + return; + } + const stream = controller._controlledWritableStream; + if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === "writable") { + const backpressure = WritableStreamDefaultControllerGetBackpressure(controller); + WritableStreamUpdateBackpressure(stream, backpressure); + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { + const stream = controller._controlledWritableStream; + if (!controller._started) { + return; + } + if (stream._inFlightWriteRequest !== void 0) { + return; + } + const state = stream._state; + if (state === "erroring") { + WritableStreamFinishErroring(stream); + return; + } + if (controller._queue.length === 0) { + return; + } + const value = PeekQueueValue(controller); + if (value === closeSentinel) { + WritableStreamDefaultControllerProcessClose(controller); + } else { + WritableStreamDefaultControllerProcessWrite(controller, value); + } + } + function WritableStreamDefaultControllerErrorIfNeeded(controller, error2) { + if (controller._controlledWritableStream._state === "writable") { + WritableStreamDefaultControllerError(controller, error2); + } + } + function WritableStreamDefaultControllerProcessClose(controller) { + const stream = controller._controlledWritableStream; + WritableStreamMarkCloseRequestInFlight(stream); + DequeueValue(controller); + const sinkClosePromise = controller._closeAlgorithm(); + WritableStreamDefaultControllerClearAlgorithms(controller); + uponPromise(sinkClosePromise, () => { + WritableStreamFinishInFlightClose(stream); + return null; + }, (reason) => { + WritableStreamFinishInFlightCloseWithError(stream, reason); + return null; + }); + } + function WritableStreamDefaultControllerProcessWrite(controller, chunk) { + const stream = controller._controlledWritableStream; + WritableStreamMarkFirstWriteRequestInFlight(stream); + const sinkWritePromise = controller._writeAlgorithm(chunk); + uponPromise(sinkWritePromise, () => { + WritableStreamFinishInFlightWrite(stream); + const state = stream._state; + DequeueValue(controller); + if (!WritableStreamCloseQueuedOrInFlight(stream) && state === "writable") { + const backpressure = WritableStreamDefaultControllerGetBackpressure(controller); + WritableStreamUpdateBackpressure(stream, backpressure); + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + return null; + }, (reason) => { + if (stream._state === "writable") { + WritableStreamDefaultControllerClearAlgorithms(controller); + } + WritableStreamFinishInFlightWriteWithError(stream, reason); + return null; + }); + } + function WritableStreamDefaultControllerGetBackpressure(controller) { + const desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); + return desiredSize <= 0; + } + function WritableStreamDefaultControllerError(controller, error2) { + const stream = controller._controlledWritableStream; + WritableStreamDefaultControllerClearAlgorithms(controller); + WritableStreamStartErroring(stream, error2); + } + function streamBrandCheckException$2(name) { + return new TypeError(`WritableStream.prototype.${name} can only be used on a WritableStream`); + } + function defaultControllerBrandCheckException$2(name) { + return new TypeError(`WritableStreamDefaultController.prototype.${name} can only be used on a WritableStreamDefaultController`); + } + function defaultWriterBrandCheckException(name) { + return new TypeError(`WritableStreamDefaultWriter.prototype.${name} can only be used on a WritableStreamDefaultWriter`); + } + function defaultWriterLockException(name) { + return new TypeError("Cannot " + name + " a stream using a released writer"); + } + function defaultWriterClosedPromiseInitialize(writer) { + writer._closedPromise = newPromise((resolve2, reject) => { + writer._closedPromise_resolve = resolve2; + writer._closedPromise_reject = reject; + writer._closedPromiseState = "pending"; + }); + } + function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { + defaultWriterClosedPromiseInitialize(writer); + defaultWriterClosedPromiseReject(writer, reason); + } + function defaultWriterClosedPromiseInitializeAsResolved(writer) { + defaultWriterClosedPromiseInitialize(writer); + defaultWriterClosedPromiseResolve(writer); + } + function defaultWriterClosedPromiseReject(writer, reason) { + if (writer._closedPromise_reject === void 0) { + return; + } + setPromiseIsHandledToTrue(writer._closedPromise); + writer._closedPromise_reject(reason); + writer._closedPromise_resolve = void 0; + writer._closedPromise_reject = void 0; + writer._closedPromiseState = "rejected"; + } + function defaultWriterClosedPromiseResetToRejected(writer, reason) { + defaultWriterClosedPromiseInitializeAsRejected(writer, reason); + } + function defaultWriterClosedPromiseResolve(writer) { + if (writer._closedPromise_resolve === void 0) { + return; + } + writer._closedPromise_resolve(void 0); + writer._closedPromise_resolve = void 0; + writer._closedPromise_reject = void 0; + writer._closedPromiseState = "resolved"; + } + function defaultWriterReadyPromiseInitialize(writer) { + writer._readyPromise = newPromise((resolve2, reject) => { + writer._readyPromise_resolve = resolve2; + writer._readyPromise_reject = reject; + }); + writer._readyPromiseState = "pending"; + } + function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { + defaultWriterReadyPromiseInitialize(writer); + defaultWriterReadyPromiseReject(writer, reason); + } + function defaultWriterReadyPromiseInitializeAsResolved(writer) { + defaultWriterReadyPromiseInitialize(writer); + defaultWriterReadyPromiseResolve(writer); + } + function defaultWriterReadyPromiseReject(writer, reason) { + if (writer._readyPromise_reject === void 0) { + return; + } + setPromiseIsHandledToTrue(writer._readyPromise); + writer._readyPromise_reject(reason); + writer._readyPromise_resolve = void 0; + writer._readyPromise_reject = void 0; + writer._readyPromiseState = "rejected"; + } + function defaultWriterReadyPromiseReset(writer) { + defaultWriterReadyPromiseInitialize(writer); + } + function defaultWriterReadyPromiseResetToRejected(writer, reason) { + defaultWriterReadyPromiseInitializeAsRejected(writer, reason); + } + function defaultWriterReadyPromiseResolve(writer) { + if (writer._readyPromise_resolve === void 0) { + return; + } + writer._readyPromise_resolve(void 0); + writer._readyPromise_resolve = void 0; + writer._readyPromise_reject = void 0; + writer._readyPromiseState = "fulfilled"; + } + function getGlobals() { + if (typeof globalThis !== "undefined") { + return globalThis; + } else if (typeof self !== "undefined") { + return self; + } else if (typeof global !== "undefined") { + return global; + } + return void 0; + } + const globals = getGlobals(); + function isDOMExceptionConstructor(ctor) { + if (!(typeof ctor === "function" || typeof ctor === "object")) { + return false; + } + if (ctor.name !== "DOMException") { + return false; + } + try { + new ctor(); + return true; + } catch (_a4) { + return false; + } + } + function getFromGlobal() { + const ctor = globals === null || globals === void 0 ? void 0 : globals.DOMException; + return isDOMExceptionConstructor(ctor) ? ctor : void 0; + } + function createPolyfill() { + const ctor = function DOMException4(message, name) { + this.message = message || ""; + this.name = name || "Error"; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + }; + setFunctionName(ctor, "DOMException"); + ctor.prototype = Object.create(Error.prototype); + Object.defineProperty(ctor.prototype, "constructor", { value: ctor, writable: true, configurable: true }); + return ctor; + } + const DOMException3 = getFromGlobal() || createPolyfill(); + function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) { + const reader = AcquireReadableStreamDefaultReader(source); + const writer = AcquireWritableStreamDefaultWriter(dest); + source._disturbed = true; + let shuttingDown = false; + let currentWrite = promiseResolvedWith(void 0); + return newPromise((resolve2, reject) => { + let abortAlgorithm; + if (signal !== void 0) { + abortAlgorithm = () => { + const error2 = signal.reason !== void 0 ? signal.reason : new DOMException3("Aborted", "AbortError"); + const actions = []; + if (!preventAbort) { + actions.push(() => { + if (dest._state === "writable") { + return WritableStreamAbort(dest, error2); + } + return promiseResolvedWith(void 0); + }); + } + if (!preventCancel) { + actions.push(() => { + if (source._state === "readable") { + return ReadableStreamCancel(source, error2); + } + return promiseResolvedWith(void 0); + }); + } + shutdownWithAction(() => Promise.all(actions.map((action) => action())), true, error2); + }; + if (signal.aborted) { + abortAlgorithm(); + return; + } + signal.addEventListener("abort", abortAlgorithm); + } + function pipeLoop() { + return newPromise((resolveLoop, rejectLoop) => { + function next(done) { + if (done) { + resolveLoop(); + } else { + PerformPromiseThen(pipeStep(), next, rejectLoop); + } + } + next(false); + }); + } + function pipeStep() { + if (shuttingDown) { + return promiseResolvedWith(true); + } + return PerformPromiseThen(writer._readyPromise, () => { + return newPromise((resolveRead, rejectRead) => { + ReadableStreamDefaultReaderRead(reader, { + _chunkSteps: (chunk) => { + currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), void 0, noop5); + resolveRead(false); + }, + _closeSteps: () => resolveRead(true), + _errorSteps: rejectRead + }); + }); + }); + } + isOrBecomesErrored(source, reader._closedPromise, (storedError) => { + if (!preventAbort) { + shutdownWithAction(() => WritableStreamAbort(dest, storedError), true, storedError); + } else { + shutdown(true, storedError); + } + return null; + }); + isOrBecomesErrored(dest, writer._closedPromise, (storedError) => { + if (!preventCancel) { + shutdownWithAction(() => ReadableStreamCancel(source, storedError), true, storedError); + } else { + shutdown(true, storedError); + } + return null; + }); + isOrBecomesClosed(source, reader._closedPromise, () => { + if (!preventClose) { + shutdownWithAction(() => WritableStreamDefaultWriterCloseWithErrorPropagation(writer)); + } else { + shutdown(); + } + return null; + }); + if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === "closed") { + const destClosed = new TypeError("the destination writable stream closed before all data could be piped to it"); + if (!preventCancel) { + shutdownWithAction(() => ReadableStreamCancel(source, destClosed), true, destClosed); + } else { + shutdown(true, destClosed); + } + } + setPromiseIsHandledToTrue(pipeLoop()); + function waitForWritesToFinish() { + const oldCurrentWrite = currentWrite; + return PerformPromiseThen(currentWrite, () => oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : void 0); + } + function isOrBecomesErrored(stream, promise, action) { + if (stream._state === "errored") { + action(stream._storedError); + } else { + uponRejection(promise, action); + } + } + function isOrBecomesClosed(stream, promise, action) { + if (stream._state === "closed") { + action(); + } else { + uponFulfillment(promise, action); + } + } + function shutdownWithAction(action, originalIsError, originalError) { + if (shuttingDown) { + return; + } + shuttingDown = true; + if (dest._state === "writable" && !WritableStreamCloseQueuedOrInFlight(dest)) { + uponFulfillment(waitForWritesToFinish(), doTheRest); + } else { + doTheRest(); + } + function doTheRest() { + uponPromise(action(), () => finalize(originalIsError, originalError), (newError) => finalize(true, newError)); + return null; + } + } + function shutdown(isError, error2) { + if (shuttingDown) { + return; + } + shuttingDown = true; + if (dest._state === "writable" && !WritableStreamCloseQueuedOrInFlight(dest)) { + uponFulfillment(waitForWritesToFinish(), () => finalize(isError, error2)); + } else { + finalize(isError, error2); + } + } + function finalize(isError, error2) { + WritableStreamDefaultWriterRelease(writer); + ReadableStreamReaderGenericRelease(reader); + if (signal !== void 0) { + signal.removeEventListener("abort", abortAlgorithm); + } + if (isError) { + reject(error2); + } else { + resolve2(void 0); + } + return null; + } + }); + } + class ReadableStreamDefaultController { + constructor() { + throw new TypeError("Illegal constructor"); + } + /** + * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is + * over-full. An underlying source ought to use this information to determine when and how to apply backpressure. + */ + get desiredSize() { + if (!IsReadableStreamDefaultController(this)) { + throw defaultControllerBrandCheckException$1("desiredSize"); + } + return ReadableStreamDefaultControllerGetDesiredSize(this); + } + /** + * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from + * the stream, but once those are read, the stream will become closed. + */ + close() { + if (!IsReadableStreamDefaultController(this)) { + throw defaultControllerBrandCheckException$1("close"); + } + if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) { + throw new TypeError("The stream is not in a state that permits close"); + } + ReadableStreamDefaultControllerClose(this); + } + enqueue(chunk = void 0) { + if (!IsReadableStreamDefaultController(this)) { + throw defaultControllerBrandCheckException$1("enqueue"); + } + if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) { + throw new TypeError("The stream is not in a state that permits enqueue"); + } + return ReadableStreamDefaultControllerEnqueue(this, chunk); + } + /** + * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`. + */ + error(e2 = void 0) { + if (!IsReadableStreamDefaultController(this)) { + throw defaultControllerBrandCheckException$1("error"); + } + ReadableStreamDefaultControllerError(this, e2); + } + /** @internal */ + [CancelSteps](reason) { + ResetQueue(this); + const result = this._cancelAlgorithm(reason); + ReadableStreamDefaultControllerClearAlgorithms(this); + return result; + } + /** @internal */ + [PullSteps](readRequest) { + const stream = this._controlledReadableStream; + if (this._queue.length > 0) { + const chunk = DequeueValue(this); + if (this._closeRequested && this._queue.length === 0) { + ReadableStreamDefaultControllerClearAlgorithms(this); + ReadableStreamClose(stream); + } else { + ReadableStreamDefaultControllerCallPullIfNeeded(this); + } + readRequest._chunkSteps(chunk); + } else { + ReadableStreamAddReadRequest(stream, readRequest); + ReadableStreamDefaultControllerCallPullIfNeeded(this); + } + } + /** @internal */ + [ReleaseSteps]() { + } + } + Object.defineProperties(ReadableStreamDefaultController.prototype, { + close: { enumerable: true }, + enqueue: { enumerable: true }, + error: { enumerable: true }, + desiredSize: { enumerable: true } + }); + setFunctionName(ReadableStreamDefaultController.prototype.close, "close"); + setFunctionName(ReadableStreamDefaultController.prototype.enqueue, "enqueue"); + setFunctionName(ReadableStreamDefaultController.prototype.error, "error"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamDefaultController.prototype, Symbol.toStringTag, { + value: "ReadableStreamDefaultController", + configurable: true + }); + } + function IsReadableStreamDefaultController(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_controlledReadableStream")) { + return false; + } + return x2 instanceof ReadableStreamDefaultController; + } + function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { + const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); + if (!shouldPull) { + return; + } + if (controller._pulling) { + controller._pullAgain = true; + return; + } + controller._pulling = true; + const pullPromise = controller._pullAlgorithm(); + uponPromise(pullPromise, () => { + controller._pulling = false; + if (controller._pullAgain) { + controller._pullAgain = false; + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + } + return null; + }, (e2) => { + ReadableStreamDefaultControllerError(controller, e2); + return null; + }); + } + function ReadableStreamDefaultControllerShouldCallPull(controller) { + const stream = controller._controlledReadableStream; + if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { + return false; + } + if (!controller._started) { + return false; + } + if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { + return true; + } + const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); + if (desiredSize > 0) { + return true; + } + return false; + } + function ReadableStreamDefaultControllerClearAlgorithms(controller) { + controller._pullAlgorithm = void 0; + controller._cancelAlgorithm = void 0; + controller._strategySizeAlgorithm = void 0; + } + function ReadableStreamDefaultControllerClose(controller) { + if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { + return; + } + const stream = controller._controlledReadableStream; + controller._closeRequested = true; + if (controller._queue.length === 0) { + ReadableStreamDefaultControllerClearAlgorithms(controller); + ReadableStreamClose(stream); + } + } + function ReadableStreamDefaultControllerEnqueue(controller, chunk) { + if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) { + return; + } + const stream = controller._controlledReadableStream; + if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { + ReadableStreamFulfillReadRequest(stream, chunk, false); + } else { + let chunkSize; + try { + chunkSize = controller._strategySizeAlgorithm(chunk); + } catch (chunkSizeE) { + ReadableStreamDefaultControllerError(controller, chunkSizeE); + throw chunkSizeE; + } + try { + EnqueueValueWithSize(controller, chunk, chunkSize); + } catch (enqueueE) { + ReadableStreamDefaultControllerError(controller, enqueueE); + throw enqueueE; + } + } + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + } + function ReadableStreamDefaultControllerError(controller, e2) { + const stream = controller._controlledReadableStream; + if (stream._state !== "readable") { + return; + } + ResetQueue(controller); + ReadableStreamDefaultControllerClearAlgorithms(controller); + ReadableStreamError(stream, e2); + } + function ReadableStreamDefaultControllerGetDesiredSize(controller) { + const state = controller._controlledReadableStream._state; + if (state === "errored") { + return null; + } + if (state === "closed") { + return 0; + } + return controller._strategyHWM - controller._queueTotalSize; + } + function ReadableStreamDefaultControllerHasBackpressure(controller) { + if (ReadableStreamDefaultControllerShouldCallPull(controller)) { + return false; + } + return true; + } + function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) { + const state = controller._controlledReadableStream._state; + if (!controller._closeRequested && state === "readable") { + return true; + } + return false; + } + function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) { + controller._controlledReadableStream = stream; + controller._queue = void 0; + controller._queueTotalSize = void 0; + ResetQueue(controller); + controller._started = false; + controller._closeRequested = false; + controller._pullAgain = false; + controller._pulling = false; + controller._strategySizeAlgorithm = sizeAlgorithm; + controller._strategyHWM = highWaterMark; + controller._pullAlgorithm = pullAlgorithm; + controller._cancelAlgorithm = cancelAlgorithm; + stream._readableStreamController = controller; + const startResult = startAlgorithm(); + uponPromise(promiseResolvedWith(startResult), () => { + controller._started = true; + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + return null; + }, (r2) => { + ReadableStreamDefaultControllerError(controller, r2); + return null; + }); + } + function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) { + const controller = Object.create(ReadableStreamDefaultController.prototype); + let startAlgorithm; + let pullAlgorithm; + let cancelAlgorithm; + if (underlyingSource.start !== void 0) { + startAlgorithm = () => underlyingSource.start(controller); + } else { + startAlgorithm = () => void 0; + } + if (underlyingSource.pull !== void 0) { + pullAlgorithm = () => underlyingSource.pull(controller); + } else { + pullAlgorithm = () => promiseResolvedWith(void 0); + } + if (underlyingSource.cancel !== void 0) { + cancelAlgorithm = (reason) => underlyingSource.cancel(reason); + } else { + cancelAlgorithm = () => promiseResolvedWith(void 0); + } + SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm); + } + function defaultControllerBrandCheckException$1(name) { + return new TypeError(`ReadableStreamDefaultController.prototype.${name} can only be used on a ReadableStreamDefaultController`); + } + function ReadableStreamTee(stream, cloneForBranch2) { + if (IsReadableByteStreamController(stream._readableStreamController)) { + return ReadableByteStreamTee(stream); + } + return ReadableStreamDefaultTee(stream); + } + function ReadableStreamDefaultTee(stream, cloneForBranch2) { + const reader = AcquireReadableStreamDefaultReader(stream); + let reading = false; + let readAgain = false; + let canceled1 = false; + let canceled2 = false; + let reason1; + let reason2; + let branch1; + let branch2; + let resolveCancelPromise; + const cancelPromise = newPromise((resolve2) => { + resolveCancelPromise = resolve2; + }); + function pullAlgorithm() { + if (reading) { + readAgain = true; + return promiseResolvedWith(void 0); + } + reading = true; + const readRequest = { + _chunkSteps: (chunk) => { + _queueMicrotask(() => { + readAgain = false; + const chunk1 = chunk; + const chunk2 = chunk; + if (!canceled1) { + ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1); + } + if (!canceled2) { + ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2); + } + reading = false; + if (readAgain) { + pullAlgorithm(); + } + }); + }, + _closeSteps: () => { + reading = false; + if (!canceled1) { + ReadableStreamDefaultControllerClose(branch1._readableStreamController); + } + if (!canceled2) { + ReadableStreamDefaultControllerClose(branch2._readableStreamController); + } + if (!canceled1 || !canceled2) { + resolveCancelPromise(void 0); + } + }, + _errorSteps: () => { + reading = false; + } + }; + ReadableStreamDefaultReaderRead(reader, readRequest); + return promiseResolvedWith(void 0); + } + function cancel1Algorithm(reason) { + canceled1 = true; + reason1 = reason; + if (canceled2) { + const compositeReason = CreateArrayFromList([reason1, reason2]); + const cancelResult = ReadableStreamCancel(stream, compositeReason); + resolveCancelPromise(cancelResult); + } + return cancelPromise; + } + function cancel2Algorithm(reason) { + canceled2 = true; + reason2 = reason; + if (canceled1) { + const compositeReason = CreateArrayFromList([reason1, reason2]); + const cancelResult = ReadableStreamCancel(stream, compositeReason); + resolveCancelPromise(cancelResult); + } + return cancelPromise; + } + function startAlgorithm() { + } + branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm); + branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm); + uponRejection(reader._closedPromise, (r2) => { + ReadableStreamDefaultControllerError(branch1._readableStreamController, r2); + ReadableStreamDefaultControllerError(branch2._readableStreamController, r2); + if (!canceled1 || !canceled2) { + resolveCancelPromise(void 0); + } + return null; + }); + return [branch1, branch2]; + } + function ReadableByteStreamTee(stream) { + let reader = AcquireReadableStreamDefaultReader(stream); + let reading = false; + let readAgainForBranch1 = false; + let readAgainForBranch2 = false; + let canceled1 = false; + let canceled2 = false; + let reason1; + let reason2; + let branch1; + let branch2; + let resolveCancelPromise; + const cancelPromise = newPromise((resolve2) => { + resolveCancelPromise = resolve2; + }); + function forwardReaderError(thisReader) { + uponRejection(thisReader._closedPromise, (r2) => { + if (thisReader !== reader) { + return null; + } + ReadableByteStreamControllerError(branch1._readableStreamController, r2); + ReadableByteStreamControllerError(branch2._readableStreamController, r2); + if (!canceled1 || !canceled2) { + resolveCancelPromise(void 0); + } + return null; + }); + } + function pullWithDefaultReader() { + if (IsReadableStreamBYOBReader(reader)) { + ReadableStreamReaderGenericRelease(reader); + reader = AcquireReadableStreamDefaultReader(stream); + forwardReaderError(reader); + } + const readRequest = { + _chunkSteps: (chunk) => { + _queueMicrotask(() => { + readAgainForBranch1 = false; + readAgainForBranch2 = false; + const chunk1 = chunk; + let chunk2 = chunk; + if (!canceled1 && !canceled2) { + try { + chunk2 = CloneAsUint8Array(chunk); + } catch (cloneE) { + ReadableByteStreamControllerError(branch1._readableStreamController, cloneE); + ReadableByteStreamControllerError(branch2._readableStreamController, cloneE); + resolveCancelPromise(ReadableStreamCancel(stream, cloneE)); + return; + } + } + if (!canceled1) { + ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1); + } + if (!canceled2) { + ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2); + } + reading = false; + if (readAgainForBranch1) { + pull1Algorithm(); + } else if (readAgainForBranch2) { + pull2Algorithm(); + } + }); + }, + _closeSteps: () => { + reading = false; + if (!canceled1) { + ReadableByteStreamControllerClose(branch1._readableStreamController); + } + if (!canceled2) { + ReadableByteStreamControllerClose(branch2._readableStreamController); + } + if (branch1._readableStreamController._pendingPullIntos.length > 0) { + ReadableByteStreamControllerRespond(branch1._readableStreamController, 0); + } + if (branch2._readableStreamController._pendingPullIntos.length > 0) { + ReadableByteStreamControllerRespond(branch2._readableStreamController, 0); + } + if (!canceled1 || !canceled2) { + resolveCancelPromise(void 0); + } + }, + _errorSteps: () => { + reading = false; + } + }; + ReadableStreamDefaultReaderRead(reader, readRequest); + } + function pullWithBYOBReader(view, forBranch2) { + if (IsReadableStreamDefaultReader(reader)) { + ReadableStreamReaderGenericRelease(reader); + reader = AcquireReadableStreamBYOBReader(stream); + forwardReaderError(reader); + } + const byobBranch = forBranch2 ? branch2 : branch1; + const otherBranch = forBranch2 ? branch1 : branch2; + const readIntoRequest = { + _chunkSteps: (chunk) => { + _queueMicrotask(() => { + readAgainForBranch1 = false; + readAgainForBranch2 = false; + const byobCanceled = forBranch2 ? canceled2 : canceled1; + const otherCanceled = forBranch2 ? canceled1 : canceled2; + if (!otherCanceled) { + let clonedChunk; + try { + clonedChunk = CloneAsUint8Array(chunk); + } catch (cloneE) { + ReadableByteStreamControllerError(byobBranch._readableStreamController, cloneE); + ReadableByteStreamControllerError(otherBranch._readableStreamController, cloneE); + resolveCancelPromise(ReadableStreamCancel(stream, cloneE)); + return; + } + if (!byobCanceled) { + ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk); + } + ReadableByteStreamControllerEnqueue(otherBranch._readableStreamController, clonedChunk); + } else if (!byobCanceled) { + ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk); + } + reading = false; + if (readAgainForBranch1) { + pull1Algorithm(); + } else if (readAgainForBranch2) { + pull2Algorithm(); + } + }); + }, + _closeSteps: (chunk) => { + reading = false; + const byobCanceled = forBranch2 ? canceled2 : canceled1; + const otherCanceled = forBranch2 ? canceled1 : canceled2; + if (!byobCanceled) { + ReadableByteStreamControllerClose(byobBranch._readableStreamController); + } + if (!otherCanceled) { + ReadableByteStreamControllerClose(otherBranch._readableStreamController); + } + if (chunk !== void 0) { + if (!byobCanceled) { + ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk); + } + if (!otherCanceled && otherBranch._readableStreamController._pendingPullIntos.length > 0) { + ReadableByteStreamControllerRespond(otherBranch._readableStreamController, 0); + } + } + if (!byobCanceled || !otherCanceled) { + resolveCancelPromise(void 0); + } + }, + _errorSteps: () => { + reading = false; + } + }; + ReadableStreamBYOBReaderRead(reader, view, 1, readIntoRequest); + } + function pull1Algorithm() { + if (reading) { + readAgainForBranch1 = true; + return promiseResolvedWith(void 0); + } + reading = true; + const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController); + if (byobRequest === null) { + pullWithDefaultReader(); + } else { + pullWithBYOBReader(byobRequest._view, false); + } + return promiseResolvedWith(void 0); + } + function pull2Algorithm() { + if (reading) { + readAgainForBranch2 = true; + return promiseResolvedWith(void 0); + } + reading = true; + const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController); + if (byobRequest === null) { + pullWithDefaultReader(); + } else { + pullWithBYOBReader(byobRequest._view, true); + } + return promiseResolvedWith(void 0); + } + function cancel1Algorithm(reason) { + canceled1 = true; + reason1 = reason; + if (canceled2) { + const compositeReason = CreateArrayFromList([reason1, reason2]); + const cancelResult = ReadableStreamCancel(stream, compositeReason); + resolveCancelPromise(cancelResult); + } + return cancelPromise; + } + function cancel2Algorithm(reason) { + canceled2 = true; + reason2 = reason; + if (canceled1) { + const compositeReason = CreateArrayFromList([reason1, reason2]); + const cancelResult = ReadableStreamCancel(stream, compositeReason); + resolveCancelPromise(cancelResult); + } + return cancelPromise; + } + function startAlgorithm() { + return; + } + branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm); + branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm); + forwardReaderError(reader); + return [branch1, branch2]; + } + function isReadableStreamLike(stream) { + return typeIsObject(stream) && typeof stream.getReader !== "undefined"; + } + function ReadableStreamFrom2(source) { + if (isReadableStreamLike(source)) { + return ReadableStreamFromDefaultReader(source.getReader()); + } + return ReadableStreamFromIterable(source); + } + function ReadableStreamFromIterable(asyncIterable) { + let stream; + const iteratorRecord = GetIterator(asyncIterable, "async"); + const startAlgorithm = noop5; + function pullAlgorithm() { + let nextResult; + try { + nextResult = IteratorNext(iteratorRecord); + } catch (e2) { + return promiseRejectedWith(e2); + } + const nextPromise = promiseResolvedWith(nextResult); + return transformPromiseWith(nextPromise, (iterResult) => { + if (!typeIsObject(iterResult)) { + throw new TypeError("The promise returned by the iterator.next() method must fulfill with an object"); + } + const done = IteratorComplete(iterResult); + if (done) { + ReadableStreamDefaultControllerClose(stream._readableStreamController); + } else { + const value = IteratorValue(iterResult); + ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value); + } + }); + } + function cancelAlgorithm(reason) { + const iterator2 = iteratorRecord.iterator; + let returnMethod; + try { + returnMethod = GetMethod(iterator2, "return"); + } catch (e2) { + return promiseRejectedWith(e2); + } + if (returnMethod === void 0) { + return promiseResolvedWith(void 0); + } + let returnResult; + try { + returnResult = reflectCall(returnMethod, iterator2, [reason]); + } catch (e2) { + return promiseRejectedWith(e2); + } + const returnPromise = promiseResolvedWith(returnResult); + return transformPromiseWith(returnPromise, (iterResult) => { + if (!typeIsObject(iterResult)) { + throw new TypeError("The promise returned by the iterator.return() method must fulfill with an object"); + } + return void 0; + }); + } + stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0); + return stream; + } + function ReadableStreamFromDefaultReader(reader) { + let stream; + const startAlgorithm = noop5; + function pullAlgorithm() { + let readPromise; + try { + readPromise = reader.read(); + } catch (e2) { + return promiseRejectedWith(e2); + } + return transformPromiseWith(readPromise, (readResult) => { + if (!typeIsObject(readResult)) { + throw new TypeError("The promise returned by the reader.read() method must fulfill with an object"); + } + if (readResult.done) { + ReadableStreamDefaultControllerClose(stream._readableStreamController); + } else { + const value = readResult.value; + ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value); + } + }); + } + function cancelAlgorithm(reason) { + try { + return promiseResolvedWith(reader.cancel(reason)); + } catch (e2) { + return promiseRejectedWith(e2); + } + } + stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0); + return stream; + } + function convertUnderlyingDefaultOrByteSource(source, context3) { + assertDictionary(source, context3); + const original = source; + const autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize; + const cancel = original === null || original === void 0 ? void 0 : original.cancel; + const pull = original === null || original === void 0 ? void 0 : original.pull; + const start = original === null || original === void 0 ? void 0 : original.start; + const type = original === null || original === void 0 ? void 0 : original.type; + return { + autoAllocateChunkSize: autoAllocateChunkSize === void 0 ? void 0 : convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, `${context3} has member 'autoAllocateChunkSize' that`), + cancel: cancel === void 0 ? void 0 : convertUnderlyingSourceCancelCallback(cancel, original, `${context3} has member 'cancel' that`), + pull: pull === void 0 ? void 0 : convertUnderlyingSourcePullCallback(pull, original, `${context3} has member 'pull' that`), + start: start === void 0 ? void 0 : convertUnderlyingSourceStartCallback(start, original, `${context3} has member 'start' that`), + type: type === void 0 ? void 0 : convertReadableStreamType(type, `${context3} has member 'type' that`) + }; + } + function convertUnderlyingSourceCancelCallback(fn, original, context3) { + assertFunction(fn, context3); + return (reason) => promiseCall(fn, original, [reason]); + } + function convertUnderlyingSourcePullCallback(fn, original, context3) { + assertFunction(fn, context3); + return (controller) => promiseCall(fn, original, [controller]); + } + function convertUnderlyingSourceStartCallback(fn, original, context3) { + assertFunction(fn, context3); + return (controller) => reflectCall(fn, original, [controller]); + } + function convertReadableStreamType(type, context3) { + type = `${type}`; + if (type !== "bytes") { + throw new TypeError(`${context3} '${type}' is not a valid enumeration value for ReadableStreamType`); + } + return type; + } + function convertIteratorOptions(options, context3) { + assertDictionary(options, context3); + const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel; + return { preventCancel: Boolean(preventCancel) }; + } + function convertPipeOptions(options, context3) { + assertDictionary(options, context3); + const preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort; + const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel; + const preventClose = options === null || options === void 0 ? void 0 : options.preventClose; + const signal = options === null || options === void 0 ? void 0 : options.signal; + if (signal !== void 0) { + assertAbortSignal(signal, `${context3} has member 'signal' that`); + } + return { + preventAbort: Boolean(preventAbort), + preventCancel: Boolean(preventCancel), + preventClose: Boolean(preventClose), + signal + }; + } + function assertAbortSignal(signal, context3) { + if (!isAbortSignal2(signal)) { + throw new TypeError(`${context3} is not an AbortSignal.`); + } + } + function convertReadableWritablePair(pair, context3) { + assertDictionary(pair, context3); + const readable = pair === null || pair === void 0 ? void 0 : pair.readable; + assertRequiredField(readable, "readable", "ReadableWritablePair"); + assertReadableStream(readable, `${context3} has member 'readable' that`); + const writable = pair === null || pair === void 0 ? void 0 : pair.writable; + assertRequiredField(writable, "writable", "ReadableWritablePair"); + assertWritableStream(writable, `${context3} has member 'writable' that`); + return { readable, writable }; + } + class ReadableStream2 { + constructor(rawUnderlyingSource = {}, rawStrategy = {}) { + if (rawUnderlyingSource === void 0) { + rawUnderlyingSource = null; + } else { + assertObject(rawUnderlyingSource, "First parameter"); + } + const strategy = convertQueuingStrategy(rawStrategy, "Second parameter"); + const underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, "First parameter"); + InitializeReadableStream(this); + if (underlyingSource.type === "bytes") { + if (strategy.size !== void 0) { + throw new RangeError("The strategy for a byte stream cannot have a size function"); + } + const highWaterMark = ExtractHighWaterMark(strategy, 0); + SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark); + } else { + const sizeAlgorithm = ExtractSizeAlgorithm(strategy); + const highWaterMark = ExtractHighWaterMark(strategy, 1); + SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm); + } + } + /** + * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}. + */ + get locked() { + if (!IsReadableStream(this)) { + throw streamBrandCheckException$1("locked"); + } + return IsReadableStreamLocked(this); + } + /** + * Cancels the stream, signaling a loss of interest in the stream by a consumer. + * + * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()} + * method, which might or might not use it. + */ + cancel(reason = void 0) { + if (!IsReadableStream(this)) { + return promiseRejectedWith(streamBrandCheckException$1("cancel")); + } + if (IsReadableStreamLocked(this)) { + return promiseRejectedWith(new TypeError("Cannot cancel a stream that already has a reader")); + } + return ReadableStreamCancel(this, reason); + } + getReader(rawOptions = void 0) { + if (!IsReadableStream(this)) { + throw streamBrandCheckException$1("getReader"); + } + const options = convertReaderOptions(rawOptions, "First parameter"); + if (options.mode === void 0) { + return AcquireReadableStreamDefaultReader(this); + } + return AcquireReadableStreamBYOBReader(this); + } + pipeThrough(rawTransform, rawOptions = {}) { + if (!IsReadableStream(this)) { + throw streamBrandCheckException$1("pipeThrough"); + } + assertRequiredArgument(rawTransform, 1, "pipeThrough"); + const transform = convertReadableWritablePair(rawTransform, "First parameter"); + const options = convertPipeOptions(rawOptions, "Second parameter"); + if (IsReadableStreamLocked(this)) { + throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream"); + } + if (IsWritableStreamLocked(transform.writable)) { + throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream"); + } + const promise = ReadableStreamPipeTo(this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal); + setPromiseIsHandledToTrue(promise); + return transform.readable; + } + pipeTo(destination, rawOptions = {}) { + if (!IsReadableStream(this)) { + return promiseRejectedWith(streamBrandCheckException$1("pipeTo")); + } + if (destination === void 0) { + return promiseRejectedWith(`Parameter 1 is required in 'pipeTo'.`); + } + if (!IsWritableStream(destination)) { + return promiseRejectedWith(new TypeError(`ReadableStream.prototype.pipeTo's first argument must be a WritableStream`)); + } + let options; + try { + options = convertPipeOptions(rawOptions, "Second parameter"); + } catch (e2) { + return promiseRejectedWith(e2); + } + if (IsReadableStreamLocked(this)) { + return promiseRejectedWith(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")); + } + if (IsWritableStreamLocked(destination)) { + return promiseRejectedWith(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")); + } + return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal); + } + /** + * Tees this readable stream, returning a two-element array containing the two resulting branches as + * new {@link ReadableStream} instances. + * + * Teeing a stream will lock it, preventing any other consumer from acquiring a reader. + * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be + * propagated to the stream's underlying source. + * + * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable, + * this could allow interference between the two branches. + */ + tee() { + if (!IsReadableStream(this)) { + throw streamBrandCheckException$1("tee"); + } + const branches = ReadableStreamTee(this); + return CreateArrayFromList(branches); + } + values(rawOptions = void 0) { + if (!IsReadableStream(this)) { + throw streamBrandCheckException$1("values"); + } + const options = convertIteratorOptions(rawOptions, "First parameter"); + return AcquireReadableStreamAsyncIterator(this, options.preventCancel); + } + [SymbolAsyncIterator](options) { + return this.values(options); + } + /** + * Creates a new ReadableStream wrapping the provided iterable or async iterable. + * + * This can be used to adapt various kinds of objects into a readable stream, + * such as an array, an async generator, or a Node.js readable stream. + */ + static from(asyncIterable) { + return ReadableStreamFrom2(asyncIterable); + } + } + Object.defineProperties(ReadableStream2, { + from: { enumerable: true } + }); + Object.defineProperties(ReadableStream2.prototype, { + cancel: { enumerable: true }, + getReader: { enumerable: true }, + pipeThrough: { enumerable: true }, + pipeTo: { enumerable: true }, + tee: { enumerable: true }, + values: { enumerable: true }, + locked: { enumerable: true } + }); + setFunctionName(ReadableStream2.from, "from"); + setFunctionName(ReadableStream2.prototype.cancel, "cancel"); + setFunctionName(ReadableStream2.prototype.getReader, "getReader"); + setFunctionName(ReadableStream2.prototype.pipeThrough, "pipeThrough"); + setFunctionName(ReadableStream2.prototype.pipeTo, "pipeTo"); + setFunctionName(ReadableStream2.prototype.tee, "tee"); + setFunctionName(ReadableStream2.prototype.values, "values"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStream2.prototype, Symbol.toStringTag, { + value: "ReadableStream", + configurable: true + }); + } + Object.defineProperty(ReadableStream2.prototype, SymbolAsyncIterator, { + value: ReadableStream2.prototype.values, + writable: true, + configurable: true + }); + function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) { + const stream = Object.create(ReadableStream2.prototype); + InitializeReadableStream(stream); + const controller = Object.create(ReadableStreamDefaultController.prototype); + SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm); + return stream; + } + function CreateReadableByteStream(startAlgorithm, pullAlgorithm, cancelAlgorithm) { + const stream = Object.create(ReadableStream2.prototype); + InitializeReadableStream(stream); + const controller = Object.create(ReadableByteStreamController.prototype); + SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, void 0); + return stream; + } + function InitializeReadableStream(stream) { + stream._state = "readable"; + stream._reader = void 0; + stream._storedError = void 0; + stream._disturbed = false; + } + function IsReadableStream(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_readableStreamController")) { + return false; + } + return x2 instanceof ReadableStream2; + } + function IsReadableStreamLocked(stream) { + if (stream._reader === void 0) { + return false; + } + return true; + } + function ReadableStreamCancel(stream, reason) { + stream._disturbed = true; + if (stream._state === "closed") { + return promiseResolvedWith(void 0); + } + if (stream._state === "errored") { + return promiseRejectedWith(stream._storedError); + } + ReadableStreamClose(stream); + const reader = stream._reader; + if (reader !== void 0 && IsReadableStreamBYOBReader(reader)) { + const readIntoRequests = reader._readIntoRequests; + reader._readIntoRequests = new SimpleQueue(); + readIntoRequests.forEach((readIntoRequest) => { + readIntoRequest._closeSteps(void 0); + }); + } + const sourceCancelPromise = stream._readableStreamController[CancelSteps](reason); + return transformPromiseWith(sourceCancelPromise, noop5); + } + function ReadableStreamClose(stream) { + stream._state = "closed"; + const reader = stream._reader; + if (reader === void 0) { + return; + } + defaultReaderClosedPromiseResolve(reader); + if (IsReadableStreamDefaultReader(reader)) { + const readRequests = reader._readRequests; + reader._readRequests = new SimpleQueue(); + readRequests.forEach((readRequest) => { + readRequest._closeSteps(); + }); + } + } + function ReadableStreamError(stream, e2) { + stream._state = "errored"; + stream._storedError = e2; + const reader = stream._reader; + if (reader === void 0) { + return; + } + defaultReaderClosedPromiseReject(reader, e2); + if (IsReadableStreamDefaultReader(reader)) { + ReadableStreamDefaultReaderErrorReadRequests(reader, e2); + } else { + ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e2); + } + } + function streamBrandCheckException$1(name) { + return new TypeError(`ReadableStream.prototype.${name} can only be used on a ReadableStream`); + } + function convertQueuingStrategyInit(init, context3) { + assertDictionary(init, context3); + const highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark; + assertRequiredField(highWaterMark, "highWaterMark", "QueuingStrategyInit"); + return { + highWaterMark: convertUnrestrictedDouble(highWaterMark) + }; + } + const byteLengthSizeFunction = (chunk) => { + return chunk.byteLength; + }; + setFunctionName(byteLengthSizeFunction, "size"); + class ByteLengthQueuingStrategy { + constructor(options) { + assertRequiredArgument(options, 1, "ByteLengthQueuingStrategy"); + options = convertQueuingStrategyInit(options, "First parameter"); + this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark; + } + /** + * Returns the high water mark provided to the constructor. + */ + get highWaterMark() { + if (!IsByteLengthQueuingStrategy(this)) { + throw byteLengthBrandCheckException("highWaterMark"); + } + return this._byteLengthQueuingStrategyHighWaterMark; + } + /** + * Measures the size of `chunk` by returning the value of its `byteLength` property. + */ + get size() { + if (!IsByteLengthQueuingStrategy(this)) { + throw byteLengthBrandCheckException("size"); + } + return byteLengthSizeFunction; + } + } + Object.defineProperties(ByteLengthQueuingStrategy.prototype, { + highWaterMark: { enumerable: true }, + size: { enumerable: true } + }); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ByteLengthQueuingStrategy.prototype, Symbol.toStringTag, { + value: "ByteLengthQueuingStrategy", + configurable: true + }); + } + function byteLengthBrandCheckException(name) { + return new TypeError(`ByteLengthQueuingStrategy.prototype.${name} can only be used on a ByteLengthQueuingStrategy`); + } + function IsByteLengthQueuingStrategy(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_byteLengthQueuingStrategyHighWaterMark")) { + return false; + } + return x2 instanceof ByteLengthQueuingStrategy; + } + const countSizeFunction = () => { + return 1; + }; + setFunctionName(countSizeFunction, "size"); + class CountQueuingStrategy { + constructor(options) { + assertRequiredArgument(options, 1, "CountQueuingStrategy"); + options = convertQueuingStrategyInit(options, "First parameter"); + this._countQueuingStrategyHighWaterMark = options.highWaterMark; + } + /** + * Returns the high water mark provided to the constructor. + */ + get highWaterMark() { + if (!IsCountQueuingStrategy(this)) { + throw countBrandCheckException("highWaterMark"); + } + return this._countQueuingStrategyHighWaterMark; + } + /** + * Measures the size of `chunk` by always returning 1. + * This ensures that the total queue size is a count of the number of chunks in the queue. + */ + get size() { + if (!IsCountQueuingStrategy(this)) { + throw countBrandCheckException("size"); + } + return countSizeFunction; + } + } + Object.defineProperties(CountQueuingStrategy.prototype, { + highWaterMark: { enumerable: true }, + size: { enumerable: true } + }); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(CountQueuingStrategy.prototype, Symbol.toStringTag, { + value: "CountQueuingStrategy", + configurable: true + }); + } + function countBrandCheckException(name) { + return new TypeError(`CountQueuingStrategy.prototype.${name} can only be used on a CountQueuingStrategy`); + } + function IsCountQueuingStrategy(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_countQueuingStrategyHighWaterMark")) { + return false; + } + return x2 instanceof CountQueuingStrategy; + } + function convertTransformer(original, context3) { + assertDictionary(original, context3); + const cancel = original === null || original === void 0 ? void 0 : original.cancel; + const flush = original === null || original === void 0 ? void 0 : original.flush; + const readableType = original === null || original === void 0 ? void 0 : original.readableType; + const start = original === null || original === void 0 ? void 0 : original.start; + const transform = original === null || original === void 0 ? void 0 : original.transform; + const writableType = original === null || original === void 0 ? void 0 : original.writableType; + return { + cancel: cancel === void 0 ? void 0 : convertTransformerCancelCallback(cancel, original, `${context3} has member 'cancel' that`), + flush: flush === void 0 ? void 0 : convertTransformerFlushCallback(flush, original, `${context3} has member 'flush' that`), + readableType, + start: start === void 0 ? void 0 : convertTransformerStartCallback(start, original, `${context3} has member 'start' that`), + transform: transform === void 0 ? void 0 : convertTransformerTransformCallback(transform, original, `${context3} has member 'transform' that`), + writableType + }; + } + function convertTransformerFlushCallback(fn, original, context3) { + assertFunction(fn, context3); + return (controller) => promiseCall(fn, original, [controller]); + } + function convertTransformerStartCallback(fn, original, context3) { + assertFunction(fn, context3); + return (controller) => reflectCall(fn, original, [controller]); + } + function convertTransformerTransformCallback(fn, original, context3) { + assertFunction(fn, context3); + return (chunk, controller) => promiseCall(fn, original, [chunk, controller]); + } + function convertTransformerCancelCallback(fn, original, context3) { + assertFunction(fn, context3); + return (reason) => promiseCall(fn, original, [reason]); + } + class TransformStream2 { + constructor(rawTransformer = {}, rawWritableStrategy = {}, rawReadableStrategy = {}) { + if (rawTransformer === void 0) { + rawTransformer = null; + } + const writableStrategy = convertQueuingStrategy(rawWritableStrategy, "Second parameter"); + const readableStrategy = convertQueuingStrategy(rawReadableStrategy, "Third parameter"); + const transformer = convertTransformer(rawTransformer, "First parameter"); + if (transformer.readableType !== void 0) { + throw new RangeError("Invalid readableType specified"); + } + if (transformer.writableType !== void 0) { + throw new RangeError("Invalid writableType specified"); + } + const readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0); + const readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy); + const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1); + const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy); + let startPromise_resolve; + const startPromise = newPromise((resolve2) => { + startPromise_resolve = resolve2; + }); + InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm); + SetUpTransformStreamDefaultControllerFromTransformer(this, transformer); + if (transformer.start !== void 0) { + startPromise_resolve(transformer.start(this._transformStreamController)); + } else { + startPromise_resolve(void 0); + } + } + /** + * The readable side of the transform stream. + */ + get readable() { + if (!IsTransformStream(this)) { + throw streamBrandCheckException("readable"); + } + return this._readable; + } + /** + * The writable side of the transform stream. + */ + get writable() { + if (!IsTransformStream(this)) { + throw streamBrandCheckException("writable"); + } + return this._writable; + } + } + Object.defineProperties(TransformStream2.prototype, { + readable: { enumerable: true }, + writable: { enumerable: true } + }); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(TransformStream2.prototype, Symbol.toStringTag, { + value: "TransformStream", + configurable: true + }); + } + function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) { + function startAlgorithm() { + return startPromise; + } + function writeAlgorithm(chunk) { + return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk); + } + function abortAlgorithm(reason) { + return TransformStreamDefaultSinkAbortAlgorithm(stream, reason); + } + function closeAlgorithm() { + return TransformStreamDefaultSinkCloseAlgorithm(stream); + } + stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm); + function pullAlgorithm() { + return TransformStreamDefaultSourcePullAlgorithm(stream); + } + function cancelAlgorithm(reason) { + return TransformStreamDefaultSourceCancelAlgorithm(stream, reason); + } + stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm); + stream._backpressure = void 0; + stream._backpressureChangePromise = void 0; + stream._backpressureChangePromise_resolve = void 0; + TransformStreamSetBackpressure(stream, true); + stream._transformStreamController = void 0; + } + function IsTransformStream(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_transformStreamController")) { + return false; + } + return x2 instanceof TransformStream2; + } + function TransformStreamError(stream, e2) { + ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e2); + TransformStreamErrorWritableAndUnblockWrite(stream, e2); + } + function TransformStreamErrorWritableAndUnblockWrite(stream, e2) { + TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController); + WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e2); + TransformStreamUnblockWrite(stream); + } + function TransformStreamUnblockWrite(stream) { + if (stream._backpressure) { + TransformStreamSetBackpressure(stream, false); + } + } + function TransformStreamSetBackpressure(stream, backpressure) { + if (stream._backpressureChangePromise !== void 0) { + stream._backpressureChangePromise_resolve(); + } + stream._backpressureChangePromise = newPromise((resolve2) => { + stream._backpressureChangePromise_resolve = resolve2; + }); + stream._backpressure = backpressure; + } + class TransformStreamDefaultController { + constructor() { + throw new TypeError("Illegal constructor"); + } + /** + * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full. + */ + get desiredSize() { + if (!IsTransformStreamDefaultController(this)) { + throw defaultControllerBrandCheckException("desiredSize"); + } + const readableController = this._controlledTransformStream._readable._readableStreamController; + return ReadableStreamDefaultControllerGetDesiredSize(readableController); + } + enqueue(chunk = void 0) { + if (!IsTransformStreamDefaultController(this)) { + throw defaultControllerBrandCheckException("enqueue"); + } + TransformStreamDefaultControllerEnqueue(this, chunk); + } + /** + * Errors both the readable side and the writable side of the controlled transform stream, making all future + * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded. + */ + error(reason = void 0) { + if (!IsTransformStreamDefaultController(this)) { + throw defaultControllerBrandCheckException("error"); + } + TransformStreamDefaultControllerError(this, reason); + } + /** + * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the + * transformer only needs to consume a portion of the chunks written to the writable side. + */ + terminate() { + if (!IsTransformStreamDefaultController(this)) { + throw defaultControllerBrandCheckException("terminate"); + } + TransformStreamDefaultControllerTerminate(this); + } + } + Object.defineProperties(TransformStreamDefaultController.prototype, { + enqueue: { enumerable: true }, + error: { enumerable: true }, + terminate: { enumerable: true }, + desiredSize: { enumerable: true } + }); + setFunctionName(TransformStreamDefaultController.prototype.enqueue, "enqueue"); + setFunctionName(TransformStreamDefaultController.prototype.error, "error"); + setFunctionName(TransformStreamDefaultController.prototype.terminate, "terminate"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(TransformStreamDefaultController.prototype, Symbol.toStringTag, { + value: "TransformStreamDefaultController", + configurable: true + }); + } + function IsTransformStreamDefaultController(x2) { + if (!typeIsObject(x2)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x2, "_controlledTransformStream")) { + return false; + } + return x2 instanceof TransformStreamDefaultController; + } + function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm) { + controller._controlledTransformStream = stream; + stream._transformStreamController = controller; + controller._transformAlgorithm = transformAlgorithm; + controller._flushAlgorithm = flushAlgorithm; + controller._cancelAlgorithm = cancelAlgorithm; + controller._finishPromise = void 0; + controller._finishPromise_resolve = void 0; + controller._finishPromise_reject = void 0; + } + function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) { + const controller = Object.create(TransformStreamDefaultController.prototype); + let transformAlgorithm; + let flushAlgorithm; + let cancelAlgorithm; + if (transformer.transform !== void 0) { + transformAlgorithm = (chunk) => transformer.transform(chunk, controller); + } else { + transformAlgorithm = (chunk) => { + try { + TransformStreamDefaultControllerEnqueue(controller, chunk); + return promiseResolvedWith(void 0); + } catch (transformResultE) { + return promiseRejectedWith(transformResultE); + } + }; + } + if (transformer.flush !== void 0) { + flushAlgorithm = () => transformer.flush(controller); + } else { + flushAlgorithm = () => promiseResolvedWith(void 0); + } + if (transformer.cancel !== void 0) { + cancelAlgorithm = (reason) => transformer.cancel(reason); + } else { + cancelAlgorithm = () => promiseResolvedWith(void 0); + } + SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm); + } + function TransformStreamDefaultControllerClearAlgorithms(controller) { + controller._transformAlgorithm = void 0; + controller._flushAlgorithm = void 0; + controller._cancelAlgorithm = void 0; + } + function TransformStreamDefaultControllerEnqueue(controller, chunk) { + const stream = controller._controlledTransformStream; + const readableController = stream._readable._readableStreamController; + if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) { + throw new TypeError("Readable side is not in a state that permits enqueue"); + } + try { + ReadableStreamDefaultControllerEnqueue(readableController, chunk); + } catch (e2) { + TransformStreamErrorWritableAndUnblockWrite(stream, e2); + throw stream._readable._storedError; + } + const backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController); + if (backpressure !== stream._backpressure) { + TransformStreamSetBackpressure(stream, true); + } + } + function TransformStreamDefaultControllerError(controller, e2) { + TransformStreamError(controller._controlledTransformStream, e2); + } + function TransformStreamDefaultControllerPerformTransform(controller, chunk) { + const transformPromise = controller._transformAlgorithm(chunk); + return transformPromiseWith(transformPromise, void 0, (r2) => { + TransformStreamError(controller._controlledTransformStream, r2); + throw r2; + }); + } + function TransformStreamDefaultControllerTerminate(controller) { + const stream = controller._controlledTransformStream; + const readableController = stream._readable._readableStreamController; + ReadableStreamDefaultControllerClose(readableController); + const error2 = new TypeError("TransformStream terminated"); + TransformStreamErrorWritableAndUnblockWrite(stream, error2); + } + function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) { + const controller = stream._transformStreamController; + if (stream._backpressure) { + const backpressureChangePromise = stream._backpressureChangePromise; + return transformPromiseWith(backpressureChangePromise, () => { + const writable = stream._writable; + const state = writable._state; + if (state === "erroring") { + throw writable._storedError; + } + return TransformStreamDefaultControllerPerformTransform(controller, chunk); + }); + } + return TransformStreamDefaultControllerPerformTransform(controller, chunk); + } + function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) { + const controller = stream._transformStreamController; + if (controller._finishPromise !== void 0) { + return controller._finishPromise; + } + const readable = stream._readable; + controller._finishPromise = newPromise((resolve2, reject) => { + controller._finishPromise_resolve = resolve2; + controller._finishPromise_reject = reject; + }); + const cancelPromise = controller._cancelAlgorithm(reason); + TransformStreamDefaultControllerClearAlgorithms(controller); + uponPromise(cancelPromise, () => { + if (readable._state === "errored") { + defaultControllerFinishPromiseReject(controller, readable._storedError); + } else { + ReadableStreamDefaultControllerError(readable._readableStreamController, reason); + defaultControllerFinishPromiseResolve(controller); + } + return null; + }, (r2) => { + ReadableStreamDefaultControllerError(readable._readableStreamController, r2); + defaultControllerFinishPromiseReject(controller, r2); + return null; + }); + return controller._finishPromise; + } + function TransformStreamDefaultSinkCloseAlgorithm(stream) { + const controller = stream._transformStreamController; + if (controller._finishPromise !== void 0) { + return controller._finishPromise; + } + const readable = stream._readable; + controller._finishPromise = newPromise((resolve2, reject) => { + controller._finishPromise_resolve = resolve2; + controller._finishPromise_reject = reject; + }); + const flushPromise = controller._flushAlgorithm(); + TransformStreamDefaultControllerClearAlgorithms(controller); + uponPromise(flushPromise, () => { + if (readable._state === "errored") { + defaultControllerFinishPromiseReject(controller, readable._storedError); + } else { + ReadableStreamDefaultControllerClose(readable._readableStreamController); + defaultControllerFinishPromiseResolve(controller); + } + return null; + }, (r2) => { + ReadableStreamDefaultControllerError(readable._readableStreamController, r2); + defaultControllerFinishPromiseReject(controller, r2); + return null; + }); + return controller._finishPromise; + } + function TransformStreamDefaultSourcePullAlgorithm(stream) { + TransformStreamSetBackpressure(stream, false); + return stream._backpressureChangePromise; + } + function TransformStreamDefaultSourceCancelAlgorithm(stream, reason) { + const controller = stream._transformStreamController; + if (controller._finishPromise !== void 0) { + return controller._finishPromise; + } + const writable = stream._writable; + controller._finishPromise = newPromise((resolve2, reject) => { + controller._finishPromise_resolve = resolve2; + controller._finishPromise_reject = reject; + }); + const cancelPromise = controller._cancelAlgorithm(reason); + TransformStreamDefaultControllerClearAlgorithms(controller); + uponPromise(cancelPromise, () => { + if (writable._state === "errored") { + defaultControllerFinishPromiseReject(controller, writable._storedError); + } else { + WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, reason); + TransformStreamUnblockWrite(stream); + defaultControllerFinishPromiseResolve(controller); + } + return null; + }, (r2) => { + WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, r2); + TransformStreamUnblockWrite(stream); + defaultControllerFinishPromiseReject(controller, r2); + return null; + }); + return controller._finishPromise; + } + function defaultControllerBrandCheckException(name) { + return new TypeError(`TransformStreamDefaultController.prototype.${name} can only be used on a TransformStreamDefaultController`); + } + function defaultControllerFinishPromiseResolve(controller) { + if (controller._finishPromise_resolve === void 0) { + return; + } + controller._finishPromise_resolve(); + controller._finishPromise_resolve = void 0; + controller._finishPromise_reject = void 0; + } + function defaultControllerFinishPromiseReject(controller, reason) { + if (controller._finishPromise_reject === void 0) { + return; + } + setPromiseIsHandledToTrue(controller._finishPromise); + controller._finishPromise_reject(reason); + controller._finishPromise_resolve = void 0; + controller._finishPromise_reject = void 0; + } + function streamBrandCheckException(name) { + return new TypeError(`TransformStream.prototype.${name} can only be used on a TransformStream`); + } + exports2.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy; + exports2.CountQueuingStrategy = CountQueuingStrategy; + exports2.ReadableByteStreamController = ReadableByteStreamController; + exports2.ReadableStream = ReadableStream2; + exports2.ReadableStreamBYOBReader = ReadableStreamBYOBReader; + exports2.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest; + exports2.ReadableStreamDefaultController = ReadableStreamDefaultController; + exports2.ReadableStreamDefaultReader = ReadableStreamDefaultReader; + exports2.TransformStream = TransformStream2; + exports2.TransformStreamDefaultController = TransformStreamDefaultController; + exports2.WritableStream = WritableStream; + exports2.WritableStreamDefaultController = WritableStreamDefaultController; + exports2.WritableStreamDefaultWriter = WritableStreamDefaultWriter; + }); + } +}); + +// +var require_streams = __commonJS({ + ""() { + var POOL_SIZE2 = 65536; + if (!globalThis.ReadableStream) { + try { + const process3 = __require("node:process"); + const { emitWarning } = process3; + try { + process3.emitWarning = () => { + }; + Object.assign(globalThis, __require("node:stream/web")); + process3.emitWarning = emitWarning; + } catch (error2) { + process3.emitWarning = emitWarning; + throw error2; + } + } catch (error2) { + Object.assign(globalThis, require_ponyfill_es2018()); + } + } + try { + const { Blob: Blob4 } = __require("buffer"); + if (Blob4 && !Blob4.prototype.stream) { + Blob4.prototype.stream = function name(params) { + let position = 0; + const blob = this; + return new ReadableStream({ + type: "bytes", + async pull(ctrl) { + const chunk = blob.slice(position, Math.min(blob.size, position + POOL_SIZE2)); + const buffer = await chunk.arrayBuffer(); + position += buffer.byteLength; + ctrl.enqueue(new Uint8Array(buffer)); + if (position === blob.size) { + ctrl.close(); + } + } + }); + }; + } + } catch (error2) { + } + } +}); + +// +async function* toIterator(parts, clone2 = true) { + for (const part of parts) { + if ("stream" in part) { + yield* ( + /** @type {AsyncIterableIterator} */ + part.stream() + ); + } else if (ArrayBuffer.isView(part)) { + if (clone2) { + let position = part.byteOffset; + const end = part.byteOffset + part.byteLength; + while (position !== end) { + const size = Math.min(end - position, POOL_SIZE); + const chunk = part.buffer.slice(position, position + size); + position += chunk.byteLength; + yield new Uint8Array(chunk); + } + } else { + yield part; + } + } else { + let position = 0, b = ( + /** @type {Blob} */ + part + ); + while (position !== b.size) { + const chunk = b.slice(position, Math.min(b.size, position + POOL_SIZE)); + const buffer = await chunk.arrayBuffer(); + position += buffer.byteLength; + yield new Uint8Array(buffer); + } + } + } +} +var import_streams, POOL_SIZE, _Blob, Blob3, fetch_blob_default; +var init_fetch_blob = __esm({ + ""() { + import_streams = __toESM(require_streams()); + POOL_SIZE = 65536; + _Blob = class Blob2 { + /** @type {Array.<(Blob|Uint8Array)>} */ + #parts = []; + #type = ""; + #size = 0; + #endings = "transparent"; + /** + * The Blob() constructor returns a new Blob object. The content + * of the blob consists of the concatenation of the values given + * in the parameter array. + * + * @param {*} blobParts + * @param {{ type?: string, endings?: string }} [options] + */ + constructor(blobParts = [], options = {}) { + if (typeof blobParts !== "object" || blobParts === null) { + throw new TypeError("Failed to construct 'Blob': The provided value cannot be converted to a sequence."); + } + if (typeof blobParts[Symbol.iterator] !== "function") { + throw new TypeError("Failed to construct 'Blob': The object must have a callable @@iterator property."); + } + if (typeof options !== "object" && typeof options !== "function") { + throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary."); + } + if (options === null) + options = {}; + const encoder = new TextEncoder(); + for (const element of blobParts) { + let part; + if (ArrayBuffer.isView(element)) { + part = new Uint8Array(element.buffer.slice(element.byteOffset, element.byteOffset + element.byteLength)); + } else if (element instanceof ArrayBuffer) { + part = new Uint8Array(element.slice(0)); + } else if (element instanceof Blob2) { + part = element; + } else { + part = encoder.encode(`${element}`); + } + this.#size += ArrayBuffer.isView(part) ? part.byteLength : part.size; + this.#parts.push(part); + } + this.#endings = `${options.endings === void 0 ? "transparent" : options.endings}`; + const type = options.type === void 0 ? "" : String(options.type); + this.#type = /^[\x20-\x7E]*$/.test(type) ? type : ""; + } + /** + * The Blob interface's size property returns the + * size of the Blob in bytes. + */ + get size() { + return this.#size; + } + /** + * The type property of a Blob object returns the MIME type of the file. + */ + get type() { + return this.#type; + } + /** + * The text() method in the Blob interface returns a Promise + * that resolves with a string containing the contents of + * the blob, interpreted as UTF-8. + * + * @return {Promise} + */ + async text() { + const decoder = new TextDecoder(); + let str = ""; + for await (const part of toIterator(this.#parts, false)) { + str += decoder.decode(part, { stream: true }); + } + str += decoder.decode(); + return str; + } + /** + * The arrayBuffer() method in the Blob interface returns a + * Promise that resolves with the contents of the blob as + * binary data contained in an ArrayBuffer. + * + * @return {Promise} + */ + async arrayBuffer() { + const data = new Uint8Array(this.size); + let offset = 0; + for await (const chunk of toIterator(this.#parts, false)) { + data.set(chunk, offset); + offset += chunk.length; + } + return data.buffer; + } + stream() { + const it = toIterator(this.#parts, true); + return new globalThis.ReadableStream({ + // @ts-ignore + type: "bytes", + async pull(ctrl) { + const chunk = await it.next(); + chunk.done ? ctrl.close() : ctrl.enqueue(chunk.value); + }, + async cancel() { + await it.return(); + } + }); + } + /** + * The Blob interface's slice() method creates and returns a + * new Blob object which contains data from a subset of the + * blob on which it's called. + * + * @param {number} [start] + * @param {number} [end] + * @param {string} [type] + */ + slice(start = 0, end = this.size, type = "") { + const { size } = this; + let relativeStart = start < 0 ? Math.max(size + start, 0) : Math.min(start, size); + let relativeEnd = end < 0 ? Math.max(size + end, 0) : Math.min(end, size); + const span = Math.max(relativeEnd - relativeStart, 0); + const parts = this.#parts; + const blobParts = []; + let added = 0; + for (const part of parts) { + if (added >= span) { + break; + } + const size2 = ArrayBuffer.isView(part) ? part.byteLength : part.size; + if (relativeStart && size2 <= relativeStart) { + relativeStart -= size2; + relativeEnd -= size2; + } else { + let chunk; + if (ArrayBuffer.isView(part)) { + chunk = part.subarray(relativeStart, Math.min(size2, relativeEnd)); + added += chunk.byteLength; + } else { + chunk = part.slice(relativeStart, Math.min(size2, relativeEnd)); + added += chunk.size; + } + relativeEnd -= size2; + blobParts.push(chunk); + relativeStart = 0; + } + } + const blob = new Blob2([], { type: String(type).toLowerCase() }); + blob.#size = span; + blob.#parts = blobParts; + return blob; + } + get [Symbol.toStringTag]() { + return "Blob"; + } + static [Symbol.hasInstance](object) { + return object && typeof object === "object" && typeof object.constructor === "function" && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && /^(Blob|File)$/.test(object[Symbol.toStringTag]); + } + }; + Object.defineProperties(_Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } + }); + Blob3 = _Blob; + fetch_blob_default = Blob3; + } +}); + +// +var _File, File3, file_default; +var init_file = __esm({ + ""() { + init_fetch_blob(); + _File = class File2 extends fetch_blob_default { + #lastModified = 0; + #name = ""; + /** + * @param {*[]} fileBits + * @param {string} fileName + * @param {{lastModified?: number, type?: string}} options + */ + // @ts-ignore + constructor(fileBits, fileName, options = {}) { + if (arguments.length < 2) { + throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`); + } + super(fileBits, options); + if (options === null) + options = {}; + const lastModified = options.lastModified === void 0 ? Date.now() : Number(options.lastModified); + if (!Number.isNaN(lastModified)) { + this.#lastModified = lastModified; + } + this.#name = String(fileName); + } + get name() { + return this.#name; + } + get lastModified() { + return this.#lastModified; + } + get [Symbol.toStringTag]() { + return "File"; + } + static [Symbol.hasInstance](object) { + return !!object && object instanceof fetch_blob_default && /^(File)$/.test(object[Symbol.toStringTag]); + } + }; + File3 = _File; + file_default = File3; + } +}); + +// +function formDataToBlob(F2, B = fetch_blob_default) { + var b = `${r()}${r()}`.replace(/\./g, "").slice(-28).padStart(32, "-"), c = [], p = `--${b}\r +Content-Disposition: form-data; name="`; + F2.forEach((v, n) => typeof v == "string" ? c.push(p + e(n) + `"\r +\r +${v.replace(/\r(?!\n)|(? (a += "", /^(Blob|File)$/.test(b && b[t]) ? [(c = c !== void 0 ? c + "" : b[t] == "File" ? b.name : "blob", a), b.name !== c || b[t] == "blob" ? new file_default([b], c, b) : b] : [a, b + ""]); + e = (c, f3) => (f3 ? c : c.replace(/\r?\n|\r/g, "\r\n")).replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); + x = (n, a, e2) => { + if (a.length < e2) { + throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e2} arguments required, but only ${a.length} present.`); + } + }; + FormData2 = class FormData3 { + #d = []; + constructor(...a) { + if (a.length) + throw new TypeError(`Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`); + } + get [t]() { + return "FormData"; + } + [i]() { + return this.entries(); + } + static [h](o) { + return o && typeof o === "object" && o[t] === "FormData" && !m.some((m2) => typeof o[m2] != "function"); + } + append(...a) { + x("append", arguments, 2); + this.#d.push(f(...a)); + } + delete(a) { + x("delete", arguments, 1); + a += ""; + this.#d = this.#d.filter(([b]) => b !== a); + } + get(a) { + x("get", arguments, 1); + a += ""; + for (var b = this.#d, l = b.length, c = 0; c < l; c++) + if (b[c][0] === a) + return b[c][1]; + return null; + } + getAll(a, b) { + x("getAll", arguments, 1); + b = []; + a += ""; + this.#d.forEach((c) => c[0] === a && b.push(c[1])); + return b; + } + has(a) { + x("has", arguments, 1); + a += ""; + return this.#d.some((b) => b[0] === a); + } + forEach(a, b) { + x("forEach", arguments, 1); + for (var [c, d] of this) + a.call(b, d, c, this); + } + set(...a) { + x("set", arguments, 2); + var b = [], c = true; + a = f(...a); + this.#d.forEach((d) => { + d[0] === a[0] ? c && (c = !b.push(a)) : b.push(d); + }); + c && b.push(a); + this.#d = b; + } + *entries() { + yield* this.#d; + } + *keys() { + for (var [a] of this) + yield a; + } + *values() { + for (var [, a] of this) + yield a; + } + }; + } +}); + +// +var FetchBaseError; +var init_base = __esm({ + ""() { + FetchBaseError = class extends Error { + constructor(message, type) { + super(message); + Error.captureStackTrace(this, this.constructor); + this.type = type; + } + get name() { + return this.constructor.name; + } + get [Symbol.toStringTag]() { + return this.constructor.name; + } + }; + } +}); + +// +var FetchError; +var init_fetch_error = __esm({ + ""() { + init_base(); + FetchError = class extends FetchBaseError { + /** + * @param {string} message - Error message for human + * @param {string} [type] - Error type for machine + * @param {SystemError} [systemError] - For Node.js system error + */ + constructor(message, type, systemError) { + super(message, type); + if (systemError) { + this.code = this.errno = systemError.code; + this.erroredSysCall = systemError.syscall; + } + } + }; + } +}); + +// +var NAME, isURLSearchParameters, isBlob, isAbortSignal, isDomainOrSubdomain, isSameProtocol; +var init_is = __esm({ + ""() { + NAME = Symbol.toStringTag; + isURLSearchParameters = (object) => { + return typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && typeof object.sort === "function" && object[NAME] === "URLSearchParams"; + }; + isBlob = (object) => { + return object && typeof object === "object" && typeof object.arrayBuffer === "function" && typeof object.type === "string" && typeof object.stream === "function" && typeof object.constructor === "function" && /^(Blob|File)$/.test(object[NAME]); + }; + isAbortSignal = (object) => { + return typeof object === "object" && (object[NAME] === "AbortSignal" || object[NAME] === "EventTarget"); + }; + isDomainOrSubdomain = (destination, original) => { + const orig = new URL(original).hostname; + const dest = new URL(destination).hostname; + return orig === dest || orig.endsWith(`.${dest}`); + }; + isSameProtocol = (destination, original) => { + const orig = new URL(original).protocol; + const dest = new URL(destination).protocol; + return orig === dest; + }; + } +}); + +// +var require_node_domexception = __commonJS({ + ""(exports, module) { + if (!globalThis.DOMException) { + try { + const { MessageChannel } = __require("worker_threads"), port = new MessageChannel().port1, ab = new ArrayBuffer(); + port.postMessage(ab, [ab, ab]); + } catch (err) { + err.constructor.name === "DOMException" && (globalThis.DOMException = err.constructor); + } + } + module.exports = globalThis.DOMException; + } +}); + +// +import { statSync, createReadStream, promises as fs3 } from "node:fs"; +import { basename as basename3 } from "node:path"; +var import_node_domexception, stat2, blobFromSync, blobFrom, fileFrom, fileFromSync, fromBlob, fromFile, BlobDataItem; +var init_from = __esm({ + ""() { + import_node_domexception = __toESM(require_node_domexception()); + init_file(); + init_fetch_blob(); + ({ stat: stat2 } = fs3); + blobFromSync = (path7, type) => fromBlob(statSync(path7), path7, type); + blobFrom = (path7, type) => stat2(path7).then((stat4) => fromBlob(stat4, path7, type)); + fileFrom = (path7, type) => stat2(path7).then((stat4) => fromFile(stat4, path7, type)); + fileFromSync = (path7, type) => fromFile(statSync(path7), path7, type); + fromBlob = (stat4, path7, type = "") => new fetch_blob_default([new BlobDataItem({ + path: path7, + size: stat4.size, + lastModified: stat4.mtimeMs, + start: 0 + })], { type }); + fromFile = (stat4, path7, type = "") => new file_default([new BlobDataItem({ + path: path7, + size: stat4.size, + lastModified: stat4.mtimeMs, + start: 0 + })], basename3(path7), { type, lastModified: stat4.mtimeMs }); + BlobDataItem = class _BlobDataItem { + #path; + #start; + constructor(options) { + this.#path = options.path; + this.#start = options.start; + this.size = options.size; + this.lastModified = options.lastModified; + } + /** + * Slicing arguments is first validated and formatted + * to not be out of range by Blob.prototype.slice + */ + slice(start, end) { + return new _BlobDataItem({ + path: this.#path, + lastModified: this.lastModified, + size: end - start, + start: this.#start + start + }); + } + async *stream() { + const { mtimeMs } = await stat2(this.#path); + if (mtimeMs > this.lastModified) { + throw new import_node_domexception.default("The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.", "NotReadableError"); + } + yield* createReadStream(this.#path, { + start: this.#start, + end: this.#start + this.size - 1 + }); + } + get [Symbol.toStringTag]() { + return "Blob"; + } + }; + } +}); + +// +var multipart_parser_exports = {}; +__export(multipart_parser_exports, { + toFormData: () => toFormData +}); +function _fileName(headerValue) { + const m2 = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i); + if (!m2) { + return; + } + const match = m2[2] || m2[3] || ""; + let filename = match.slice(match.lastIndexOf("\\") + 1); + filename = filename.replace(/%22/g, '"'); + filename = filename.replace(/&#(\d{4});/g, (m3, code) => { + return String.fromCharCode(code); + }); + return filename; +} +async function toFormData(Body2, ct) { + if (!/multipart/i.test(ct)) { + throw new TypeError("Failed to fetch"); + } + const m2 = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i); + if (!m2) { + throw new TypeError("no or bad content-type header, no multipart boundary"); + } + const parser = new MultipartParser(m2[1] || m2[2]); + let headerField; + let headerValue; + let entryValue; + let entryName; + let contentType; + let filename; + const entryChunks = []; + const formData = new FormData2(); + const onPartData = (ui8a) => { + entryValue += decoder.decode(ui8a, { stream: true }); + }; + const appendToFile = (ui8a) => { + entryChunks.push(ui8a); + }; + const appendFileToFormData = () => { + const file = new file_default(entryChunks, filename, { type: contentType }); + formData.append(entryName, file); + }; + const appendEntryToFormData = () => { + formData.append(entryName, entryValue); + }; + const decoder = new TextDecoder("utf-8"); + decoder.decode(); + parser.onPartBegin = function() { + parser.onPartData = onPartData; + parser.onPartEnd = appendEntryToFormData; + headerField = ""; + headerValue = ""; + entryValue = ""; + entryName = ""; + contentType = ""; + filename = null; + entryChunks.length = 0; + }; + parser.onHeaderField = function(ui8a) { + headerField += decoder.decode(ui8a, { stream: true }); + }; + parser.onHeaderValue = function(ui8a) { + headerValue += decoder.decode(ui8a, { stream: true }); + }; + parser.onHeaderEnd = function() { + headerValue += decoder.decode(); + headerField = headerField.toLowerCase(); + if (headerField === "content-disposition") { + const m3 = headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i); + if (m3) { + entryName = m3[2] || m3[3] || ""; + } + filename = _fileName(headerValue); + if (filename) { + parser.onPartData = appendToFile; + parser.onPartEnd = appendFileToFormData; + } + } else if (headerField === "content-type") { + contentType = headerValue; + } + headerValue = ""; + headerField = ""; + }; + for await (const chunk of Body2) { + parser.write(chunk); + } + parser.end(); + return formData; +} +var s, S, f2, F, LF, CR, SPACE, HYPHEN, COLON, A, Z, lower, noop3, MultipartParser; +var init_multipart_parser = __esm({ + ""() { + init_from(); + init_esm_min(); + s = 0; + S = { + START_BOUNDARY: s++, + HEADER_FIELD_START: s++, + HEADER_FIELD: s++, + HEADER_VALUE_START: s++, + HEADER_VALUE: s++, + HEADER_VALUE_ALMOST_DONE: s++, + HEADERS_ALMOST_DONE: s++, + PART_DATA_START: s++, + PART_DATA: s++, + END: s++ + }; + f2 = 1; + F = { + PART_BOUNDARY: f2, + LAST_BOUNDARY: f2 *= 2 + }; + LF = 10; + CR = 13; + SPACE = 32; + HYPHEN = 45; + COLON = 58; + A = 97; + Z = 122; + lower = (c) => c | 32; + noop3 = () => { + }; + MultipartParser = class { + /** + * @param {string} boundary + */ + constructor(boundary) { + this.index = 0; + this.flags = 0; + this.onHeaderEnd = noop3; + this.onHeaderField = noop3; + this.onHeadersEnd = noop3; + this.onHeaderValue = noop3; + this.onPartBegin = noop3; + this.onPartData = noop3; + this.onPartEnd = noop3; + this.boundaryChars = {}; + boundary = "\r\n--" + boundary; + const ui8a = new Uint8Array(boundary.length); + for (let i2 = 0; i2 < boundary.length; i2++) { + ui8a[i2] = boundary.charCodeAt(i2); + this.boundaryChars[ui8a[i2]] = true; + } + this.boundary = ui8a; + this.lookbehind = new Uint8Array(this.boundary.length + 8); + this.state = S.START_BOUNDARY; + } + /** + * @param {Uint8Array} data + */ + write(data) { + let i2 = 0; + const length_ = data.length; + let previousIndex = this.index; + let { lookbehind, boundary, boundaryChars, index, state, flags } = this; + const boundaryLength = this.boundary.length; + const boundaryEnd = boundaryLength - 1; + const bufferLength = data.length; + let c; + let cl; + const mark = (name) => { + this[name + "Mark"] = i2; + }; + const clear = (name) => { + delete this[name + "Mark"]; + }; + const callback = (callbackSymbol, start, end, ui8a) => { + if (start === void 0 || start !== end) { + this[callbackSymbol](ui8a && ui8a.subarray(start, end)); + } + }; + const dataCallback = (name, clear2) => { + const markSymbol = name + "Mark"; + if (!(markSymbol in this)) { + return; + } + if (clear2) { + callback(name, this[markSymbol], i2, data); + delete this[markSymbol]; + } else { + callback(name, this[markSymbol], data.length, data); + this[markSymbol] = 0; + } + }; + for (i2 = 0; i2 < length_; i2++) { + c = data[i2]; + switch (state) { + case S.START_BOUNDARY: + if (index === boundary.length - 2) { + if (c === HYPHEN) { + flags |= F.LAST_BOUNDARY; + } else if (c !== CR) { + return; + } + index++; + break; + } else if (index - 1 === boundary.length - 2) { + if (flags & F.LAST_BOUNDARY && c === HYPHEN) { + state = S.END; + flags = 0; + } else if (!(flags & F.LAST_BOUNDARY) && c === LF) { + index = 0; + callback("onPartBegin"); + state = S.HEADER_FIELD_START; + } else { + return; + } + break; + } + if (c !== boundary[index + 2]) { + index = -2; + } + if (c === boundary[index + 2]) { + index++; + } + break; + case S.HEADER_FIELD_START: + state = S.HEADER_FIELD; + mark("onHeaderField"); + index = 0; + case S.HEADER_FIELD: + if (c === CR) { + clear("onHeaderField"); + state = S.HEADERS_ALMOST_DONE; + break; + } + index++; + if (c === HYPHEN) { + break; + } + if (c === COLON) { + if (index === 1) { + return; + } + dataCallback("onHeaderField", true); + state = S.HEADER_VALUE_START; + break; + } + cl = lower(c); + if (cl < A || cl > Z) { + return; + } + break; + case S.HEADER_VALUE_START: + if (c === SPACE) { + break; + } + mark("onHeaderValue"); + state = S.HEADER_VALUE; + case S.HEADER_VALUE: + if (c === CR) { + dataCallback("onHeaderValue", true); + callback("onHeaderEnd"); + state = S.HEADER_VALUE_ALMOST_DONE; + } + break; + case S.HEADER_VALUE_ALMOST_DONE: + if (c !== LF) { + return; + } + state = S.HEADER_FIELD_START; + break; + case S.HEADERS_ALMOST_DONE: + if (c !== LF) { + return; + } + callback("onHeadersEnd"); + state = S.PART_DATA_START; + break; + case S.PART_DATA_START: + state = S.PART_DATA; + mark("onPartData"); + case S.PART_DATA: + previousIndex = index; + if (index === 0) { + i2 += boundaryEnd; + while (i2 < bufferLength && !(data[i2] in boundaryChars)) { + i2 += boundaryLength; + } + i2 -= boundaryEnd; + c = data[i2]; + } + if (index < boundary.length) { + if (boundary[index] === c) { + if (index === 0) { + dataCallback("onPartData", true); + } + index++; + } else { + index = 0; + } + } else if (index === boundary.length) { + index++; + if (c === CR) { + flags |= F.PART_BOUNDARY; + } else if (c === HYPHEN) { + flags |= F.LAST_BOUNDARY; + } else { + index = 0; + } + } else if (index - 1 === boundary.length) { + if (flags & F.PART_BOUNDARY) { + index = 0; + if (c === LF) { + flags &= ~F.PART_BOUNDARY; + callback("onPartEnd"); + callback("onPartBegin"); + state = S.HEADER_FIELD_START; + break; + } + } else if (flags & F.LAST_BOUNDARY) { + if (c === HYPHEN) { + callback("onPartEnd"); + state = S.END; + flags = 0; + } else { + index = 0; + } + } else { + index = 0; + } + } + if (index > 0) { + lookbehind[index - 1] = c; + } else if (previousIndex > 0) { + const _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength); + callback("onPartData", 0, previousIndex, _lookbehind); + previousIndex = 0; + mark("onPartData"); + i2--; + } + break; + case S.END: + break; + default: + throw new Error(`Unexpected state entered: ${state}`); + } + } + dataCallback("onHeaderField"); + dataCallback("onHeaderValue"); + dataCallback("onPartData"); + this.index = index; + this.state = state; + this.flags = flags; + } + end() { + if (this.state === S.HEADER_FIELD_START && this.index === 0 || this.state === S.PART_DATA && this.index === this.boundary.length) { + this.onPartEnd(); + } else if (this.state !== S.END) { + throw new Error("MultipartParser.end(): stream ended unexpectedly"); + } + } + }; + } +}); + +// +import Stream, { PassThrough } from "node:stream"; +import { types, deprecate, promisify } from "node:util"; +import { Buffer as Buffer2 } from "node:buffer"; +async function consumeBody(data) { + if (data[INTERNALS].disturbed) { + throw new TypeError(`body used already for: ${data.url}`); + } + data[INTERNALS].disturbed = true; + if (data[INTERNALS].error) { + throw data[INTERNALS].error; + } + const { body } = data; + if (body === null) { + return Buffer2.alloc(0); + } + if (!(body instanceof Stream)) { + return Buffer2.alloc(0); + } + const accum = []; + let accumBytes = 0; + try { + for await (const chunk of body) { + if (data.size > 0 && accumBytes + chunk.length > data.size) { + const error2 = new FetchError(`content size at ${data.url} over limit: ${data.size}`, "max-size"); + body.destroy(error2); + throw error2; + } + accumBytes += chunk.length; + accum.push(chunk); + } + } catch (error2) { + const error_ = error2 instanceof FetchBaseError ? error2 : new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error2.message}`, "system", error2); + throw error_; + } + if (body.readableEnded === true || body._readableState.ended === true) { + try { + if (accum.every((c) => typeof c === "string")) { + return Buffer2.from(accum.join("")); + } + return Buffer2.concat(accum, accumBytes); + } catch (error2) { + throw new FetchError(`Could not create Buffer from response body for ${data.url}: ${error2.message}`, "system", error2); + } + } else { + throw new FetchError(`Premature close of server response while trying to fetch ${data.url}`); + } +} +var pipeline, INTERNALS, Body, clone, getNonSpecFormDataBoundary, extractContentType, getTotalBytes, writeToStream; +var init_body = __esm({ + ""() { + init_fetch_blob(); + init_esm_min(); + init_fetch_error(); + init_base(); + init_is(); + pipeline = promisify(Stream.pipeline); + INTERNALS = Symbol("Body internals"); + Body = class { + constructor(body, { + size = 0 + } = {}) { + let boundary = null; + if (body === null) { + body = null; + } else if (isURLSearchParameters(body)) { + body = Buffer2.from(body.toString()); + } else if (isBlob(body)) { + } else if (Buffer2.isBuffer(body)) { + } else if (types.isAnyArrayBuffer(body)) { + body = Buffer2.from(body); + } else if (ArrayBuffer.isView(body)) { + body = Buffer2.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) { + } else if (body instanceof FormData2) { + body = formDataToBlob(body); + boundary = body.type.split("=")[1]; + } else { + body = Buffer2.from(String(body)); + } + let stream = body; + if (Buffer2.isBuffer(body)) { + stream = Stream.Readable.from(body); + } else if (isBlob(body)) { + stream = Stream.Readable.from(body.stream()); + } + this[INTERNALS] = { + body, + stream, + boundary, + disturbed: false, + error: null + }; + this.size = size; + if (body instanceof Stream) { + body.on("error", (error_) => { + const error2 = error_ instanceof FetchBaseError ? error_ : new FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`, "system", error_); + this[INTERNALS].error = error2; + }); + } + } + get body() { + return this[INTERNALS].stream; + } + get bodyUsed() { + return this[INTERNALS].disturbed; + } + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + async arrayBuffer() { + const { buffer, byteOffset, byteLength } = await consumeBody(this); + return buffer.slice(byteOffset, byteOffset + byteLength); + } + async formData() { + const ct = this.headers.get("content-type"); + if (ct.startsWith("application/x-www-form-urlencoded")) { + const formData = new FormData2(); + const parameters = new URLSearchParams(await this.text()); + for (const [name, value] of parameters) { + formData.append(name, value); + } + return formData; + } + const { toFormData: toFormData2 } = await Promise.resolve().then(() => (init_multipart_parser(), multipart_parser_exports)); + return toFormData2(this.body, ct); + } + /** + * Return raw response as Blob + * + * @return Promise + */ + async blob() { + const ct = this.headers && this.headers.get("content-type") || this[INTERNALS].body && this[INTERNALS].body.type || ""; + const buf = await this.arrayBuffer(); + return new fetch_blob_default([buf], { + type: ct + }); + } + /** + * Decode response as json + * + * @return Promise + */ + async json() { + const text = await this.text(); + return JSON.parse(text); + } + /** + * Decode response as text + * + * @return Promise + */ + async text() { + const buffer = await consumeBody(this); + return new TextDecoder().decode(buffer); + } + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody(this); + } + }; + Body.prototype.buffer = deprecate(Body.prototype.buffer, "Please use 'response.arrayBuffer()' instead of 'response.buffer()'", "node-fetch#buffer"); + Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true }, + data: { get: deprecate( + () => { + }, + "data doesn't exist, use json(), text(), arrayBuffer(), or body instead", + "https://github.com/node-fetch/node-fetch/issues/1000 (response)" + ) } + }); + clone = (instance, highWaterMark) => { + let p1; + let p2; + let { body } = instance[INTERNALS]; + if (instance.bodyUsed) { + throw new Error("cannot clone body after it is used"); + } + if (body instanceof Stream && typeof body.getBoundary !== "function") { + p1 = new PassThrough({ highWaterMark }); + p2 = new PassThrough({ highWaterMark }); + body.pipe(p1); + body.pipe(p2); + instance[INTERNALS].stream = p1; + body = p2; + } + return body; + }; + getNonSpecFormDataBoundary = deprecate( + (body) => body.getBoundary(), + "form-data doesn't follow the spec and requires special treatment. Use alternative package", + "https://github.com/node-fetch/node-fetch/issues/1167" + ); + extractContentType = (body, request2) => { + if (body === null) { + return null; + } + if (typeof body === "string") { + return "text/plain;charset=UTF-8"; + } + if (isURLSearchParameters(body)) { + return "application/x-www-form-urlencoded;charset=UTF-8"; + } + if (isBlob(body)) { + return body.type || null; + } + if (Buffer2.isBuffer(body) || types.isAnyArrayBuffer(body) || ArrayBuffer.isView(body)) { + return null; + } + if (body instanceof FormData2) { + return `multipart/form-data; boundary=${request2[INTERNALS].boundary}`; + } + if (body && typeof body.getBoundary === "function") { + return `multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`; + } + if (body instanceof Stream) { + return null; + } + return "text/plain;charset=UTF-8"; + }; + getTotalBytes = (request2) => { + const { body } = request2[INTERNALS]; + if (body === null) { + return 0; + } + if (isBlob(body)) { + return body.size; + } + if (Buffer2.isBuffer(body)) { + return body.length; + } + if (body && typeof body.getLengthSync === "function") { + return body.hasKnownLength && body.hasKnownLength() ? body.getLengthSync() : null; + } + return null; + }; + writeToStream = async (dest, { body }) => { + if (body === null) { + dest.end(); + } else { + await pipeline(body, dest); + } + }; + } +}); + +// +import { types as types2 } from "node:util"; +import http2 from "node:http"; +function fromRawHeaders(headers = []) { + return new Headers3( + headers.reduce((result, value, index, array) => { + if (index % 2 === 0) { + result.push(array.slice(index, index + 2)); + } + return result; + }, []).filter(([name, value]) => { + try { + validateHeaderName(name); + validateHeaderValue(name, String(value)); + return true; + } catch { + return false; + } + }) + ); +} +var validateHeaderName, validateHeaderValue, Headers3; +var init_headers = __esm({ + ""() { + validateHeaderName = typeof http2.validateHeaderName === "function" ? http2.validateHeaderName : (name) => { + if (!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name)) { + const error2 = new TypeError(`Header name must be a valid HTTP token [${name}]`); + Object.defineProperty(error2, "code", { value: "ERR_INVALID_HTTP_TOKEN" }); + throw error2; + } + }; + validateHeaderValue = typeof http2.validateHeaderValue === "function" ? http2.validateHeaderValue : (name, value) => { + if (/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)) { + const error2 = new TypeError(`Invalid character in header content ["${name}"]`); + Object.defineProperty(error2, "code", { value: "ERR_INVALID_CHAR" }); + throw error2; + } + }; + Headers3 = class _Headers extends URLSearchParams { + /** + * Headers class + * + * @constructor + * @param {HeadersInit} [init] - Response headers + */ + constructor(init) { + let result = []; + if (init instanceof _Headers) { + const raw = init.raw(); + for (const [name, values] of Object.entries(raw)) { + result.push(...values.map((value) => [name, value])); + } + } else if (init == null) { + } else if (typeof init === "object" && !types2.isBoxedPrimitive(init)) { + const method = init[Symbol.iterator]; + if (method == null) { + result.push(...Object.entries(init)); + } else { + if (typeof method !== "function") { + throw new TypeError("Header pairs must be iterable"); + } + result = [...init].map((pair) => { + if (typeof pair !== "object" || types2.isBoxedPrimitive(pair)) { + throw new TypeError("Each header pair must be an iterable object"); + } + return [...pair]; + }).map((pair) => { + if (pair.length !== 2) { + throw new TypeError("Each header pair must be a name/value tuple"); + } + return [...pair]; + }); + } + } else { + throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence> or record)"); + } + result = result.length > 0 ? result.map(([name, value]) => { + validateHeaderName(name); + validateHeaderValue(name, String(value)); + return [String(name).toLowerCase(), String(value)]; + }) : void 0; + super(result); + return new Proxy(this, { + get(target, p, receiver) { + switch (p) { + case "append": + case "set": + return (name, value) => { + validateHeaderName(name); + validateHeaderValue(name, String(value)); + return URLSearchParams.prototype[p].call( + target, + String(name).toLowerCase(), + String(value) + ); + }; + case "delete": + case "has": + case "getAll": + return (name) => { + validateHeaderName(name); + return URLSearchParams.prototype[p].call( + target, + String(name).toLowerCase() + ); + }; + case "keys": + return () => { + target.sort(); + return new Set(URLSearchParams.prototype.keys.call(target)).keys(); + }; + default: + return Reflect.get(target, p, receiver); + } + } + }); + } + get [Symbol.toStringTag]() { + return this.constructor.name; + } + toString() { + return Object.prototype.toString.call(this); + } + get(name) { + const values = this.getAll(name); + if (values.length === 0) { + return null; + } + let value = values.join(", "); + if (/^content-encoding$/i.test(name)) { + value = value.toLowerCase(); + } + return value; + } + forEach(callback, thisArg = void 0) { + for (const name of this.keys()) { + Reflect.apply(callback, thisArg, [this.get(name), name, this]); + } + } + *values() { + for (const name of this.keys()) { + yield this.get(name); + } + } + /** + * @type {() => IterableIterator<[string, string]>} + */ + *entries() { + for (const name of this.keys()) { + yield [name, this.get(name)]; + } + } + [Symbol.iterator]() { + return this.entries(); + } + /** + * Node-fetch non-spec method + * returning all headers and their values as array + * @returns {Record} + */ + raw() { + return [...this.keys()].reduce((result, key) => { + result[key] = this.getAll(key); + return result; + }, {}); + } + /** + * For better console.log(headers) and also to convert Headers into Node.js Request compatible format + */ + [Symbol.for("nodejs.util.inspect.custom")]() { + return [...this.keys()].reduce((result, key) => { + const values = this.getAll(key); + if (key === "host") { + result[key] = values[0]; + } else { + result[key] = values.length > 1 ? values : values[0]; + } + return result; + }, {}); + } + }; + Object.defineProperties( + Headers3.prototype, + ["get", "entries", "forEach", "values"].reduce((result, property) => { + result[property] = { enumerable: true }; + return result; + }, {}) + ); + } +}); + +// +var redirectStatus, isRedirect; +var init_is_redirect = __esm({ + ""() { + redirectStatus = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]); + isRedirect = (code) => { + return redirectStatus.has(code); + }; + } +}); + +// +var INTERNALS2, Response2; +var init_response = __esm({ + ""() { + init_headers(); + init_body(); + init_is_redirect(); + INTERNALS2 = Symbol("Response internals"); + Response2 = class _Response extends Body { + constructor(body = null, options = {}) { + super(body, options); + const status = options.status != null ? options.status : 200; + const headers = new Headers3(options.headers); + if (body !== null && !headers.has("Content-Type")) { + const contentType = extractContentType(body, this); + if (contentType) { + headers.append("Content-Type", contentType); + } + } + this[INTERNALS2] = { + type: "default", + url: options.url, + status, + statusText: options.statusText || "", + headers, + counter: options.counter, + highWaterMark: options.highWaterMark + }; + } + get type() { + return this[INTERNALS2].type; + } + get url() { + return this[INTERNALS2].url || ""; + } + get status() { + return this[INTERNALS2].status; + } + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS2].status >= 200 && this[INTERNALS2].status < 300; + } + get redirected() { + return this[INTERNALS2].counter > 0; + } + get statusText() { + return this[INTERNALS2].statusText; + } + get headers() { + return this[INTERNALS2].headers; + } + get highWaterMark() { + return this[INTERNALS2].highWaterMark; + } + /** + * Clone this response + * + * @return Response + */ + clone() { + return new _Response(clone(this, this.highWaterMark), { + type: this.type, + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected, + size: this.size, + highWaterMark: this.highWaterMark + }); + } + /** + * @param {string} url The URL that the new response is to originate from. + * @param {number} status An optional status code for the response (e.g., 302.) + * @returns {Response} A Response object. + */ + static redirect(url, status = 302) { + if (!isRedirect(status)) { + throw new RangeError('Failed to execute "redirect" on "response": Invalid status code'); + } + return new _Response(null, { + headers: { + location: new URL(url).toString() + }, + status + }); + } + static error() { + const response = new _Response(null, { status: 0, statusText: "" }); + response[INTERNALS2].type = "error"; + return response; + } + static json(data = void 0, init = {}) { + const body = JSON.stringify(data); + if (body === void 0) { + throw new TypeError("data is not JSON serializable"); + } + const headers = new Headers3(init && init.headers); + if (!headers.has("content-type")) { + headers.set("content-type", "application/json"); + } + return new _Response(body, { + ...init, + headers + }); + } + get [Symbol.toStringTag]() { + return "Response"; + } + }; + Object.defineProperties(Response2.prototype, { + type: { enumerable: true }, + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } + }); + } +}); + +// +var getSearch; +var init_get_search = __esm({ + ""() { + getSearch = (parsedURL) => { + if (parsedURL.search) { + return parsedURL.search; + } + const lastOffset = parsedURL.href.length - 1; + const hash = parsedURL.hash || (parsedURL.href[lastOffset] === "#" ? "#" : ""); + return parsedURL.href[lastOffset - hash.length] === "?" ? "?" : ""; + }; + } +}); + +// +import { isIP } from "node:net"; +function stripURLForUseAsAReferrer(url, originOnly = false) { + if (url == null) { + return "no-referrer"; + } + url = new URL(url); + if (/^(about|blob|data):$/.test(url.protocol)) { + return "no-referrer"; + } + url.username = ""; + url.password = ""; + url.hash = ""; + if (originOnly) { + url.pathname = ""; + url.search = ""; + } + return url; +} +function validateReferrerPolicy(referrerPolicy) { + if (!ReferrerPolicy.has(referrerPolicy)) { + throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`); + } + return referrerPolicy; +} +function isOriginPotentiallyTrustworthy(url) { + if (/^(http|ws)s:$/.test(url.protocol)) { + return true; + } + const hostIp = url.host.replace(/(^\[)|(]$)/g, ""); + const hostIPVersion = isIP(hostIp); + if (hostIPVersion === 4 && /^127\./.test(hostIp)) { + return true; + } + if (hostIPVersion === 6 && /^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)) { + return true; + } + if (url.host === "localhost" || url.host.endsWith(".localhost")) { + return false; + } + if (url.protocol === "file:") { + return true; + } + return false; +} +function isUrlPotentiallyTrustworthy(url) { + if (/^about:(blank|srcdoc)$/.test(url)) { + return true; + } + if (url.protocol === "data:") { + return true; + } + if (/^(blob|filesystem):$/.test(url.protocol)) { + return true; + } + return isOriginPotentiallyTrustworthy(url); +} +function determineRequestsReferrer(request2, { referrerURLCallback, referrerOriginCallback } = {}) { + if (request2.referrer === "no-referrer" || request2.referrerPolicy === "") { + return null; + } + const policy = request2.referrerPolicy; + if (request2.referrer === "about:client") { + return "no-referrer"; + } + const referrerSource = request2.referrer; + let referrerURL = stripURLForUseAsAReferrer(referrerSource); + let referrerOrigin = stripURLForUseAsAReferrer(referrerSource, true); + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin; + } + if (referrerURLCallback) { + referrerURL = referrerURLCallback(referrerURL); + } + if (referrerOriginCallback) { + referrerOrigin = referrerOriginCallback(referrerOrigin); + } + const currentURL = new URL(request2.url); + switch (policy) { + case "no-referrer": + return "no-referrer"; + case "origin": + return referrerOrigin; + case "unsafe-url": + return referrerURL; + case "strict-origin": + if (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) { + return "no-referrer"; + } + return referrerOrigin.toString(); + case "strict-origin-when-cross-origin": + if (referrerURL.origin === currentURL.origin) { + return referrerURL; + } + if (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) { + return "no-referrer"; + } + return referrerOrigin; + case "same-origin": + if (referrerURL.origin === currentURL.origin) { + return referrerURL; + } + return "no-referrer"; + case "origin-when-cross-origin": + if (referrerURL.origin === currentURL.origin) { + return referrerURL; + } + return referrerOrigin; + case "no-referrer-when-downgrade": + if (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) { + return "no-referrer"; + } + return referrerURL; + default: + throw new TypeError(`Invalid referrerPolicy: ${policy}`); + } +} +function parseReferrerPolicyFromHeader(headers) { + const policyTokens = (headers.get("referrer-policy") || "").split(/[,\s]+/); + let policy = ""; + for (const token of policyTokens) { + if (token && ReferrerPolicy.has(token)) { + policy = token; + } + } + return policy; +} +var ReferrerPolicy, DEFAULT_REFERRER_POLICY; +var init_referrer = __esm({ + ""() { + ReferrerPolicy = /* @__PURE__ */ new Set([ + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" + ]); + DEFAULT_REFERRER_POLICY = "strict-origin-when-cross-origin"; + } +}); + +// +import { format as formatUrl } from "node:url"; +import { deprecate as deprecate2 } from "node:util"; +var INTERNALS3, isRequest, doBadDataWarn, Request, getNodeRequestOptions; +var init_request = __esm({ + ""() { + init_headers(); + init_body(); + init_is(); + init_get_search(); + init_referrer(); + INTERNALS3 = Symbol("Request internals"); + isRequest = (object) => { + return typeof object === "object" && typeof object[INTERNALS3] === "object"; + }; + doBadDataWarn = deprecate2( + () => { + }, + ".data is not a valid RequestInit property, use .body instead", + "https://github.com/node-fetch/node-fetch/issues/1000 (request)" + ); + Request = class _Request extends Body { + constructor(input, init = {}) { + let parsedURL; + if (isRequest(input)) { + parsedURL = new URL(input.url); + } else { + parsedURL = new URL(input); + input = {}; + } + if (parsedURL.username !== "" || parsedURL.password !== "") { + throw new TypeError(`${parsedURL} is an url with embedded credentials.`); + } + let method = init.method || input.method || "GET"; + if (/^(delete|get|head|options|post|put)$/i.test(method)) { + method = method.toUpperCase(); + } + if (!isRequest(init) && "data" in init) { + doBadDataWarn(); + } + if ((init.body != null || isRequest(input) && input.body !== null) && (method === "GET" || method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body"); + } + const inputBody = init.body ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + super(inputBody, { + size: init.size || input.size || 0 + }); + const headers = new Headers3(init.headers || input.headers || {}); + if (inputBody !== null && !headers.has("Content-Type")) { + const contentType = extractContentType(inputBody, this); + if (contentType) { + headers.set("Content-Type", contentType); + } + } + let signal = isRequest(input) ? input.signal : null; + if ("signal" in init) { + signal = init.signal; + } + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget"); + } + let referrer = init.referrer == null ? input.referrer : init.referrer; + if (referrer === "") { + referrer = "no-referrer"; + } else if (referrer) { + const parsedReferrer = new URL(referrer); + referrer = /^about:(\/\/)?client$/.test(parsedReferrer) ? "client" : parsedReferrer; + } else { + referrer = void 0; + } + this[INTERNALS3] = { + method, + redirect: init.redirect || input.redirect || "follow", + headers, + parsedURL, + signal, + referrer + }; + this.follow = init.follow === void 0 ? input.follow === void 0 ? 20 : input.follow : init.follow; + this.compress = init.compress === void 0 ? input.compress === void 0 ? true : input.compress : init.compress; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + this.highWaterMark = init.highWaterMark || input.highWaterMark || 16384; + this.insecureHTTPParser = init.insecureHTTPParser || input.insecureHTTPParser || false; + this.referrerPolicy = init.referrerPolicy || input.referrerPolicy || ""; + } + /** @returns {string} */ + get method() { + return this[INTERNALS3].method; + } + /** @returns {string} */ + get url() { + return formatUrl(this[INTERNALS3].parsedURL); + } + /** @returns {Headers} */ + get headers() { + return this[INTERNALS3].headers; + } + get redirect() { + return this[INTERNALS3].redirect; + } + /** @returns {AbortSignal} */ + get signal() { + return this[INTERNALS3].signal; + } + // https://fetch.spec.whatwg.org/#dom-request-referrer + get referrer() { + if (this[INTERNALS3].referrer === "no-referrer") { + return ""; + } + if (this[INTERNALS3].referrer === "client") { + return "about:client"; + } + if (this[INTERNALS3].referrer) { + return this[INTERNALS3].referrer.toString(); + } + return void 0; + } + get referrerPolicy() { + return this[INTERNALS3].referrerPolicy; + } + set referrerPolicy(referrerPolicy) { + this[INTERNALS3].referrerPolicy = validateReferrerPolicy(referrerPolicy); + } + /** + * Clone this request + * + * @return Request + */ + clone() { + return new _Request(this); + } + get [Symbol.toStringTag]() { + return "Request"; + } + }; + Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true }, + referrer: { enumerable: true }, + referrerPolicy: { enumerable: true } + }); + getNodeRequestOptions = (request2) => { + const { parsedURL } = request2[INTERNALS3]; + const headers = new Headers3(request2[INTERNALS3].headers); + if (!headers.has("Accept")) { + headers.set("Accept", "*/*"); + } + let contentLengthValue = null; + if (request2.body === null && /^(post|put)$/i.test(request2.method)) { + contentLengthValue = "0"; + } + if (request2.body !== null) { + const totalBytes = getTotalBytes(request2); + if (typeof totalBytes === "number" && !Number.isNaN(totalBytes)) { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set("Content-Length", contentLengthValue); + } + if (request2.referrerPolicy === "") { + request2.referrerPolicy = DEFAULT_REFERRER_POLICY; + } + if (request2.referrer && request2.referrer !== "no-referrer") { + request2[INTERNALS3].referrer = determineRequestsReferrer(request2); + } else { + request2[INTERNALS3].referrer = "no-referrer"; + } + if (request2[INTERNALS3].referrer instanceof URL) { + headers.set("Referer", request2.referrer); + } + if (!headers.has("User-Agent")) { + headers.set("User-Agent", "node-fetch"); + } + if (request2.compress && !headers.has("Accept-Encoding")) { + headers.set("Accept-Encoding", "gzip, deflate, br"); + } + let { agent } = request2; + if (typeof agent === "function") { + agent = agent(parsedURL); + } + const search = getSearch(parsedURL); + const options = { + // Overwrite search to retain trailing ? (issue #776) + path: parsedURL.pathname + search, + // The following options are not expressed in the URL + method: request2.method, + headers: headers[Symbol.for("nodejs.util.inspect.custom")](), + insecureHTTPParser: request2.insecureHTTPParser, + agent + }; + return { + /** @type {URL} */ + parsedURL, + options + }; + }; + } +}); + +// +var AbortError; +var init_abort_error = __esm({ + ""() { + init_base(); + AbortError = class extends FetchBaseError { + constructor(message, type = "aborted") { + super(message, type); + } + }; + } +}); + +// +var src_exports = {}; +__export(src_exports, { + AbortError: () => AbortError, + Blob: () => fetch_blob_default, + FetchError: () => FetchError, + File: () => file_default, + FormData: () => FormData2, + Headers: () => Headers3, + Request: () => Request, + Response: () => Response2, + blobFrom: () => blobFrom, + blobFromSync: () => blobFromSync, + default: () => fetch3, + fileFrom: () => fileFrom, + fileFromSync: () => fileFromSync, + isRedirect: () => isRedirect +}); +import http3 from "node:http"; +import https2 from "node:https"; +import zlib from "node:zlib"; +import Stream2, { PassThrough as PassThrough2, pipeline as pump } from "node:stream"; +import { Buffer as Buffer3 } from "node:buffer"; +async function fetch3(url, options_) { + return new Promise((resolve2, reject) => { + const request2 = new Request(url, options_); + const { parsedURL, options } = getNodeRequestOptions(request2); + if (!supportedSchemas.has(parsedURL.protocol)) { + throw new TypeError(`node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(/:$/, "")}" is not supported.`); + } + if (parsedURL.protocol === "data:") { + const data = dist_default(request2.url); + const response2 = new Response2(data, { headers: { "Content-Type": data.typeFull } }); + resolve2(response2); + return; + } + const send = (parsedURL.protocol === "https:" ? https2 : http3).request; + const { signal } = request2; + let response = null; + const abort = () => { + const error2 = new AbortError("The operation was aborted."); + reject(error2); + if (request2.body && request2.body instanceof Stream2.Readable) { + request2.body.destroy(error2); + } + if (!response || !response.body) { + return; + } + response.body.emit("error", error2); + }; + if (signal && signal.aborted) { + abort(); + return; + } + const abortAndFinalize = () => { + abort(); + finalize(); + }; + const request_ = send(parsedURL.toString(), options); + if (signal) { + signal.addEventListener("abort", abortAndFinalize); + } + const finalize = () => { + request_.abort(); + if (signal) { + signal.removeEventListener("abort", abortAndFinalize); + } + }; + request_.on("error", (error2) => { + reject(new FetchError(`request to ${request2.url} failed, reason: ${error2.message}`, "system", error2)); + finalize(); + }); + fixResponseChunkedTransferBadEnding(request_, (error2) => { + if (response && response.body) { + response.body.destroy(error2); + } + }); + if (process.version < "v14") { + request_.on("socket", (s2) => { + let endedWithEventsCount; + s2.prependListener("end", () => { + endedWithEventsCount = s2._eventsCount; + }); + s2.prependListener("close", (hadError) => { + if (response && endedWithEventsCount < s2._eventsCount && !hadError) { + const error2 = new Error("Premature close"); + error2.code = "ERR_STREAM_PREMATURE_CLOSE"; + response.body.emit("error", error2); + } + }); + }); + } + request_.on("response", (response_) => { + request_.setTimeout(0); + const headers = fromRawHeaders(response_.rawHeaders); + if (isRedirect(response_.statusCode)) { + const location = headers.get("Location"); + let locationURL = null; + try { + locationURL = location === null ? null : new URL(location, request2.url); + } catch { + if (request2.redirect !== "manual") { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, "invalid-redirect")); + finalize(); + return; + } + } + switch (request2.redirect) { + case "error": + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request2.url}`, "no-redirect")); + finalize(); + return; + case "manual": + break; + case "follow": { + if (locationURL === null) { + break; + } + if (request2.counter >= request2.follow) { + reject(new FetchError(`maximum redirect reached at: ${request2.url}`, "max-redirect")); + finalize(); + return; + } + const requestOptions = { + headers: new Headers3(request2.headers), + follow: request2.follow, + counter: request2.counter + 1, + agent: request2.agent, + compress: request2.compress, + method: request2.method, + body: clone(request2), + signal: request2.signal, + size: request2.size, + referrer: request2.referrer, + referrerPolicy: request2.referrerPolicy + }; + if (!isDomainOrSubdomain(request2.url, locationURL) || !isSameProtocol(request2.url, locationURL)) { + for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) { + requestOptions.headers.delete(name); + } + } + if (response_.statusCode !== 303 && request2.body && options_.body instanceof Stream2.Readable) { + reject(new FetchError("Cannot follow redirect with body being a readable stream", "unsupported-redirect")); + finalize(); + return; + } + if (response_.statusCode === 303 || (response_.statusCode === 301 || response_.statusCode === 302) && request2.method === "POST") { + requestOptions.method = "GET"; + requestOptions.body = void 0; + requestOptions.headers.delete("content-length"); + } + const responseReferrerPolicy = parseReferrerPolicyFromHeader(headers); + if (responseReferrerPolicy) { + requestOptions.referrerPolicy = responseReferrerPolicy; + } + resolve2(fetch3(new Request(locationURL, requestOptions))); + finalize(); + return; + } + default: + return reject(new TypeError(`Redirect option '${request2.redirect}' is not a valid value of RequestRedirect`)); + } + } + if (signal) { + response_.once("end", () => { + signal.removeEventListener("abort", abortAndFinalize); + }); + } + let body = pump(response_, new PassThrough2(), (error2) => { + if (error2) { + reject(error2); + } + }); + if (process.version < "v12.10") { + response_.on("aborted", abortAndFinalize); + } + const responseOptions = { + url: request2.url, + status: response_.statusCode, + statusText: response_.statusMessage, + headers, + size: request2.size, + counter: request2.counter, + highWaterMark: request2.highWaterMark + }; + const codings = headers.get("Content-Encoding"); + if (!request2.compress || request2.method === "HEAD" || codings === null || response_.statusCode === 204 || response_.statusCode === 304) { + response = new Response2(body, responseOptions); + resolve2(response); + return; + } + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + if (codings === "gzip" || codings === "x-gzip") { + body = pump(body, zlib.createGunzip(zlibOptions), (error2) => { + if (error2) { + reject(error2); + } + }); + response = new Response2(body, responseOptions); + resolve2(response); + return; + } + if (codings === "deflate" || codings === "x-deflate") { + const raw = pump(response_, new PassThrough2(), (error2) => { + if (error2) { + reject(error2); + } + }); + raw.once("data", (chunk) => { + if ((chunk[0] & 15) === 8) { + body = pump(body, zlib.createInflate(), (error2) => { + if (error2) { + reject(error2); + } + }); + } else { + body = pump(body, zlib.createInflateRaw(), (error2) => { + if (error2) { + reject(error2); + } + }); + } + response = new Response2(body, responseOptions); + resolve2(response); + }); + raw.once("end", () => { + if (!response) { + response = new Response2(body, responseOptions); + resolve2(response); + } + }); + return; + } + if (codings === "br") { + body = pump(body, zlib.createBrotliDecompress(), (error2) => { + if (error2) { + reject(error2); + } + }); + response = new Response2(body, responseOptions); + resolve2(response); + return; + } + response = new Response2(body, responseOptions); + resolve2(response); + }); + writeToStream(request_, request2).catch(reject); + }); +} +function fixResponseChunkedTransferBadEnding(request2, errorCallback) { + const LAST_CHUNK = Buffer3.from("0\r\n\r\n"); + let isChunkedTransfer = false; + let properLastChunkReceived = false; + let previousChunk; + request2.on("response", (response) => { + const { headers } = response; + isChunkedTransfer = headers["transfer-encoding"] === "chunked" && !headers["content-length"]; + }); + request2.on("socket", (socket) => { + const onSocketClose = () => { + if (isChunkedTransfer && !properLastChunkReceived) { + const error2 = new Error("Premature close"); + error2.code = "ERR_STREAM_PREMATURE_CLOSE"; + errorCallback(error2); + } + }; + const onData = (buf) => { + properLastChunkReceived = Buffer3.compare(buf.slice(-5), LAST_CHUNK) === 0; + if (!properLastChunkReceived && previousChunk) { + properLastChunkReceived = Buffer3.compare(previousChunk.slice(-3), LAST_CHUNK.slice(0, 3)) === 0 && Buffer3.compare(buf.slice(-2), LAST_CHUNK.slice(3)) === 0; + } + previousChunk = buf; + }; + socket.prependListener("close", onSocketClose); + socket.on("data", onData); + request2.on("close", () => { + socket.removeListener("close", onSocketClose); + socket.removeListener("data", onData); + }); + }); +} +var supportedSchemas; +var init_src = __esm({ + ""() { + init_dist(); + init_body(); + init_response(); + init_headers(); + init_request(); + init_fetch_error(); + init_abort_error(); + init_is_redirect(); + init_esm_min(); + init_is(); + init_referrer(); + init_from(); + supportedSchemas = /* @__PURE__ */ new Set(["data:", "http:", "https:"]); + } +}); + +// +var require_gaxios = __commonJS({ + ""(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + var _a3; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Gaxios = void 0; + var extend_1 = __importDefault(require_extend()); + var https_1 = __require("https"); + var common_js_1 = require_common(); + var retry_js_1 = require_retry4(); + var stream_1 = __require("stream"); + var interceptor_js_1 = require_interceptor(); + var randomUUID2 = async () => globalThis.crypto?.randomUUID() || (await import("crypto")).randomUUID(); + var HTTP_STATUS_NO_CONTENT = 204; + var Gaxios = class { + agentCache = /* @__PURE__ */ new Map(); + /** + * Default HTTP options that will be used for every HTTP request. + */ + defaults; + /** + * Interceptors + */ + interceptors; + /** + * The Gaxios class is responsible for making HTTP requests. + * @param defaults The default set of options to be used for this instance. + */ + constructor(defaults2) { + this.defaults = defaults2 || {}; + this.interceptors = { + request: new interceptor_js_1.GaxiosInterceptorManager(), + response: new interceptor_js_1.GaxiosInterceptorManager() + }; + } + /** + * A {@link fetch `fetch`} compliant API for {@link Gaxios}. + * + * @remarks + * + * This is useful as a drop-in replacement for `fetch` API usage. + * + * @example + * + * ```ts + * const gaxios = new Gaxios(); + * const myFetch: typeof fetch = (...args) => gaxios.fetch(...args); + * await myFetch('https://example.com'); + * ``` + * + * @param args `fetch` API or `Gaxios#request` parameters + * @returns the {@link Response} with Gaxios-added properties + */ + fetch(...args) { + const input = args[0]; + const init = args[1]; + let url = void 0; + const headers = new Headers(); + if (typeof input === "string") { + url = new URL(input); + } else if (input instanceof URL) { + url = input; + } else if (input && input.url) { + url = new URL(input.url); + } + if (input && typeof input === "object" && "headers" in input) { + _a3.mergeHeaders(headers, input.headers); + } + if (init) { + _a3.mergeHeaders(headers, new Headers(init.headers)); + } + if (typeof input === "object" && !(input instanceof URL)) { + return this.request({ ...init, ...input, headers, url }); + } else { + return this.request({ ...init, headers, url }); + } + } + /** + * Perform an HTTP request with the given options. + * @param opts Set of HTTP options that will be used for this HTTP request. + */ + async request(opts = {}) { + let prepared = await this.#prepareRequest(opts); + prepared = await this.#applyRequestInterceptors(prepared); + return this.#applyResponseInterceptors(this._request(prepared)); + } + async _defaultAdapter(config) { + const fetchImpl = config.fetchImplementation || this.defaults.fetchImplementation || await _a3.#getFetch(); + const preparedOpts = { ...config }; + delete preparedOpts.data; + const res = await fetchImpl(config.url, preparedOpts); + const data = await this.getResponseData(config, res); + if (!Object.getOwnPropertyDescriptor(res, "data")?.configurable) { + Object.defineProperties(res, { + data: { + configurable: true, + writable: true, + enumerable: true, + value: data + } + }); + } + return Object.assign(res, { config, data }); + } + /** + * Internal, retryable version of the `request` method. + * @param opts Set of HTTP options that will be used for this HTTP request. + */ + async _request(opts) { + try { + let translatedResponse; + if (opts.adapter) { + translatedResponse = await opts.adapter(opts, this._defaultAdapter.bind(this)); + } else { + translatedResponse = await this._defaultAdapter(opts); + } + if (!opts.validateStatus(translatedResponse.status)) { + if (opts.responseType === "stream") { + const response = []; + for await (const chunk of translatedResponse.data) { + response.push(chunk); + } + translatedResponse.data = response.toString(); + } + const errorInfo = common_js_1.GaxiosError.extractAPIErrorFromResponse(translatedResponse, `Request failed with status code ${translatedResponse.status}`); + throw new common_js_1.GaxiosError(errorInfo?.message, opts, translatedResponse, errorInfo); + } + return translatedResponse; + } catch (e2) { + let err; + if (e2 instanceof common_js_1.GaxiosError) { + err = e2; + } else if (e2 instanceof Error) { + err = new common_js_1.GaxiosError(e2.message, opts, void 0, e2); + } else { + err = new common_js_1.GaxiosError("Unexpected Gaxios Error", opts, void 0, e2); + } + const { shouldRetry, config } = await (0, retry_js_1.getRetryConfig)(err); + if (shouldRetry && config) { + err.config.retryConfig.currentRetryAttempt = config.retryConfig.currentRetryAttempt; + opts.retryConfig = err.config?.retryConfig; + this.#appendTimeoutToSignal(opts); + return this._request(opts); + } + if (opts.errorRedactor) { + opts.errorRedactor(err); + } + throw err; + } + } + async getResponseData(opts, res) { + if (res.status === HTTP_STATUS_NO_CONTENT) { + return ""; + } + if (opts.maxContentLength && res.headers.has("content-length") && opts.maxContentLength < Number.parseInt(res.headers?.get("content-length") || "")) { + throw new common_js_1.GaxiosError("Response's `Content-Length` is over the limit.", opts, Object.assign(res, { config: opts })); + } + switch (opts.responseType) { + case "stream": + return res.body; + case "json": { + const data = await res.text(); + try { + return JSON.parse(data); + } catch { + return data; + } + } + case "arraybuffer": + return res.arrayBuffer(); + case "blob": + return res.blob(); + case "text": + return res.text(); + default: + return this.getResponseDataFromContentType(res); + } + } + #urlMayUseProxy(url, noProxy = []) { + const candidate = new URL(url); + const noProxyList = [...noProxy]; + const noProxyEnvList = (process.env.NO_PROXY ?? process.env.no_proxy)?.split(",") || []; + for (const rule of noProxyEnvList) { + noProxyList.push(rule.trim()); + } + for (const rule of noProxyList) { + if (rule instanceof RegExp) { + if (rule.test(candidate.toString())) { + return false; + } + } else if (rule instanceof URL) { + if (rule.origin === candidate.origin) { + return false; + } + } else if (rule.startsWith("*.") || rule.startsWith(".")) { + const cleanedRule = rule.replace(/^\*\./, "."); + if (candidate.hostname.endsWith(cleanedRule)) { + return false; + } + } else if (rule === candidate.origin || rule === candidate.hostname || rule === candidate.href) { + return false; + } + } + return true; + } + /** + * Applies the request interceptors. The request interceptors are applied after the + * call to prepareRequest is completed. + * + * @param {GaxiosOptionsPrepared} options The current set of options. + * + * @returns {Promise} Promise that resolves to the set of options or response after interceptors are applied. + */ + async #applyRequestInterceptors(options) { + let promiseChain = Promise.resolve(options); + for (const interceptor of this.interceptors.request.values()) { + if (interceptor) { + promiseChain = promiseChain.then(interceptor.resolved, interceptor.rejected); + } + } + return promiseChain; + } + /** + * Applies the response interceptors. The response interceptors are applied after the + * call to request is made. + * + * @param {GaxiosOptionsPrepared} options The current set of options. + * + * @returns {Promise} Promise that resolves to the set of options or response after interceptors are applied. + */ + async #applyResponseInterceptors(response) { + let promiseChain = Promise.resolve(response); + for (const interceptor of this.interceptors.response.values()) { + if (interceptor) { + promiseChain = promiseChain.then(interceptor.resolved, interceptor.rejected); + } + } + return promiseChain; + } + /** + * Validates the options, merges them with defaults, and prepare request. + * + * @param options The original options passed from the client. + * @returns Prepared options, ready to make a request + */ + async #prepareRequest(options) { + const preparedHeaders = new Headers(this.defaults.headers); + _a3.mergeHeaders(preparedHeaders, options.headers); + const opts = (0, extend_1.default)(true, {}, this.defaults, options); + if (!opts.url) { + throw new Error("URL is required."); + } + if (opts.baseURL) { + opts.url = new URL(opts.url, opts.baseURL); + } + opts.url = new URL(opts.url); + if (opts.params) { + if (opts.paramsSerializer) { + let additionalQueryParams = opts.paramsSerializer(opts.params); + if (additionalQueryParams.startsWith("?")) { + additionalQueryParams = additionalQueryParams.slice(1); + } + const prefix = opts.url.toString().includes("?") ? "&" : "?"; + opts.url = opts.url + prefix + additionalQueryParams; + } else { + const url = opts.url instanceof URL ? opts.url : new URL(opts.url); + for (const [key, value] of new URLSearchParams(opts.params)) { + url.searchParams.append(key, value); + } + opts.url = url; + } + } + if (typeof options.maxContentLength === "number") { + opts.size = options.maxContentLength; + } + if (typeof options.maxRedirects === "number") { + opts.follow = options.maxRedirects; + } + const shouldDirectlyPassData = typeof opts.data === "string" || opts.data instanceof ArrayBuffer || opts.data instanceof Blob || // Node 18 does not have a global `File` object + globalThis.File && opts.data instanceof File || opts.data instanceof FormData || opts.data instanceof stream_1.Readable || opts.data instanceof ReadableStream || opts.data instanceof String || opts.data instanceof URLSearchParams || ArrayBuffer.isView(opts.data) || // `Buffer` (Node.js), `DataView`, `TypedArray` + /** + * @deprecated `node-fetch` or another third-party's request types + */ + ["Blob", "File", "FormData"].includes(opts.data?.constructor?.name || ""); + if (opts.multipart?.length) { + const boundary = await randomUUID2(); + preparedHeaders.set("content-type", `multipart/related; boundary=${boundary}`); + opts.body = stream_1.Readable.from(this.getMultipartRequest(opts.multipart, boundary)); + } else if (shouldDirectlyPassData) { + opts.body = opts.data; + } else if (typeof opts.data === "object") { + if (preparedHeaders.get("Content-Type") === "application/x-www-form-urlencoded") { + opts.body = opts.paramsSerializer ? opts.paramsSerializer(opts.data) : new URLSearchParams(opts.data); + } else { + if (!preparedHeaders.has("content-type")) { + preparedHeaders.set("content-type", "application/json"); + } + opts.body = JSON.stringify(opts.data); + } + } else if (opts.data) { + opts.body = opts.data; + } + opts.validateStatus = opts.validateStatus || this.validateStatus; + opts.responseType = opts.responseType || "unknown"; + if (!preparedHeaders.has("accept") && opts.responseType === "json") { + preparedHeaders.set("accept", "application/json"); + } + const proxy = opts.proxy || process?.env?.HTTPS_PROXY || process?.env?.https_proxy || process?.env?.HTTP_PROXY || process?.env?.http_proxy; + if (opts.agent) { + } else if (proxy && this.#urlMayUseProxy(opts.url, opts.noProxy)) { + const HttpsProxyAgent = await _a3.#getProxyAgent(); + if (this.agentCache.has(proxy)) { + opts.agent = this.agentCache.get(proxy); + } else { + opts.agent = new HttpsProxyAgent(proxy, { + cert: opts.cert, + key: opts.key + }); + this.agentCache.set(proxy, opts.agent); + } + } else if (opts.cert && opts.key) { + if (this.agentCache.has(opts.key)) { + opts.agent = this.agentCache.get(opts.key); + } else { + opts.agent = new https_1.Agent({ + cert: opts.cert, + key: opts.key + }); + this.agentCache.set(opts.key, opts.agent); + } + } + if (typeof opts.errorRedactor !== "function" && opts.errorRedactor !== false) { + opts.errorRedactor = common_js_1.defaultErrorRedactor; + } + if (opts.body && !("duplex" in opts)) { + opts.duplex = "half"; + } + this.#appendTimeoutToSignal(opts); + return Object.assign(opts, { + headers: preparedHeaders, + url: opts.url instanceof URL ? opts.url : new URL(opts.url) + }); + } + #appendTimeoutToSignal(opts) { + if (opts.timeout) { + const timeoutSignal = AbortSignal.timeout(opts.timeout); + if (opts.signal && !opts.signal.aborted) { + opts.signal = AbortSignal.any([opts.signal, timeoutSignal]); + } else { + opts.signal = timeoutSignal; + } + } + } + /** + * By default, throw for any non-2xx status code + * @param status status code from the HTTP response + */ + validateStatus(status) { + return status >= 200 && status < 300; + } + /** + * Attempts to parse a response by looking at the Content-Type header. + * @param {Response} response the HTTP response. + * @returns a promise that resolves to the response data. + */ + async getResponseDataFromContentType(response) { + let contentType = response.headers.get("Content-Type"); + if (contentType === null) { + return response.text(); + } + contentType = contentType.toLowerCase(); + if (contentType.includes("application/json")) { + let data = await response.text(); + try { + data = JSON.parse(data); + } catch { + } + return data; + } else if (contentType.match(/^text\//)) { + return response.text(); + } else { + return response.blob(); + } + } + /** + * Creates an async generator that yields the pieces of a multipart/related request body. + * This implementation follows the spec: https://www.ietf.org/rfc/rfc2387.txt. However, recursive + * multipart/related requests are not currently supported. + * + * @param {GaxiosMultipartOptions[]} multipartOptions the pieces to turn into a multipart/related body. + * @param {string} boundary the boundary string to be placed between each part. + */ + async *getMultipartRequest(multipartOptions, boundary) { + const finale = `--${boundary}--`; + for (const currentPart of multipartOptions) { + const partContentType = currentPart.headers.get("Content-Type") || "application/octet-stream"; + const preamble = `--${boundary}\r +Content-Type: ${partContentType}\r +\r +`; + yield preamble; + if (typeof currentPart.content === "string") { + yield currentPart.content; + } else { + yield* currentPart.content; + } + yield "\r\n"; + } + yield finale; + } + /** + * A cache for the lazily-loaded proxy agent. + * + * Should use {@link Gaxios[#getProxyAgent]} to retrieve. + */ + // using `import` to dynamically import the types here + static #proxyAgent; + /** + * A cache for the lazily-loaded fetch library. + * + * Should use {@link Gaxios[#getFetch]} to retrieve. + */ + // + static #fetch; + /** + * Imports, caches, and returns a proxy agent - if not already imported + * + * @returns A proxy agent + */ + static async #getProxyAgent() { + this.#proxyAgent ||= (await Promise.resolve().then(() => __toESM(require_dist2()))).HttpsProxyAgent; + return this.#proxyAgent; + } + static async #getFetch() { + const hasWindow = typeof window !== "undefined" && !!window; + this.#fetch ||= hasWindow ? window.fetch : (await Promise.resolve().then(() => (init_src(), src_exports))).default; + return this.#fetch; + } + /** + * Merges headers. + * If the base headers do not exist a new `Headers` object will be returned. + * + * @remarks + * + * Using this utility can be helpful when the headers are not known to exist: + * - if they exist as `Headers`, that instance will be used + * - it improves performance and allows users to use their existing references to their `Headers` + * - if they exist in another form (`HeadersInit`), they will be used to create a new `Headers` object + * - if the base headers do not exist a new `Headers` object will be created + * + * @param base headers to append/overwrite to + * @param append headers to append/overwrite with + * @returns the base headers instance with merged `Headers` + */ + static mergeHeaders(base, ...append) { + base = base instanceof Headers ? base : new Headers(base); + for (const headers of append) { + const add = headers instanceof Headers ? headers : new Headers(headers); + add.forEach((value, key) => { + key === "set-cookie" ? base.append(key, value) : base.set(key, value); + }); + } + return base; + } + }; + exports.Gaxios = Gaxios; + _a3 = Gaxios; + } +}); + +// +var require_src2 = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; + }); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p in m2) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m2, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.instance = exports.Gaxios = exports.GaxiosError = void 0; + exports.request = request2; + var gaxios_js_1 = require_gaxios(); + Object.defineProperty(exports, "Gaxios", { enumerable: true, get: function() { + return gaxios_js_1.Gaxios; + } }); + var common_js_1 = require_common(); + Object.defineProperty(exports, "GaxiosError", { enumerable: true, get: function() { + return common_js_1.GaxiosError; + } }); + __exportStar(require_interceptor(), exports); + exports.instance = new gaxios_js_1.Gaxios(); + async function request2(opts) { + return exports.instance.request(opts); + } + } +}); + +// +var require_bignumber = __commonJS({ + ""(exports, module) { + (function(globalObject) { + "use strict"; + var BigNumber, isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, mathceil = Math.ceil, mathfloor = Math.floor, bignumberError = "[BigNumber Error] ", tooManyDigits = bignumberError + "Number primitive has more than 15 significant digits: ", BASE = 1e14, LOG_BASE = 14, MAX_SAFE_INTEGER = 9007199254740991, POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], SQRT_BASE = 1e7, MAX = 1e9; + function clone2(configObject) { + var div, convertBase, parseNumeric, P = BigNumber2.prototype = { constructor: BigNumber2, toString: null, valueOf: null }, ONE = new BigNumber2(1), DECIMAL_PLACES = 20, ROUNDING_MODE = 4, TO_EXP_NEG = -7, TO_EXP_POS = 21, MIN_EXP = -1e7, MAX_EXP = 1e7, CRYPTO = false, MODULO_MODE = 1, POW_PRECISION = 0, FORMAT = { + prefix: "", + groupSize: 3, + secondaryGroupSize: 0, + groupSeparator: ",", + decimalSeparator: ".", + fractionGroupSize: 0, + fractionGroupSeparator: "\xA0", + // non-breaking space + suffix: "" + }, ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz", alphabetHasNormalDecimalDigits = true; + function BigNumber2(v, b) { + var alphabet, c, caseChanged, e2, i2, isNum, len, str, x2 = this; + if (!(x2 instanceof BigNumber2)) + return new BigNumber2(v, b); + if (b == null) { + if (v && v._isBigNumber === true) { + x2.s = v.s; + if (!v.c || v.e > MAX_EXP) { + x2.c = x2.e = null; + } else if (v.e < MIN_EXP) { + x2.c = [x2.e = 0]; + } else { + x2.e = v.e; + x2.c = v.c.slice(); + } + return; + } + if ((isNum = typeof v == "number") && v * 0 == 0) { + x2.s = 1 / v < 0 ? (v = -v, -1) : 1; + if (v === ~~v) { + for (e2 = 0, i2 = v; i2 >= 10; i2 /= 10, e2++) + ; + if (e2 > MAX_EXP) { + x2.c = x2.e = null; + } else { + x2.e = e2; + x2.c = [v]; + } + return; + } + str = String(v); + } else { + if (!isNumeric.test(str = String(v))) + return parseNumeric(x2, str, isNum); + x2.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1; + } + if ((e2 = str.indexOf(".")) > -1) + str = str.replace(".", ""); + if ((i2 = str.search(/e/i)) > 0) { + if (e2 < 0) + e2 = i2; + e2 += +str.slice(i2 + 1); + str = str.substring(0, i2); + } else if (e2 < 0) { + e2 = str.length; + } + } else { + intCheck(b, 2, ALPHABET.length, "Base"); + if (b == 10 && alphabetHasNormalDecimalDigits) { + x2 = new BigNumber2(v); + return round(x2, DECIMAL_PLACES + x2.e + 1, ROUNDING_MODE); + } + str = String(v); + if (isNum = typeof v == "number") { + if (v * 0 != 0) + return parseNumeric(x2, str, isNum, b); + x2.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1; + if (BigNumber2.DEBUG && str.replace(/^0\.0*|\./, "").length > 15) { + throw Error(tooManyDigits + v); + } + } else { + x2.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1; + } + alphabet = ALPHABET.slice(0, b); + e2 = i2 = 0; + for (len = str.length; i2 < len; i2++) { + if (alphabet.indexOf(c = str.charAt(i2)) < 0) { + if (c == ".") { + if (i2 > e2) { + e2 = len; + continue; + } + } else if (!caseChanged) { + if (str == str.toUpperCase() && (str = str.toLowerCase()) || str == str.toLowerCase() && (str = str.toUpperCase())) { + caseChanged = true; + i2 = -1; + e2 = 0; + continue; + } + } + return parseNumeric(x2, String(v), isNum, b); + } + } + isNum = false; + str = convertBase(str, b, 10, x2.s); + if ((e2 = str.indexOf(".")) > -1) + str = str.replace(".", ""); + else + e2 = str.length; + } + for (i2 = 0; str.charCodeAt(i2) === 48; i2++) + ; + for (len = str.length; str.charCodeAt(--len) === 48; ) + ; + if (str = str.slice(i2, ++len)) { + len -= i2; + if (isNum && BigNumber2.DEBUG && len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) { + throw Error(tooManyDigits + x2.s * v); + } + if ((e2 = e2 - i2 - 1) > MAX_EXP) { + x2.c = x2.e = null; + } else if (e2 < MIN_EXP) { + x2.c = [x2.e = 0]; + } else { + x2.e = e2; + x2.c = []; + i2 = (e2 + 1) % LOG_BASE; + if (e2 < 0) + i2 += LOG_BASE; + if (i2 < len) { + if (i2) + x2.c.push(+str.slice(0, i2)); + for (len -= LOG_BASE; i2 < len; ) { + x2.c.push(+str.slice(i2, i2 += LOG_BASE)); + } + i2 = LOG_BASE - (str = str.slice(i2)).length; + } else { + i2 -= len; + } + for (; i2--; str += "0") + ; + x2.c.push(+str); + } + } else { + x2.c = [x2.e = 0]; + } + } + BigNumber2.clone = clone2; + BigNumber2.ROUND_UP = 0; + BigNumber2.ROUND_DOWN = 1; + BigNumber2.ROUND_CEIL = 2; + BigNumber2.ROUND_FLOOR = 3; + BigNumber2.ROUND_HALF_UP = 4; + BigNumber2.ROUND_HALF_DOWN = 5; + BigNumber2.ROUND_HALF_EVEN = 6; + BigNumber2.ROUND_HALF_CEIL = 7; + BigNumber2.ROUND_HALF_FLOOR = 8; + BigNumber2.EUCLID = 9; + BigNumber2.config = BigNumber2.set = function(obj) { + var p, v; + if (obj != null) { + if (typeof obj == "object") { + if (obj.hasOwnProperty(p = "DECIMAL_PLACES")) { + v = obj[p]; + intCheck(v, 0, MAX, p); + DECIMAL_PLACES = v; + } + if (obj.hasOwnProperty(p = "ROUNDING_MODE")) { + v = obj[p]; + intCheck(v, 0, 8, p); + ROUNDING_MODE = v; + } + if (obj.hasOwnProperty(p = "EXPONENTIAL_AT")) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, 0, p); + intCheck(v[1], 0, MAX, p); + TO_EXP_NEG = v[0]; + TO_EXP_POS = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v); + } + } + if (obj.hasOwnProperty(p = "RANGE")) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, -1, p); + intCheck(v[1], 1, MAX, p); + MIN_EXP = v[0]; + MAX_EXP = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + if (v) { + MIN_EXP = -(MAX_EXP = v < 0 ? -v : v); + } else { + throw Error(bignumberError + p + " cannot be zero: " + v); + } + } + } + if (obj.hasOwnProperty(p = "CRYPTO")) { + v = obj[p]; + if (v === !!v) { + if (v) { + if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) { + CRYPTO = v; + } else { + CRYPTO = !v; + throw Error(bignumberError + "crypto unavailable"); + } + } else { + CRYPTO = v; + } + } else { + throw Error(bignumberError + p + " not true or false: " + v); + } + } + if (obj.hasOwnProperty(p = "MODULO_MODE")) { + v = obj[p]; + intCheck(v, 0, 9, p); + MODULO_MODE = v; + } + if (obj.hasOwnProperty(p = "POW_PRECISION")) { + v = obj[p]; + intCheck(v, 0, MAX, p); + POW_PRECISION = v; + } + if (obj.hasOwnProperty(p = "FORMAT")) { + v = obj[p]; + if (typeof v == "object") + FORMAT = v; + else + throw Error(bignumberError + p + " not an object: " + v); + } + if (obj.hasOwnProperty(p = "ALPHABET")) { + v = obj[p]; + if (typeof v == "string" && !/^.?$|[+\-.\s]|(.).*\1/.test(v)) { + alphabetHasNormalDecimalDigits = v.slice(0, 10) == "0123456789"; + ALPHABET = v; + } else { + throw Error(bignumberError + p + " invalid: " + v); + } + } + } else { + throw Error(bignumberError + "Object expected: " + obj); + } + } + return { + DECIMAL_PLACES, + ROUNDING_MODE, + EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS], + RANGE: [MIN_EXP, MAX_EXP], + CRYPTO, + MODULO_MODE, + POW_PRECISION, + FORMAT, + ALPHABET + }; + }; + BigNumber2.isBigNumber = function(v) { + if (!v || v._isBigNumber !== true) + return false; + if (!BigNumber2.DEBUG) + return true; + var i2, n, c = v.c, e2 = v.e, s2 = v.s; + out: + if ({}.toString.call(c) == "[object Array]") { + if ((s2 === 1 || s2 === -1) && e2 >= -MAX && e2 <= MAX && e2 === mathfloor(e2)) { + if (c[0] === 0) { + if (e2 === 0 && c.length === 1) + return true; + break out; + } + i2 = (e2 + 1) % LOG_BASE; + if (i2 < 1) + i2 += LOG_BASE; + if (String(c[0]).length == i2) { + for (i2 = 0; i2 < c.length; i2++) { + n = c[i2]; + if (n < 0 || n >= BASE || n !== mathfloor(n)) + break out; + } + if (n !== 0) + return true; + } + } + } else if (c === null && e2 === null && (s2 === null || s2 === 1 || s2 === -1)) { + return true; + } + throw Error(bignumberError + "Invalid BigNumber: " + v); + }; + BigNumber2.maximum = BigNumber2.max = function() { + return maxOrMin(arguments, -1); + }; + BigNumber2.minimum = BigNumber2.min = function() { + return maxOrMin(arguments, 1); + }; + BigNumber2.random = function() { + var pow2_53 = 9007199254740992; + var random53bitInt = Math.random() * pow2_53 & 2097151 ? function() { + return mathfloor(Math.random() * pow2_53); + } : function() { + return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0); + }; + return function(dp) { + var a, b, e2, k, v, i2 = 0, c = [], rand = new BigNumber2(ONE); + if (dp == null) + dp = DECIMAL_PLACES; + else + intCheck(dp, 0, MAX); + k = mathceil(dp / LOG_BASE); + if (CRYPTO) { + if (crypto.getRandomValues) { + a = crypto.getRandomValues(new Uint32Array(k *= 2)); + for (; i2 < k; ) { + v = a[i2] * 131072 + (a[i2 + 1] >>> 11); + if (v >= 9e15) { + b = crypto.getRandomValues(new Uint32Array(2)); + a[i2] = b[0]; + a[i2 + 1] = b[1]; + } else { + c.push(v % 1e14); + i2 += 2; + } + } + i2 = k / 2; + } else if (crypto.randomBytes) { + a = crypto.randomBytes(k *= 7); + for (; i2 < k; ) { + v = (a[i2] & 31) * 281474976710656 + a[i2 + 1] * 1099511627776 + a[i2 + 2] * 4294967296 + a[i2 + 3] * 16777216 + (a[i2 + 4] << 16) + (a[i2 + 5] << 8) + a[i2 + 6]; + if (v >= 9e15) { + crypto.randomBytes(7).copy(a, i2); + } else { + c.push(v % 1e14); + i2 += 7; + } + } + i2 = k / 7; + } else { + CRYPTO = false; + throw Error(bignumberError + "crypto unavailable"); + } + } + if (!CRYPTO) { + for (; i2 < k; ) { + v = random53bitInt(); + if (v < 9e15) + c[i2++] = v % 1e14; + } + } + k = c[--i2]; + dp %= LOG_BASE; + if (k && dp) { + v = POWS_TEN[LOG_BASE - dp]; + c[i2] = mathfloor(k / v) * v; + } + for (; c[i2] === 0; c.pop(), i2--) + ; + if (i2 < 0) { + c = [e2 = 0]; + } else { + for (e2 = -1; c[0] === 0; c.splice(0, 1), e2 -= LOG_BASE) + ; + for (i2 = 1, v = c[0]; v >= 10; v /= 10, i2++) + ; + if (i2 < LOG_BASE) + e2 -= LOG_BASE - i2; + } + rand.e = e2; + rand.c = c; + return rand; + }; + }(); + BigNumber2.sum = function() { + var i2 = 1, args = arguments, sum = new BigNumber2(args[0]); + for (; i2 < args.length; ) + sum = sum.plus(args[i2++]); + return sum; + }; + convertBase = /* @__PURE__ */ function() { + var decimal = "0123456789"; + function toBaseOut(str, baseIn, baseOut, alphabet) { + var j, arr = [0], arrL, i2 = 0, len = str.length; + for (; i2 < len; ) { + for (arrL = arr.length; arrL--; arr[arrL] *= baseIn) + ; + arr[0] += alphabet.indexOf(str.charAt(i2++)); + for (j = 0; j < arr.length; j++) { + if (arr[j] > baseOut - 1) { + if (arr[j + 1] == null) + arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + return arr.reverse(); + } + return function(str, baseIn, baseOut, sign, callerIsToString) { + var alphabet, d, e2, k, r2, x2, xc, y, i2 = str.indexOf("."), dp = DECIMAL_PLACES, rm2 = ROUNDING_MODE; + if (i2 >= 0) { + k = POW_PRECISION; + POW_PRECISION = 0; + str = str.replace(".", ""); + y = new BigNumber2(baseIn); + x2 = y.pow(str.length - i2); + POW_PRECISION = k; + y.c = toBaseOut( + toFixedPoint(coeffToString(x2.c), x2.e, "0"), + 10, + baseOut, + decimal + ); + y.e = y.c.length; + } + xc = toBaseOut(str, baseIn, baseOut, callerIsToString ? (alphabet = ALPHABET, decimal) : (alphabet = decimal, ALPHABET)); + e2 = k = xc.length; + for (; xc[--k] == 0; xc.pop()) + ; + if (!xc[0]) + return alphabet.charAt(0); + if (i2 < 0) { + --e2; + } else { + x2.c = xc; + x2.e = e2; + x2.s = sign; + x2 = div(x2, y, dp, rm2, baseOut); + xc = x2.c; + r2 = x2.r; + e2 = x2.e; + } + d = e2 + dp + 1; + i2 = xc[d]; + k = baseOut / 2; + r2 = r2 || d < 0 || xc[d + 1] != null; + r2 = rm2 < 4 ? (i2 != null || r2) && (rm2 == 0 || rm2 == (x2.s < 0 ? 3 : 2)) : i2 > k || i2 == k && (rm2 == 4 || r2 || rm2 == 6 && xc[d - 1] & 1 || rm2 == (x2.s < 0 ? 8 : 7)); + if (d < 1 || !xc[0]) { + str = r2 ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0); + } else { + xc.length = d; + if (r2) { + for (--baseOut; ++xc[--d] > baseOut; ) { + xc[d] = 0; + if (!d) { + ++e2; + xc = [1].concat(xc); + } + } + } + for (k = xc.length; !xc[--k]; ) + ; + for (i2 = 0, str = ""; i2 <= k; str += alphabet.charAt(xc[i2++])) + ; + str = toFixedPoint(str, e2, alphabet.charAt(0)); + } + return str; + }; + }(); + div = /* @__PURE__ */ function() { + function multiply(x2, k, base) { + var m2, temp, xlo, xhi, carry = 0, i2 = x2.length, klo = k % SQRT_BASE, khi = k / SQRT_BASE | 0; + for (x2 = x2.slice(); i2--; ) { + xlo = x2[i2] % SQRT_BASE; + xhi = x2[i2] / SQRT_BASE | 0; + m2 = khi * xlo + xhi * klo; + temp = klo * xlo + m2 % SQRT_BASE * SQRT_BASE + carry; + carry = (temp / base | 0) + (m2 / SQRT_BASE | 0) + khi * xhi; + x2[i2] = temp % base; + } + if (carry) + x2 = [carry].concat(x2); + return x2; + } + function compare2(a, b, aL, bL) { + var i2, cmp; + if (aL != bL) { + cmp = aL > bL ? 1 : -1; + } else { + for (i2 = cmp = 0; i2 < aL; i2++) { + if (a[i2] != b[i2]) { + cmp = a[i2] > b[i2] ? 1 : -1; + break; + } + } + } + return cmp; + } + function subtract(a, b, aL, base) { + var i2 = 0; + for (; aL--; ) { + a[aL] -= i2; + i2 = a[aL] < b[aL] ? 1 : 0; + a[aL] = i2 * base + a[aL] - b[aL]; + } + for (; !a[0] && a.length > 1; a.splice(0, 1)) + ; + } + return function(x2, y, dp, rm2, base) { + var cmp, e2, i2, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, yL, yz, s2 = x2.s == y.s ? 1 : -1, xc = x2.c, yc = y.c; + if (!xc || !xc[0] || !yc || !yc[0]) { + return new BigNumber2( + // Return NaN if either NaN, or both Infinity or 0. + !x2.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : ( + // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. + xc && xc[0] == 0 || !yc ? s2 * 0 : s2 / 0 + ) + ); + } + q = new BigNumber2(s2); + qc = q.c = []; + e2 = x2.e - y.e; + s2 = dp + e2 + 1; + if (!base) { + base = BASE; + e2 = bitFloor(x2.e / LOG_BASE) - bitFloor(y.e / LOG_BASE); + s2 = s2 / LOG_BASE | 0; + } + for (i2 = 0; yc[i2] == (xc[i2] || 0); i2++) + ; + if (yc[i2] > (xc[i2] || 0)) + e2--; + if (s2 < 0) { + qc.push(1); + more = true; + } else { + xL = xc.length; + yL = yc.length; + i2 = 0; + s2 += 2; + n = mathfloor(base / (yc[0] + 1)); + if (n > 1) { + yc = multiply(yc, n, base); + xc = multiply(xc, n, base); + yL = yc.length; + xL = xc.length; + } + xi = yL; + rem = xc.slice(0, yL); + remL = rem.length; + for (; remL < yL; rem[remL++] = 0) + ; + yz = yc.slice(); + yz = [0].concat(yz); + yc0 = yc[0]; + if (yc[1] >= base / 2) + yc0++; + do { + n = 0; + cmp = compare2(yc, rem, yL, remL); + if (cmp < 0) { + rem0 = rem[0]; + if (yL != remL) + rem0 = rem0 * base + (rem[1] || 0); + n = mathfloor(rem0 / yc0); + if (n > 1) { + if (n >= base) + n = base - 1; + prod = multiply(yc, n, base); + prodL = prod.length; + remL = rem.length; + while (compare2(prod, rem, prodL, remL) == 1) { + n--; + subtract(prod, yL < prodL ? yz : yc, prodL, base); + prodL = prod.length; + cmp = 1; + } + } else { + if (n == 0) { + cmp = n = 1; + } + prod = yc.slice(); + prodL = prod.length; + } + if (prodL < remL) + prod = [0].concat(prod); + subtract(rem, prod, remL, base); + remL = rem.length; + if (cmp == -1) { + while (compare2(yc, rem, yL, remL) < 1) { + n++; + subtract(rem, yL < remL ? yz : yc, remL, base); + remL = rem.length; + } + } + } else if (cmp === 0) { + n++; + rem = [0]; + } + qc[i2++] = n; + if (rem[0]) { + rem[remL++] = xc[xi] || 0; + } else { + rem = [xc[xi]]; + remL = 1; + } + } while ((xi++ < xL || rem[0] != null) && s2--); + more = rem[0] != null; + if (!qc[0]) + qc.splice(0, 1); + } + if (base == BASE) { + for (i2 = 1, s2 = qc[0]; s2 >= 10; s2 /= 10, i2++) + ; + round(q, dp + (q.e = i2 + e2 * LOG_BASE - 1) + 1, rm2, more); + } else { + q.e = e2; + q.r = +more; + } + return q; + }; + }(); + function format(n, i2, rm2, id) { + var c0, e2, ne, len, str; + if (rm2 == null) + rm2 = ROUNDING_MODE; + else + intCheck(rm2, 0, 8); + if (!n.c) + return n.toString(); + c0 = n.c[0]; + ne = n.e; + if (i2 == null) { + str = coeffToString(n.c); + str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) ? toExponential(str, ne) : toFixedPoint(str, ne, "0"); + } else { + n = round(new BigNumber2(n), i2, rm2); + e2 = n.e; + str = coeffToString(n.c); + len = str.length; + if (id == 1 || id == 2 && (i2 <= e2 || e2 <= TO_EXP_NEG)) { + for (; len < i2; str += "0", len++) + ; + str = toExponential(str, e2); + } else { + i2 -= ne + (id === 2 && e2 > ne); + str = toFixedPoint(str, e2, "0"); + if (e2 + 1 > len) { + if (--i2 > 0) + for (str += "."; i2--; str += "0") + ; + } else { + i2 += e2 - len; + if (i2 > 0) { + if (e2 + 1 == len) + str += "."; + for (; i2--; str += "0") + ; + } + } + } + } + return n.s < 0 && c0 ? "-" + str : str; + } + function maxOrMin(args, n) { + var k, y, i2 = 1, x2 = new BigNumber2(args[0]); + for (; i2 < args.length; i2++) { + y = new BigNumber2(args[i2]); + if (!y.s || (k = compare(x2, y)) === n || k === 0 && x2.s === n) { + x2 = y; + } + } + return x2; + } + function normalise(n, c, e2) { + var i2 = 1, j = c.length; + for (; !c[--j]; c.pop()) + ; + for (j = c[0]; j >= 10; j /= 10, i2++) + ; + if ((e2 = i2 + e2 * LOG_BASE - 1) > MAX_EXP) { + n.c = n.e = null; + } else if (e2 < MIN_EXP) { + n.c = [n.e = 0]; + } else { + n.e = e2; + n.c = c; + } + return n; + } + parseNumeric = /* @__PURE__ */ function() { + var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, dotAfter = /^([^.]+)\.$/, dotBefore = /^\.([^.]+)$/, isInfinityOrNaN = /^-?(Infinity|NaN)$/, whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; + return function(x2, str, isNum, b) { + var base, s2 = isNum ? str : str.replace(whitespaceOrPlus, ""); + if (isInfinityOrNaN.test(s2)) { + x2.s = isNaN(s2) ? null : s2 < 0 ? -1 : 1; + } else { + if (!isNum) { + s2 = s2.replace(basePrefix, function(m2, p1, p2) { + base = (p2 = p2.toLowerCase()) == "x" ? 16 : p2 == "b" ? 2 : 8; + return !b || b == base ? p1 : m2; + }); + if (b) { + base = b; + s2 = s2.replace(dotAfter, "$1").replace(dotBefore, "0.$1"); + } + if (str != s2) + return new BigNumber2(s2, base); + } + if (BigNumber2.DEBUG) { + throw Error(bignumberError + "Not a" + (b ? " base " + b : "") + " number: " + str); + } + x2.s = null; + } + x2.c = x2.e = null; + }; + }(); + function round(x2, sd, rm2, r2) { + var d, i2, j, k, n, ni, rd, xc = x2.c, pows10 = POWS_TEN; + if (xc) { + out: { + for (d = 1, k = xc[0]; k >= 10; k /= 10, d++) + ; + i2 = sd - d; + if (i2 < 0) { + i2 += LOG_BASE; + j = sd; + n = xc[ni = 0]; + rd = mathfloor(n / pows10[d - j - 1] % 10); + } else { + ni = mathceil((i2 + 1) / LOG_BASE); + if (ni >= xc.length) { + if (r2) { + for (; xc.length <= ni; xc.push(0)) + ; + n = rd = 0; + d = 1; + i2 %= LOG_BASE; + j = i2 - LOG_BASE + 1; + } else { + break out; + } + } else { + n = k = xc[ni]; + for (d = 1; k >= 10; k /= 10, d++) + ; + i2 %= LOG_BASE; + j = i2 - LOG_BASE + d; + rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10); + } + } + r2 = r2 || sd < 0 || // Are there any non-zero digits after the rounding digit? + // The expression n % pows10[d - j - 1] returns all digits of n to the right + // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. + xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]); + r2 = rm2 < 4 ? (rd || r2) && (rm2 == 0 || rm2 == (x2.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm2 == 4 || r2 || rm2 == 6 && // Check whether the digit to the left of the rounding digit is odd. + (i2 > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10 & 1 || rm2 == (x2.s < 0 ? 8 : 7)); + if (sd < 1 || !xc[0]) { + xc.length = 0; + if (r2) { + sd -= x2.e + 1; + xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE]; + x2.e = -sd || 0; + } else { + xc[0] = x2.e = 0; + } + return x2; + } + if (i2 == 0) { + xc.length = ni; + k = 1; + ni--; + } else { + xc.length = ni + 1; + k = pows10[LOG_BASE - i2]; + xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0; + } + if (r2) { + for (; ; ) { + if (ni == 0) { + for (i2 = 1, j = xc[0]; j >= 10; j /= 10, i2++) + ; + j = xc[0] += k; + for (k = 1; j >= 10; j /= 10, k++) + ; + if (i2 != k) { + x2.e++; + if (xc[0] == BASE) + xc[0] = 1; + } + break; + } else { + xc[ni] += k; + if (xc[ni] != BASE) + break; + xc[ni--] = 0; + k = 1; + } + } + } + for (i2 = xc.length; xc[--i2] === 0; xc.pop()) + ; + } + if (x2.e > MAX_EXP) { + x2.c = x2.e = null; + } else if (x2.e < MIN_EXP) { + x2.c = [x2.e = 0]; + } + } + return x2; + } + function valueOf(n) { + var str, e2 = n.e; + if (e2 === null) + return n.toString(); + str = coeffToString(n.c); + str = e2 <= TO_EXP_NEG || e2 >= TO_EXP_POS ? toExponential(str, e2) : toFixedPoint(str, e2, "0"); + return n.s < 0 ? "-" + str : str; + } + P.absoluteValue = P.abs = function() { + var x2 = new BigNumber2(this); + if (x2.s < 0) + x2.s = 1; + return x2; + }; + P.comparedTo = function(y, b) { + return compare(this, new BigNumber2(y, b)); + }; + P.decimalPlaces = P.dp = function(dp, rm2) { + var c, n, v, x2 = this; + if (dp != null) { + intCheck(dp, 0, MAX); + if (rm2 == null) + rm2 = ROUNDING_MODE; + else + intCheck(rm2, 0, 8); + return round(new BigNumber2(x2), dp + x2.e + 1, rm2); + } + if (!(c = x2.c)) + return null; + n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE; + if (v = c[v]) + for (; v % 10 == 0; v /= 10, n--) + ; + if (n < 0) + n = 0; + return n; + }; + P.dividedBy = P.div = function(y, b) { + return div(this, new BigNumber2(y, b), DECIMAL_PLACES, ROUNDING_MODE); + }; + P.dividedToIntegerBy = P.idiv = function(y, b) { + return div(this, new BigNumber2(y, b), 0, 1); + }; + P.exponentiatedBy = P.pow = function(n, m2) { + var half, isModExp, i2, k, more, nIsBig, nIsNeg, nIsOdd, y, x2 = this; + n = new BigNumber2(n); + if (n.c && !n.isInteger()) { + throw Error(bignumberError + "Exponent not an integer: " + valueOf(n)); + } + if (m2 != null) + m2 = new BigNumber2(m2); + nIsBig = n.e > 14; + if (!x2.c || !x2.c[0] || x2.c[0] == 1 && !x2.e && x2.c.length == 1 || !n.c || !n.c[0]) { + y = new BigNumber2(Math.pow(+valueOf(x2), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n))); + return m2 ? y.mod(m2) : y; + } + nIsNeg = n.s < 0; + if (m2) { + if (m2.c ? !m2.c[0] : !m2.s) + return new BigNumber2(NaN); + isModExp = !nIsNeg && x2.isInteger() && m2.isInteger(); + if (isModExp) + x2 = x2.mod(m2); + } else if (n.e > 9 && (x2.e > 0 || x2.e < -1 || (x2.e == 0 ? x2.c[0] > 1 || nIsBig && x2.c[1] >= 24e7 : x2.c[0] < 8e13 || nIsBig && x2.c[0] <= 9999975e7))) { + k = x2.s < 0 && isOdd(n) ? -0 : 0; + if (x2.e > -1) + k = 1 / k; + return new BigNumber2(nIsNeg ? 1 / k : k); + } else if (POW_PRECISION) { + k = mathceil(POW_PRECISION / LOG_BASE + 2); + } + if (nIsBig) { + half = new BigNumber2(0.5); + if (nIsNeg) + n.s = 1; + nIsOdd = isOdd(n); + } else { + i2 = Math.abs(+valueOf(n)); + nIsOdd = i2 % 2; + } + y = new BigNumber2(ONE); + for (; ; ) { + if (nIsOdd) { + y = y.times(x2); + if (!y.c) + break; + if (k) { + if (y.c.length > k) + y.c.length = k; + } else if (isModExp) { + y = y.mod(m2); + } + } + if (i2) { + i2 = mathfloor(i2 / 2); + if (i2 === 0) + break; + nIsOdd = i2 % 2; + } else { + n = n.times(half); + round(n, n.e + 1, 1); + if (n.e > 14) { + nIsOdd = isOdd(n); + } else { + i2 = +valueOf(n); + if (i2 === 0) + break; + nIsOdd = i2 % 2; + } + } + x2 = x2.times(x2); + if (k) { + if (x2.c && x2.c.length > k) + x2.c.length = k; + } else if (isModExp) { + x2 = x2.mod(m2); + } + } + if (isModExp) + return y; + if (nIsNeg) + y = ONE.div(y); + return m2 ? y.mod(m2) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y; + }; + P.integerValue = function(rm2) { + var n = new BigNumber2(this); + if (rm2 == null) + rm2 = ROUNDING_MODE; + else + intCheck(rm2, 0, 8); + return round(n, n.e + 1, rm2); + }; + P.isEqualTo = P.eq = function(y, b) { + return compare(this, new BigNumber2(y, b)) === 0; + }; + P.isFinite = function() { + return !!this.c; + }; + P.isGreaterThan = P.gt = function(y, b) { + return compare(this, new BigNumber2(y, b)) > 0; + }; + P.isGreaterThanOrEqualTo = P.gte = function(y, b) { + return (b = compare(this, new BigNumber2(y, b))) === 1 || b === 0; + }; + P.isInteger = function() { + return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2; + }; + P.isLessThan = P.lt = function(y, b) { + return compare(this, new BigNumber2(y, b)) < 0; + }; + P.isLessThanOrEqualTo = P.lte = function(y, b) { + return (b = compare(this, new BigNumber2(y, b))) === -1 || b === 0; + }; + P.isNaN = function() { + return !this.s; + }; + P.isNegative = function() { + return this.s < 0; + }; + P.isPositive = function() { + return this.s > 0; + }; + P.isZero = function() { + return !!this.c && this.c[0] == 0; + }; + P.minus = function(y, b) { + var i2, j, t2, xLTy, x2 = this, a = x2.s; + y = new BigNumber2(y, b); + b = y.s; + if (!a || !b) + return new BigNumber2(NaN); + if (a != b) { + y.s = -b; + return x2.plus(y); + } + var xe = x2.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x2.c, yc = y.c; + if (!xe || !ye) { + if (!xc || !yc) + return xc ? (y.s = -b, y) : new BigNumber2(yc ? x2 : NaN); + if (!xc[0] || !yc[0]) { + return yc[0] ? (y.s = -b, y) : new BigNumber2(xc[0] ? x2 : ( + // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity + ROUNDING_MODE == 3 ? -0 : 0 + )); + } + } + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + if (a = xe - ye) { + if (xLTy = a < 0) { + a = -a; + t2 = xc; + } else { + ye = xe; + t2 = yc; + } + t2.reverse(); + for (b = a; b--; t2.push(0)) + ; + t2.reverse(); + } else { + j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b; + for (a = b = 0; b < j; b++) { + if (xc[b] != yc[b]) { + xLTy = xc[b] < yc[b]; + break; + } + } + } + if (xLTy) { + t2 = xc; + xc = yc; + yc = t2; + y.s = -y.s; + } + b = (j = yc.length) - (i2 = xc.length); + if (b > 0) + for (; b--; xc[i2++] = 0) + ; + b = BASE - 1; + for (; j > a; ) { + if (xc[--j] < yc[j]) { + for (i2 = j; i2 && !xc[--i2]; xc[i2] = b) + ; + --xc[i2]; + xc[j] += BASE; + } + xc[j] -= yc[j]; + } + for (; xc[0] == 0; xc.splice(0, 1), --ye) + ; + if (!xc[0]) { + y.s = ROUNDING_MODE == 3 ? -1 : 1; + y.c = [y.e = 0]; + return y; + } + return normalise(y, xc, ye); + }; + P.modulo = P.mod = function(y, b) { + var q, s2, x2 = this; + y = new BigNumber2(y, b); + if (!x2.c || !y.s || y.c && !y.c[0]) { + return new BigNumber2(NaN); + } else if (!y.c || x2.c && !x2.c[0]) { + return new BigNumber2(x2); + } + if (MODULO_MODE == 9) { + s2 = y.s; + y.s = 1; + q = div(x2, y, 0, 3); + y.s = s2; + q.s *= s2; + } else { + q = div(x2, y, 0, MODULO_MODE); + } + y = x2.minus(q.times(y)); + if (!y.c[0] && MODULO_MODE == 1) + y.s = x2.s; + return y; + }; + P.multipliedBy = P.times = function(y, b) { + var c, e2, i2, j, k, m2, xcL, xlo, xhi, ycL, ylo, yhi, zc, base, sqrtBase, x2 = this, xc = x2.c, yc = (y = new BigNumber2(y, b)).c; + if (!xc || !yc || !xc[0] || !yc[0]) { + if (!x2.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) { + y.c = y.e = y.s = null; + } else { + y.s *= x2.s; + if (!xc || !yc) { + y.c = y.e = null; + } else { + y.c = [0]; + y.e = 0; + } + } + return y; + } + e2 = bitFloor(x2.e / LOG_BASE) + bitFloor(y.e / LOG_BASE); + y.s *= x2.s; + xcL = xc.length; + ycL = yc.length; + if (xcL < ycL) { + zc = xc; + xc = yc; + yc = zc; + i2 = xcL; + xcL = ycL; + ycL = i2; + } + for (i2 = xcL + ycL, zc = []; i2--; zc.push(0)) + ; + base = BASE; + sqrtBase = SQRT_BASE; + for (i2 = ycL; --i2 >= 0; ) { + c = 0; + ylo = yc[i2] % sqrtBase; + yhi = yc[i2] / sqrtBase | 0; + for (k = xcL, j = i2 + k; j > i2; ) { + xlo = xc[--k] % sqrtBase; + xhi = xc[k] / sqrtBase | 0; + m2 = yhi * xlo + xhi * ylo; + xlo = ylo * xlo + m2 % sqrtBase * sqrtBase + zc[j] + c; + c = (xlo / base | 0) + (m2 / sqrtBase | 0) + yhi * xhi; + zc[j--] = xlo % base; + } + zc[j] = c; + } + if (c) { + ++e2; + } else { + zc.splice(0, 1); + } + return normalise(y, zc, e2); + }; + P.negated = function() { + var x2 = new BigNumber2(this); + x2.s = -x2.s || null; + return x2; + }; + P.plus = function(y, b) { + var t2, x2 = this, a = x2.s; + y = new BigNumber2(y, b); + b = y.s; + if (!a || !b) + return new BigNumber2(NaN); + if (a != b) { + y.s = -b; + return x2.minus(y); + } + var xe = x2.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x2.c, yc = y.c; + if (!xe || !ye) { + if (!xc || !yc) + return new BigNumber2(a / 0); + if (!xc[0] || !yc[0]) + return yc[0] ? y : new BigNumber2(xc[0] ? x2 : a * 0); + } + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + if (a = xe - ye) { + if (a > 0) { + ye = xe; + t2 = yc; + } else { + a = -a; + t2 = xc; + } + t2.reverse(); + for (; a--; t2.push(0)) + ; + t2.reverse(); + } + a = xc.length; + b = yc.length; + if (a - b < 0) { + t2 = yc; + yc = xc; + xc = t2; + b = a; + } + for (a = 0; b; ) { + a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0; + xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; + } + if (a) { + xc = [a].concat(xc); + ++ye; + } + return normalise(y, xc, ye); + }; + P.precision = P.sd = function(sd, rm2) { + var c, n, v, x2 = this; + if (sd != null && sd !== !!sd) { + intCheck(sd, 1, MAX); + if (rm2 == null) + rm2 = ROUNDING_MODE; + else + intCheck(rm2, 0, 8); + return round(new BigNumber2(x2), sd, rm2); + } + if (!(c = x2.c)) + return null; + v = c.length - 1; + n = v * LOG_BASE + 1; + if (v = c[v]) { + for (; v % 10 == 0; v /= 10, n--) + ; + for (v = c[0]; v >= 10; v /= 10, n++) + ; + } + if (sd && x2.e + 1 > n) + n = x2.e + 1; + return n; + }; + P.shiftedBy = function(k) { + intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); + return this.times("1e" + k); + }; + P.squareRoot = P.sqrt = function() { + var m2, n, r2, rep, t2, x2 = this, c = x2.c, s2 = x2.s, e2 = x2.e, dp = DECIMAL_PLACES + 4, half = new BigNumber2("0.5"); + if (s2 !== 1 || !c || !c[0]) { + return new BigNumber2(!s2 || s2 < 0 && (!c || c[0]) ? NaN : c ? x2 : 1 / 0); + } + s2 = Math.sqrt(+valueOf(x2)); + if (s2 == 0 || s2 == 1 / 0) { + n = coeffToString(c); + if ((n.length + e2) % 2 == 0) + n += "0"; + s2 = Math.sqrt(+n); + e2 = bitFloor((e2 + 1) / 2) - (e2 < 0 || e2 % 2); + if (s2 == 1 / 0) { + n = "5e" + e2; + } else { + n = s2.toExponential(); + n = n.slice(0, n.indexOf("e") + 1) + e2; + } + r2 = new BigNumber2(n); + } else { + r2 = new BigNumber2(s2 + ""); + } + if (r2.c[0]) { + e2 = r2.e; + s2 = e2 + dp; + if (s2 < 3) + s2 = 0; + for (; ; ) { + t2 = r2; + r2 = half.times(t2.plus(div(x2, t2, dp, 1))); + if (coeffToString(t2.c).slice(0, s2) === (n = coeffToString(r2.c)).slice(0, s2)) { + if (r2.e < e2) + --s2; + n = n.slice(s2 - 3, s2 + 1); + if (n == "9999" || !rep && n == "4999") { + if (!rep) { + round(t2, t2.e + DECIMAL_PLACES + 2, 0); + if (t2.times(t2).eq(x2)) { + r2 = t2; + break; + } + } + dp += 4; + s2 += 4; + rep = 1; + } else { + if (!+n || !+n.slice(1) && n.charAt(0) == "5") { + round(r2, r2.e + DECIMAL_PLACES + 2, 1); + m2 = !r2.times(r2).eq(x2); + } + break; + } + } + } + } + return round(r2, r2.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m2); + }; + P.toExponential = function(dp, rm2) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp++; + } + return format(this, dp, rm2, 1); + }; + P.toFixed = function(dp, rm2) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp = dp + this.e + 1; + } + return format(this, dp, rm2); + }; + P.toFormat = function(dp, rm2, format2) { + var str, x2 = this; + if (format2 == null) { + if (dp != null && rm2 && typeof rm2 == "object") { + format2 = rm2; + rm2 = null; + } else if (dp && typeof dp == "object") { + format2 = dp; + dp = rm2 = null; + } else { + format2 = FORMAT; + } + } else if (typeof format2 != "object") { + throw Error(bignumberError + "Argument not an object: " + format2); + } + str = x2.toFixed(dp, rm2); + if (x2.c) { + var i2, arr = str.split("."), g1 = +format2.groupSize, g2 = +format2.secondaryGroupSize, groupSeparator = format2.groupSeparator || "", intPart = arr[0], fractionPart = arr[1], isNeg = x2.s < 0, intDigits = isNeg ? intPart.slice(1) : intPart, len = intDigits.length; + if (g2) { + i2 = g1; + g1 = g2; + g2 = i2; + len -= i2; + } + if (g1 > 0 && len > 0) { + i2 = len % g1 || g1; + intPart = intDigits.substr(0, i2); + for (; i2 < len; i2 += g1) + intPart += groupSeparator + intDigits.substr(i2, g1); + if (g2 > 0) + intPart += groupSeparator + intDigits.slice(i2); + if (isNeg) + intPart = "-" + intPart; + } + str = fractionPart ? intPart + (format2.decimalSeparator || "") + ((g2 = +format2.fractionGroupSize) ? fractionPart.replace( + new RegExp("\\d{" + g2 + "}\\B", "g"), + "$&" + (format2.fractionGroupSeparator || "") + ) : fractionPart) : intPart; + } + return (format2.prefix || "") + str + (format2.suffix || ""); + }; + P.toFraction = function(md) { + var d, d0, d1, d2, e2, exp, n, n0, n1, q, r2, s2, x2 = this, xc = x2.c; + if (md != null) { + n = new BigNumber2(md); + if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) { + throw Error(bignumberError + "Argument " + (n.isInteger() ? "out of range: " : "not an integer: ") + valueOf(n)); + } + } + if (!xc) + return new BigNumber2(x2); + d = new BigNumber2(ONE); + n1 = d0 = new BigNumber2(ONE); + d1 = n0 = new BigNumber2(ONE); + s2 = coeffToString(xc); + e2 = d.e = s2.length - x2.e - 1; + d.c[0] = POWS_TEN[(exp = e2 % LOG_BASE) < 0 ? LOG_BASE + exp : exp]; + md = !md || n.comparedTo(d) > 0 ? e2 > 0 ? d : n1 : n; + exp = MAX_EXP; + MAX_EXP = 1 / 0; + n = new BigNumber2(s2); + n0.c[0] = 0; + for (; ; ) { + q = div(n, d, 0, 1); + d2 = d0.plus(q.times(d1)); + if (d2.comparedTo(md) == 1) + break; + d0 = d1; + d1 = d2; + n1 = n0.plus(q.times(d2 = n1)); + n0 = d2; + d = n.minus(q.times(d2 = d)); + n = d2; + } + d2 = div(md.minus(d0), d1, 0, 1); + n0 = n0.plus(d2.times(n1)); + d0 = d0.plus(d2.times(d1)); + n0.s = n1.s = x2.s; + e2 = e2 * 2; + r2 = div(n1, d1, e2, ROUNDING_MODE).minus(x2).abs().comparedTo( + div(n0, d0, e2, ROUNDING_MODE).minus(x2).abs() + ) < 1 ? [n1, d1] : [n0, d0]; + MAX_EXP = exp; + return r2; + }; + P.toNumber = function() { + return +valueOf(this); + }; + P.toPrecision = function(sd, rm2) { + if (sd != null) + intCheck(sd, 1, MAX); + return format(this, sd, rm2, 2); + }; + P.toString = function(b) { + var str, n = this, s2 = n.s, e2 = n.e; + if (e2 === null) { + if (s2) { + str = "Infinity"; + if (s2 < 0) + str = "-" + str; + } else { + str = "NaN"; + } + } else { + if (b == null) { + str = e2 <= TO_EXP_NEG || e2 >= TO_EXP_POS ? toExponential(coeffToString(n.c), e2) : toFixedPoint(coeffToString(n.c), e2, "0"); + } else if (b === 10 && alphabetHasNormalDecimalDigits) { + n = round(new BigNumber2(n), DECIMAL_PLACES + e2 + 1, ROUNDING_MODE); + str = toFixedPoint(coeffToString(n.c), n.e, "0"); + } else { + intCheck(b, 2, ALPHABET.length, "Base"); + str = convertBase(toFixedPoint(coeffToString(n.c), e2, "0"), 10, b, s2, true); + } + if (s2 < 0 && n.c[0]) + str = "-" + str; + } + return str; + }; + P.valueOf = P.toJSON = function() { + return valueOf(this); + }; + P._isBigNumber = true; + if (configObject != null) + BigNumber2.set(configObject); + return BigNumber2; + } + function bitFloor(n) { + var i2 = n | 0; + return n > 0 || n === i2 ? i2 : i2 - 1; + } + function coeffToString(a) { + var s2, z, i2 = 1, j = a.length, r2 = a[0] + ""; + for (; i2 < j; ) { + s2 = a[i2++] + ""; + z = LOG_BASE - s2.length; + for (; z--; s2 = "0" + s2) + ; + r2 += s2; + } + for (j = r2.length; r2.charCodeAt(--j) === 48; ) + ; + return r2.slice(0, j + 1 || 1); + } + function compare(x2, y) { + var a, b, xc = x2.c, yc = y.c, i2 = x2.s, j = y.s, k = x2.e, l = y.e; + if (!i2 || !j) + return null; + a = xc && !xc[0]; + b = yc && !yc[0]; + if (a || b) + return a ? b ? 0 : -j : i2; + if (i2 != j) + return i2; + a = i2 < 0; + b = k == l; + if (!xc || !yc) + return b ? 0 : !xc ^ a ? 1 : -1; + if (!b) + return k > l ^ a ? 1 : -1; + j = (k = xc.length) < (l = yc.length) ? k : l; + for (i2 = 0; i2 < j; i2++) + if (xc[i2] != yc[i2]) + return xc[i2] > yc[i2] ^ a ? 1 : -1; + return k == l ? 0 : k > l ^ a ? 1 : -1; + } + function intCheck(n, min, max, name) { + if (n < min || n > max || n !== mathfloor(n)) { + throw Error(bignumberError + (name || "Argument") + (typeof n == "number" ? n < min || n > max ? " out of range: " : " not an integer: " : " not a primitive number: ") + String(n)); + } + } + function isOdd(n) { + var k = n.c.length - 1; + return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0; + } + function toExponential(str, e2) { + return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e2 < 0 ? "e" : "e+") + e2; + } + function toFixedPoint(str, e2, z) { + var len, zs; + if (e2 < 0) { + for (zs = z + "."; ++e2; zs += z) + ; + str = zs + str; + } else { + len = str.length; + if (++e2 > len) { + for (zs = z, e2 -= len; --e2; zs += z) + ; + str += zs; + } else if (e2 < len) { + str = str.slice(0, e2) + "." + str.slice(e2); + } + } + return str; + } + BigNumber = clone2(); + BigNumber["default"] = BigNumber.BigNumber = BigNumber; + if (typeof define == "function" && define.amd) { + define(function() { + return BigNumber; + }); + } else if (typeof module != "undefined" && module.exports) { + module.exports = BigNumber; + } else { + if (!globalObject) { + globalObject = typeof self != "undefined" && self ? self : window; + } + globalObject.BigNumber = BigNumber; + } + })(exports); + } +}); + +// +var require_stringify = __commonJS({ + ""(exports, module) { + var BigNumber = require_bignumber(); + var JSON2 = module.exports; + (function() { + "use strict"; + function f3(n) { + return n < 10 ? "0" + n : n; + } + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { + // table of character substitutions + "\b": "\\b", + " ": "\\t", + "\n": "\\n", + "\f": "\\f", + "\r": "\\r", + '"': '\\"', + "\\": "\\\\" + }, rep; + function quote(string) { + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function(a) { + var c = meta[a]; + return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + function str(key, holder) { + var i2, k, v, length, mind = gap, partial, value = holder[key], isBigNumber = value != null && (value instanceof BigNumber || BigNumber.isBigNumber(value)); + if (value && typeof value === "object" && typeof value.toJSON === "function") { + value = value.toJSON(key); + } + if (typeof rep === "function") { + value = rep.call(holder, key, value); + } + switch (typeof value) { + case "string": + if (isBigNumber) { + return value; + } else { + return quote(value); + } + case "number": + return isFinite(value) ? String(value) : "null"; + case "boolean": + case "null": + case "bigint": + return String(value); + case "object": + if (!value) { + return "null"; + } + gap += indent; + partial = []; + if (Object.prototype.toString.apply(value) === "[object Array]") { + length = value.length; + for (i2 = 0; i2 < length; i2 += 1) { + partial[i2] = str(i2, value) || "null"; + } + v = partial.length === 0 ? "[]" : gap ? "[\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "]" : "[" + partial.join(",") + "]"; + gap = mind; + return v; + } + if (rep && typeof rep === "object") { + length = rep.length; + for (i2 = 0; i2 < length; i2 += 1) { + if (typeof rep[i2] === "string") { + k = rep[i2]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ": " : ":") + v); + } + } + } + } else { + Object.keys(value).forEach(function(k2) { + var v2 = str(k2, value); + if (v2) { + partial.push(quote(k2) + (gap ? ": " : ":") + v2); + } + }); + } + v = partial.length === 0 ? "{}" : gap ? "{\n" + gap + partial.join(",\n" + gap) + "\n" + mind + "}" : "{" + partial.join(",") + "}"; + gap = mind; + return v; + } + } + if (typeof JSON2.stringify !== "function") { + JSON2.stringify = function(value, replacer, space) { + var i2; + gap = ""; + indent = ""; + if (typeof space === "number") { + for (i2 = 0; i2 < space; i2 += 1) { + indent += " "; + } + } else if (typeof space === "string") { + indent = space; + } + rep = replacer; + if (replacer && typeof replacer !== "function" && (typeof replacer !== "object" || typeof replacer.length !== "number")) { + throw new Error("JSON.stringify"); + } + return str("", { "": value }); + }; + } + })(); + } +}); + +// +var require_parse2 = __commonJS({ + ""(exports, module) { + var BigNumber = null; + var suspectProtoRx = /(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])/; + var suspectConstructorRx = /(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)/; + var json_parse = function(options) { + "use strict"; + var _options = { + strict: false, + // not being strict means do not generate syntax errors for "duplicate key" + storeAsString: false, + // toggles whether the values should be stored as BigNumber (default) or a string + alwaysParseAsBig: false, + // toggles whether all numbers should be Big + useNativeBigInt: false, + // toggles whether to use native BigInt instead of bignumber.js + protoAction: "error", + constructorAction: "error" + }; + if (options !== void 0 && options !== null) { + if (options.strict === true) { + _options.strict = true; + } + if (options.storeAsString === true) { + _options.storeAsString = true; + } + _options.alwaysParseAsBig = options.alwaysParseAsBig === true ? options.alwaysParseAsBig : false; + _options.useNativeBigInt = options.useNativeBigInt === true ? options.useNativeBigInt : false; + if (typeof options.constructorAction !== "undefined") { + if (options.constructorAction === "error" || options.constructorAction === "ignore" || options.constructorAction === "preserve") { + _options.constructorAction = options.constructorAction; + } else { + throw new Error( + `Incorrect value for constructorAction option, must be "error", "ignore" or undefined but passed ${options.constructorAction}` + ); + } + } + if (typeof options.protoAction !== "undefined") { + if (options.protoAction === "error" || options.protoAction === "ignore" || options.protoAction === "preserve") { + _options.protoAction = options.protoAction; + } else { + throw new Error( + `Incorrect value for protoAction option, must be "error", "ignore" or undefined but passed ${options.protoAction}` + ); + } + } + } + var at, ch, escapee = { + '"': '"', + "\\": "\\", + "/": "/", + b: "\b", + f: "\f", + n: "\n", + r: "\r", + t: " " + }, text, error2 = function(m2) { + throw { + name: "SyntaxError", + message: m2, + at, + text + }; + }, next = function(c) { + if (c && c !== ch) { + error2("Expected '" + c + "' instead of '" + ch + "'"); + } + ch = text.charAt(at); + at += 1; + return ch; + }, number = function() { + var number2, string2 = ""; + if (ch === "-") { + string2 = "-"; + next("-"); + } + while (ch >= "0" && ch <= "9") { + string2 += ch; + next(); + } + if (ch === ".") { + string2 += "."; + while (next() && ch >= "0" && ch <= "9") { + string2 += ch; + } + } + if (ch === "e" || ch === "E") { + string2 += ch; + next(); + if (ch === "-" || ch === "+") { + string2 += ch; + next(); + } + while (ch >= "0" && ch <= "9") { + string2 += ch; + next(); + } + } + number2 = +string2; + if (!isFinite(number2)) { + error2("Bad number"); + } else { + if (BigNumber == null) + BigNumber = require_bignumber(); + if (string2.length > 15) + return _options.storeAsString ? string2 : _options.useNativeBigInt ? BigInt(string2) : new BigNumber(string2); + else + return !_options.alwaysParseAsBig ? number2 : _options.useNativeBigInt ? BigInt(number2) : new BigNumber(number2); + } + }, string = function() { + var hex, i2, string2 = "", uffff; + if (ch === '"') { + var startAt = at; + while (next()) { + if (ch === '"') { + if (at - 1 > startAt) + string2 += text.substring(startAt, at - 1); + next(); + return string2; + } + if (ch === "\\") { + if (at - 1 > startAt) + string2 += text.substring(startAt, at - 1); + next(); + if (ch === "u") { + uffff = 0; + for (i2 = 0; i2 < 4; i2 += 1) { + hex = parseInt(next(), 16); + if (!isFinite(hex)) { + break; + } + uffff = uffff * 16 + hex; + } + string2 += String.fromCharCode(uffff); + } else if (typeof escapee[ch] === "string") { + string2 += escapee[ch]; + } else { + break; + } + startAt = at; + } + } + } + error2("Bad string"); + }, white = function() { + while (ch && ch <= " ") { + next(); + } + }, word = function() { + switch (ch) { + case "t": + next("t"); + next("r"); + next("u"); + next("e"); + return true; + case "f": + next("f"); + next("a"); + next("l"); + next("s"); + next("e"); + return false; + case "n": + next("n"); + next("u"); + next("l"); + next("l"); + return null; + } + error2("Unexpected '" + ch + "'"); + }, value, array = function() { + var array2 = []; + if (ch === "[") { + next("["); + white(); + if (ch === "]") { + next("]"); + return array2; + } + while (ch) { + array2.push(value()); + white(); + if (ch === "]") { + next("]"); + return array2; + } + next(","); + white(); + } + } + error2("Bad array"); + }, object = function() { + var key, object2 = /* @__PURE__ */ Object.create(null); + if (ch === "{") { + next("{"); + white(); + if (ch === "}") { + next("}"); + return object2; + } + while (ch) { + key = string(); + white(); + next(":"); + if (_options.strict === true && Object.hasOwnProperty.call(object2, key)) { + error2('Duplicate key "' + key + '"'); + } + if (suspectProtoRx.test(key) === true) { + if (_options.protoAction === "error") { + error2("Object contains forbidden prototype property"); + } else if (_options.protoAction === "ignore") { + value(); + } else { + object2[key] = value(); + } + } else if (suspectConstructorRx.test(key) === true) { + if (_options.constructorAction === "error") { + error2("Object contains forbidden constructor property"); + } else if (_options.constructorAction === "ignore") { + value(); + } else { + object2[key] = value(); + } + } else { + object2[key] = value(); + } + white(); + if (ch === "}") { + next("}"); + return object2; + } + next(","); + white(); + } + } + error2("Bad object"); + }; + value = function() { + white(); + switch (ch) { + case "{": + return object(); + case "[": + return array(); + case '"': + return string(); + case "-": + return number(); + default: + return ch >= "0" && ch <= "9" ? number() : word(); + } + }; + return function(source, reviver) { + var result; + text = source + ""; + at = 0; + ch = " "; + result = value(); + white(); + if (ch) { + error2("Syntax error"); + } + return typeof reviver === "function" ? function walk(holder, key) { + var k, v, value2 = holder[key]; + if (value2 && typeof value2 === "object") { + Object.keys(value2).forEach(function(k2) { + v = walk(value2, k2); + if (v !== void 0) { + value2[k2] = v; + } else { + delete value2[k2]; + } + }); + } + return reviver.call(holder, key, value2); + }({ "": result }, "") : result; + }; + }; + module.exports = json_parse; + } +}); + +// +var require_json_bigint = __commonJS({ + ""(exports, module) { + var json_stringify = require_stringify().stringify; + var json_parse = require_parse2(); + module.exports = function(options) { + return { + parse: json_parse(options), + stringify: json_stringify + }; + }; + module.exports.parse = json_parse(); + module.exports.stringify = json_stringify; + } +}); + +// +var require_gcp_residency = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GCE_LINUX_BIOS_PATHS = void 0; + exports.isGoogleCloudServerless = isGoogleCloudServerless; + exports.isGoogleComputeEngineLinux = isGoogleComputeEngineLinux; + exports.isGoogleComputeEngineMACAddress = isGoogleComputeEngineMACAddress; + exports.isGoogleComputeEngine = isGoogleComputeEngine; + exports.detectGCPResidency = detectGCPResidency; + var fs_1 = __require("fs"); + var os_1 = __require("os"); + exports.GCE_LINUX_BIOS_PATHS = { + BIOS_DATE: "/sys/class/dmi/id/bios_date", + BIOS_VENDOR: "/sys/class/dmi/id/bios_vendor" + }; + var GCE_MAC_ADDRESS_REGEX = /^42:01/; + function isGoogleCloudServerless() { + const isGFEnvironment = process.env.CLOUD_RUN_JOB || process.env.FUNCTION_NAME || process.env.K_SERVICE; + return !!isGFEnvironment; + } + function isGoogleComputeEngineLinux() { + if ((0, os_1.platform)() !== "linux") + return false; + try { + (0, fs_1.statSync)(exports.GCE_LINUX_BIOS_PATHS.BIOS_DATE); + const biosVendor = (0, fs_1.readFileSync)(exports.GCE_LINUX_BIOS_PATHS.BIOS_VENDOR, "utf8"); + return /Google/.test(biosVendor); + } catch { + return false; + } + } + function isGoogleComputeEngineMACAddress() { + const interfaces = (0, os_1.networkInterfaces)(); + for (const item of Object.values(interfaces)) { + if (!item) + continue; + for (const { mac } of item) { + if (GCE_MAC_ADDRESS_REGEX.test(mac)) { + return true; + } + } + } + return false; + } + function isGoogleComputeEngine() { + return isGoogleComputeEngineLinux() || isGoogleComputeEngineMACAddress(); + } + function detectGCPResidency() { + return isGoogleCloudServerless() || isGoogleComputeEngine(); + } + } +}); + +// +var require_colours = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Colours = void 0; + var Colours = class _Colours { + /** + * @param stream The stream (e.g. process.stderr) + * @returns true if the stream should have colourization enabled + */ + static isEnabled(stream) { + return stream && // May happen in browsers. + stream.isTTY && (typeof stream.getColorDepth === "function" ? stream.getColorDepth() > 2 : true); + } + static refresh() { + _Colours.enabled = _Colours.isEnabled(process === null || process === void 0 ? void 0 : process.stderr); + if (!this.enabled) { + _Colours.reset = ""; + _Colours.bright = ""; + _Colours.dim = ""; + _Colours.red = ""; + _Colours.green = ""; + _Colours.yellow = ""; + _Colours.blue = ""; + _Colours.magenta = ""; + _Colours.cyan = ""; + _Colours.white = ""; + _Colours.grey = ""; + } else { + _Colours.reset = "\x1B[0m"; + _Colours.bright = "\x1B[1m"; + _Colours.dim = "\x1B[2m"; + _Colours.red = "\x1B[31m"; + _Colours.green = "\x1B[32m"; + _Colours.yellow = "\x1B[33m"; + _Colours.blue = "\x1B[34m"; + _Colours.magenta = "\x1B[35m"; + _Colours.cyan = "\x1B[36m"; + _Colours.white = "\x1B[37m"; + _Colours.grey = "\x1B[90m"; + } + } + }; + exports.Colours = Colours; + Colours.enabled = false; + Colours.reset = ""; + Colours.bright = ""; + Colours.dim = ""; + Colours.red = ""; + Colours.green = ""; + Colours.yellow = ""; + Colours.blue = ""; + Colours.magenta = ""; + Colours.cyan = ""; + Colours.white = ""; + Colours.grey = ""; + Colours.refresh(); + } +}); + +// +var require_logging_utils = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || /* @__PURE__ */ function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) + if (Object.prototype.hasOwnProperty.call(o2, k)) + ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i2 = 0; i2 < k.length; i2++) + if (k[i2] !== "default") + __createBinding(result, mod, k[i2]); + } + __setModuleDefault(result, mod); + return result; + }; + }(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.env = exports.DebugLogBackendBase = exports.placeholder = exports.AdhocDebugLogger = exports.LogSeverity = void 0; + exports.getNodeBackend = getNodeBackend; + exports.getDebugBackend = getDebugBackend; + exports.getStructuredBackend = getStructuredBackend; + exports.setBackend = setBackend; + exports.log = log; + var events_1 = __require("events"); + var process3 = __importStar(__require("process")); + var util = __importStar(__require("util")); + var colours_1 = require_colours(); + var LogSeverity; + (function(LogSeverity2) { + LogSeverity2["DEFAULT"] = "DEFAULT"; + LogSeverity2["DEBUG"] = "DEBUG"; + LogSeverity2["INFO"] = "INFO"; + LogSeverity2["WARNING"] = "WARNING"; + LogSeverity2["ERROR"] = "ERROR"; + })(LogSeverity || (exports.LogSeverity = LogSeverity = {})); + var AdhocDebugLogger = class extends events_1.EventEmitter { + /** + * @param upstream The backend will pass a function that will be + * called whenever our logger function is invoked. + */ + constructor(namespace, upstream) { + super(); + this.namespace = namespace; + this.upstream = upstream; + this.func = Object.assign(this.invoke.bind(this), { + // Also add an instance pointer back to us. + instance: this, + // And pull over the EventEmitter functionality. + on: (event, listener) => this.on(event, listener) + }); + this.func.debug = (...args) => this.invokeSeverity(LogSeverity.DEBUG, ...args); + this.func.info = (...args) => this.invokeSeverity(LogSeverity.INFO, ...args); + this.func.warn = (...args) => this.invokeSeverity(LogSeverity.WARNING, ...args); + this.func.error = (...args) => this.invokeSeverity(LogSeverity.ERROR, ...args); + this.func.sublog = (namespace2) => log(namespace2, this.func); + } + invoke(fields, ...args) { + if (this.upstream) { + try { + this.upstream(fields, ...args); + } catch (e2) { + } + } + try { + this.emit("log", fields, args); + } catch (e2) { + } + } + invokeSeverity(severity, ...args) { + this.invoke({ severity }, ...args); + } + }; + exports.AdhocDebugLogger = AdhocDebugLogger; + exports.placeholder = new AdhocDebugLogger("", () => { + }).func; + var DebugLogBackendBase = class { + constructor() { + var _a3; + this.cached = /* @__PURE__ */ new Map(); + this.filters = []; + this.filtersSet = false; + let nodeFlag = (_a3 = process3.env[exports.env.nodeEnables]) !== null && _a3 !== void 0 ? _a3 : "*"; + if (nodeFlag === "all") { + nodeFlag = "*"; + } + this.filters = nodeFlag.split(","); + } + log(namespace, fields, ...args) { + try { + if (!this.filtersSet) { + this.setFilters(); + this.filtersSet = true; + } + let logger = this.cached.get(namespace); + if (!logger) { + logger = this.makeLogger(namespace); + this.cached.set(namespace, logger); + } + logger(fields, ...args); + } catch (e2) { + console.error(e2); + } + } + }; + exports.DebugLogBackendBase = DebugLogBackendBase; + var NodeBackend = class extends DebugLogBackendBase { + constructor() { + super(...arguments); + this.enabledRegexp = /.*/g; + } + isEnabled(namespace) { + return this.enabledRegexp.test(namespace); + } + makeLogger(namespace) { + if (!this.enabledRegexp.test(namespace)) { + return () => { + }; + } + return (fields, ...args) => { + var _a3; + const nscolour = `${colours_1.Colours.green}${namespace}${colours_1.Colours.reset}`; + const pid = `${colours_1.Colours.yellow}${process3.pid}${colours_1.Colours.reset}`; + let level; + switch (fields.severity) { + case LogSeverity.ERROR: + level = `${colours_1.Colours.red}${fields.severity}${colours_1.Colours.reset}`; + break; + case LogSeverity.INFO: + level = `${colours_1.Colours.magenta}${fields.severity}${colours_1.Colours.reset}`; + break; + case LogSeverity.WARNING: + level = `${colours_1.Colours.yellow}${fields.severity}${colours_1.Colours.reset}`; + break; + default: + level = (_a3 = fields.severity) !== null && _a3 !== void 0 ? _a3 : LogSeverity.DEFAULT; + break; + } + const msg = util.formatWithOptions({ colors: colours_1.Colours.enabled }, ...args); + const filteredFields = Object.assign({}, fields); + delete filteredFields.severity; + const fieldsJson = Object.getOwnPropertyNames(filteredFields).length ? JSON.stringify(filteredFields) : ""; + const fieldsColour = fieldsJson ? `${colours_1.Colours.grey}${fieldsJson}${colours_1.Colours.reset}` : ""; + console.error("%s [%s|%s] %s%s", pid, nscolour, level, msg, fieldsJson ? ` ${fieldsColour}` : ""); + }; + } + // Regexp patterns below are from here: + // https://github.com/nodejs/node/blob/c0aebed4b3395bd65d54b18d1fd00f071002ac20/lib/internal/util/debuglog.js#L36 + setFilters() { + const totalFilters = this.filters.join(","); + const regexp = totalFilters.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".*").replace(/,/g, "$|^"); + this.enabledRegexp = new RegExp(`^${regexp}$`, "i"); + } + }; + function getNodeBackend() { + return new NodeBackend(); + } + var DebugBackend = class extends DebugLogBackendBase { + constructor(pkg) { + super(); + this.debugPkg = pkg; + } + makeLogger(namespace) { + const debugLogger = this.debugPkg(namespace); + return (fields, ...args) => { + debugLogger(args[0], ...args.slice(1)); + }; + } + setFilters() { + var _a3; + const existingFilters = (_a3 = process3.env["NODE_DEBUG"]) !== null && _a3 !== void 0 ? _a3 : ""; + process3.env["NODE_DEBUG"] = `${existingFilters}${existingFilters ? "," : ""}${this.filters.join(",")}`; + } + }; + function getDebugBackend(debugPkg) { + return new DebugBackend(debugPkg); + } + var StructuredBackend = class extends DebugLogBackendBase { + constructor(upstream) { + var _a3; + super(); + this.upstream = (_a3 = upstream) !== null && _a3 !== void 0 ? _a3 : void 0; + } + makeLogger(namespace) { + var _a3; + const debugLogger = (_a3 = this.upstream) === null || _a3 === void 0 ? void 0 : _a3.makeLogger(namespace); + return (fields, ...args) => { + var _a4; + const severity = (_a4 = fields.severity) !== null && _a4 !== void 0 ? _a4 : LogSeverity.INFO; + const json = Object.assign({ + severity, + message: util.format(...args) + }, fields); + const jsonString = JSON.stringify(json); + if (debugLogger) { + debugLogger(fields, jsonString); + } else { + console.log("%s", jsonString); + } + }; + } + setFilters() { + var _a3; + (_a3 = this.upstream) === null || _a3 === void 0 ? void 0 : _a3.setFilters(); + } + }; + function getStructuredBackend(upstream) { + return new StructuredBackend(upstream); + } + exports.env = { + /** + * Filter wildcards specific to the Node syntax, and similar to the built-in + * utils.debuglog() environment variable. If missing, disables logging. + */ + nodeEnables: "GOOGLE_SDK_NODE_LOGGING" + }; + var loggerCache = /* @__PURE__ */ new Map(); + var cachedBackend = void 0; + function setBackend(backend) { + cachedBackend = backend; + loggerCache.clear(); + } + function log(namespace, parent) { + if (!cachedBackend) { + const enablesFlag = process3.env[exports.env.nodeEnables]; + if (!enablesFlag) { + return exports.placeholder; + } + } + if (!namespace) { + return exports.placeholder; + } + if (parent) { + namespace = `${parent.instance.namespace}:${namespace}`; + } + const existing = loggerCache.get(namespace); + if (existing) { + return existing.func; + } + if (cachedBackend === null) { + return exports.placeholder; + } else if (cachedBackend === void 0) { + cachedBackend = getNodeBackend(); + } + const logger = (() => { + let previousBackend = void 0; + const newLogger = new AdhocDebugLogger(namespace, (fields, ...args) => { + if (previousBackend !== cachedBackend) { + if (cachedBackend === null) { + return; + } else if (cachedBackend === void 0) { + cachedBackend = getNodeBackend(); + } + previousBackend = cachedBackend; + } + cachedBackend === null || cachedBackend === void 0 ? void 0 : cachedBackend.log(namespace, fields, ...args); + }); + return newLogger; + })(); + loggerCache.set(namespace, logger); + return logger.func; + } + } +}); + +// +var require_src3 = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; + }); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p in m2) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m2, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(require_logging_utils(), exports); + } +}); + +// +var require_src4 = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; + }); + var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__importStar || /* @__PURE__ */ function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) + if (Object.prototype.hasOwnProperty.call(o2, k)) + ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i2 = 0; i2 < k.length; i2++) + if (k[i2] !== "default") + __createBinding(result, mod, k[i2]); + } + __setModuleDefault(result, mod); + return result; + }; + }(); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p in m2) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m2, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.gcpResidencyCache = exports.METADATA_SERVER_DETECTION = exports.HEADERS = exports.HEADER_VALUE = exports.HEADER_NAME = exports.SECONDARY_HOST_ADDRESS = exports.HOST_ADDRESS = exports.BASE_PATH = void 0; + exports.instance = instance; + exports.project = project; + exports.universe = universe; + exports.bulk = bulk; + exports.isAvailable = isAvailable; + exports.resetIsAvailableCache = resetIsAvailableCache; + exports.getGCPResidency = getGCPResidency; + exports.setGCPResidency = setGCPResidency; + exports.requestTimeout = requestTimeout; + var gaxios_1 = require_src2(); + var jsonBigint = require_json_bigint(); + var gcp_residency_1 = require_gcp_residency(); + var logger = __importStar(require_src3()); + exports.BASE_PATH = "/computeMetadata/v1"; + exports.HOST_ADDRESS = "http://169.254.169.254"; + exports.SECONDARY_HOST_ADDRESS = "http://metadata.google.internal."; + exports.HEADER_NAME = "Metadata-Flavor"; + exports.HEADER_VALUE = "Google"; + exports.HEADERS = Object.freeze({ [exports.HEADER_NAME]: exports.HEADER_VALUE }); + var log = logger.log("gcp-metadata"); + exports.METADATA_SERVER_DETECTION = Object.freeze({ + "assume-present": "don't try to ping the metadata server, but assume it's present", + none: "don't try to ping the metadata server, but don't try to use it either", + "bios-only": "treat the result of a BIOS probe as canonical (don't fall back to pinging)", + "ping-only": "skip the BIOS probe, and go straight to pinging" + }); + function getBaseUrl2(baseUrl2) { + if (!baseUrl2) { + baseUrl2 = process.env.GCE_METADATA_IP || process.env.GCE_METADATA_HOST || exports.HOST_ADDRESS; + } + if (!/^https?:\/\//.test(baseUrl2)) { + baseUrl2 = `http://${baseUrl2}`; + } + return new URL(exports.BASE_PATH, baseUrl2).href; + } + function validate(options) { + Object.keys(options).forEach((key) => { + switch (key) { + case "params": + case "property": + case "headers": + break; + case "qs": + throw new Error("'qs' is not a valid configuration option. Please use 'params' instead."); + default: + throw new Error(`'${key}' is not a valid configuration option.`); + } + }); + } + async function metadataAccessor(type, options = {}, noResponseRetries = 3, fastFail = false) { + const headers = new Headers(exports.HEADERS); + let metadataKey = ""; + let params = {}; + if (typeof type === "object") { + const metadataAccessor2 = type; + new Headers(metadataAccessor2.headers).forEach((value, key) => headers.set(key, value)); + metadataKey = metadataAccessor2.metadataKey; + params = metadataAccessor2.params || params; + noResponseRetries = metadataAccessor2.noResponseRetries || noResponseRetries; + fastFail = metadataAccessor2.fastFail || fastFail; + } else { + metadataKey = type; + } + if (typeof options === "string") { + metadataKey += `/${options}`; + } else { + validate(options); + if (options.property) { + metadataKey += `/${options.property}`; + } + new Headers(options.headers).forEach((value, key) => headers.set(key, value)); + params = options.params || params; + } + const requestMethod = fastFail ? fastFailMetadataRequest : gaxios_1.request; + const req = { + url: `${getBaseUrl2()}/${metadataKey}`, + headers, + retryConfig: { noResponseRetries }, + params, + responseType: "text", + timeout: requestTimeout() + }; + log.info("instance request %j", req); + const res = await requestMethod(req); + log.info("instance metadata is %s", res.data); + const metadataFlavor = res.headers.get(exports.HEADER_NAME); + if (metadataFlavor !== exports.HEADER_VALUE) { + throw new RangeError(`Invalid response from metadata service: incorrect ${exports.HEADER_NAME} header. Expected '${exports.HEADER_VALUE}', got ${metadataFlavor ? `'${metadataFlavor}'` : "no header"}`); + } + if (typeof res.data === "string") { + try { + return jsonBigint.parse(res.data); + } catch { + } + } + return res.data; + } + async function fastFailMetadataRequest(options) { + const secondaryOptions = { + ...options, + url: options.url?.toString().replace(getBaseUrl2(), getBaseUrl2(exports.SECONDARY_HOST_ADDRESS)) + }; + const r1 = (0, gaxios_1.request)(options); + const r2 = (0, gaxios_1.request)(secondaryOptions); + return Promise.any([r1, r2]); + } + function instance(options) { + return metadataAccessor("instance", options); + } + function project(options) { + return metadataAccessor("project", options); + } + function universe(options) { + return metadataAccessor("universe", options); + } + async function bulk(properties) { + const r2 = {}; + await Promise.all(properties.map((item) => { + return (async () => { + const res = await metadataAccessor(item); + const key = item.metadataKey; + r2[key] = res; + })(); + })); + return r2; + } + function detectGCPAvailableRetries() { + return process.env.DETECT_GCP_RETRIES ? Number(process.env.DETECT_GCP_RETRIES) : 0; + } + var cachedIsAvailableResponse; + async function isAvailable() { + if (process.env.METADATA_SERVER_DETECTION) { + const value = process.env.METADATA_SERVER_DETECTION.trim().toLocaleLowerCase(); + if (!(value in exports.METADATA_SERVER_DETECTION)) { + throw new RangeError(`Unknown \`METADATA_SERVER_DETECTION\` env variable. Got \`${value}\`, but it should be \`${Object.keys(exports.METADATA_SERVER_DETECTION).join("`, `")}\`, or unset`); + } + switch (value) { + case "assume-present": + return true; + case "none": + return false; + case "bios-only": + return getGCPResidency(); + case "ping-only": + } + } + try { + if (cachedIsAvailableResponse === void 0) { + cachedIsAvailableResponse = metadataAccessor( + "instance", + void 0, + detectGCPAvailableRetries(), + // If the default HOST_ADDRESS has been overridden, we should not + // make an effort to try SECONDARY_HOST_ADDRESS (as we are likely in + // a non-GCP environment): + !(process.env.GCE_METADATA_IP || process.env.GCE_METADATA_HOST) + ); + } + await cachedIsAvailableResponse; + return true; + } catch (e2) { + const err = e2; + if (process.env.DEBUG_AUTH) { + console.info(err); + } + if (err.type === "request-timeout") { + return false; + } + if (err.response && err.response.status === 404) { + return false; + } else { + if (!(err.response && err.response.status === 404) && // A warning is emitted if we see an unexpected err.code, or err.code + // is not populated: + (!err.code || ![ + "EHOSTDOWN", + "EHOSTUNREACH", + "ENETUNREACH", + "ENOENT", + "ENOTFOUND", + "ECONNREFUSED" + ].includes(err.code.toString()))) { + let code = "UNKNOWN"; + if (err.code) + code = err.code.toString(); + process.emitWarning(`received unexpected error = ${err.message} code = ${code}`, "MetadataLookupWarning"); + } + return false; + } + } + } + function resetIsAvailableCache() { + cachedIsAvailableResponse = void 0; + } + exports.gcpResidencyCache = null; + function getGCPResidency() { + if (exports.gcpResidencyCache === null) { + setGCPResidency(); + } + return exports.gcpResidencyCache; + } + function setGCPResidency(value = null) { + exports.gcpResidencyCache = value !== null ? value : (0, gcp_residency_1.detectGCPResidency)(); + } + function requestTimeout() { + return getGCPResidency() ? 0 : 3e3; + } + __exportStar(require_gcp_residency(), exports); + } +}); + +// +var require_base64_js = __commonJS({ + ""(exports) { + "use strict"; + exports.byteLength = byteLength; + exports.toByteArray = toByteArray; + exports.fromByteArray = fromByteArray; + var lookup = []; + var revLookup = []; + var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; + var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + for (i2 = 0, len = code.length; i2 < len; ++i2) { + lookup[i2] = code[i2]; + revLookup[code.charCodeAt(i2)] = i2; + } + var i2; + var len; + revLookup["-".charCodeAt(0)] = 62; + revLookup["_".charCodeAt(0)] = 63; + function getLens(b64) { + var len2 = b64.length; + if (len2 % 4 > 0) { + throw new Error("Invalid string. Length must be a multiple of 4"); + } + var validLen = b64.indexOf("="); + if (validLen === -1) + validLen = len2; + var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; + return [validLen, placeHoldersLen]; + } + function byteLength(b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; + } + function _byteLength(b64, validLen, placeHoldersLen) { + return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; + } + function toByteArray(b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + var curByte = 0; + var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; + var i3; + for (i3 = 0; i3 < len2; i3 += 4) { + tmp = revLookup[b64.charCodeAt(i3)] << 18 | revLookup[b64.charCodeAt(i3 + 1)] << 12 | revLookup[b64.charCodeAt(i3 + 2)] << 6 | revLookup[b64.charCodeAt(i3 + 3)]; + arr[curByte++] = tmp >> 16 & 255; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 2) { + tmp = revLookup[b64.charCodeAt(i3)] << 2 | revLookup[b64.charCodeAt(i3 + 1)] >> 4; + arr[curByte++] = tmp & 255; + } + if (placeHoldersLen === 1) { + tmp = revLookup[b64.charCodeAt(i3)] << 10 | revLookup[b64.charCodeAt(i3 + 1)] << 4 | revLookup[b64.charCodeAt(i3 + 2)] >> 2; + arr[curByte++] = tmp >> 8 & 255; + arr[curByte++] = tmp & 255; + } + return arr; + } + function tripletToBase64(num) { + return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; + } + function encodeChunk(uint8, start, end) { + var tmp; + var output = []; + for (var i3 = start; i3 < end; i3 += 3) { + tmp = (uint8[i3] << 16 & 16711680) + (uint8[i3 + 1] << 8 & 65280) + (uint8[i3 + 2] & 255); + output.push(tripletToBase64(tmp)); + } + return output.join(""); + } + function fromByteArray(uint8) { + var tmp; + var len2 = uint8.length; + var extraBytes = len2 % 3; + var parts = []; + var maxChunkLength = 16383; + for (var i3 = 0, len22 = len2 - extraBytes; i3 < len22; i3 += maxChunkLength) { + parts.push(encodeChunk(uint8, i3, i3 + maxChunkLength > len22 ? len22 : i3 + maxChunkLength)); + } + if (extraBytes === 1) { + tmp = uint8[len2 - 1]; + parts.push( + lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" + ); + } else if (extraBytes === 2) { + tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; + parts.push( + lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" + ); + } + return parts.join(""); + } + } +}); + +// +var require_shared = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromArrayBufferToHex = fromArrayBufferToHex; + function fromArrayBufferToHex(arrayBuffer) { + const byteArray = Array.from(new Uint8Array(arrayBuffer)); + return byteArray.map((byte) => { + return byte.toString(16).padStart(2, "0"); + }).join(""); + } + } +}); + +// +var require_crypto = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.BrowserCrypto = void 0; + var base64js = require_base64_js(); + var shared_1 = require_shared(); + var BrowserCrypto = class _BrowserCrypto { + constructor() { + if (typeof window === "undefined" || window.crypto === void 0 || window.crypto.subtle === void 0) { + throw new Error("SubtleCrypto not found. Make sure it's an https:// website."); + } + } + async sha256DigestBase64(str) { + const inputBuffer = new TextEncoder().encode(str); + const outputBuffer = await window.crypto.subtle.digest("SHA-256", inputBuffer); + return base64js.fromByteArray(new Uint8Array(outputBuffer)); + } + randomBytesBase64(count) { + const array = new Uint8Array(count); + window.crypto.getRandomValues(array); + return base64js.fromByteArray(array); + } + static padBase64(base64) { + while (base64.length % 4 !== 0) { + base64 += "="; + } + return base64; + } + async verify(pubkey, data, signature) { + const algo = { + name: "RSASSA-PKCS1-v1_5", + hash: { name: "SHA-256" } + }; + const dataArray = new TextEncoder().encode(data); + const signatureArray = base64js.toByteArray(_BrowserCrypto.padBase64(signature)); + const cryptoKey = await window.crypto.subtle.importKey("jwk", pubkey, algo, true, ["verify"]); + const result = await window.crypto.subtle.verify(algo, cryptoKey, signatureArray, dataArray); + return result; + } + async sign(privateKey, data) { + const algo = { + name: "RSASSA-PKCS1-v1_5", + hash: { name: "SHA-256" } + }; + const dataArray = new TextEncoder().encode(data); + const cryptoKey = await window.crypto.subtle.importKey("jwk", privateKey, algo, true, ["sign"]); + const result = await window.crypto.subtle.sign(algo, cryptoKey, dataArray); + return base64js.fromByteArray(new Uint8Array(result)); + } + decodeBase64StringUtf8(base64) { + const uint8array = base64js.toByteArray(_BrowserCrypto.padBase64(base64)); + const result = new TextDecoder().decode(uint8array); + return result; + } + encodeBase64StringUtf8(text) { + const uint8array = new TextEncoder().encode(text); + const result = base64js.fromByteArray(uint8array); + return result; + } + /** + * Computes the SHA-256 hash of the provided string. + * @param str The plain text string to hash. + * @return A promise that resolves with the SHA-256 hash of the provided + * string in hexadecimal encoding. + */ + async sha256DigestHex(str) { + const inputBuffer = new TextEncoder().encode(str); + const outputBuffer = await window.crypto.subtle.digest("SHA-256", inputBuffer); + return (0, shared_1.fromArrayBufferToHex)(outputBuffer); + } + /** + * Computes the HMAC hash of a message using the provided crypto key and the + * SHA-256 algorithm. + * @param key The secret crypto key in utf-8 or ArrayBuffer format. + * @param msg The plain text message. + * @return A promise that resolves with the HMAC-SHA256 hash in ArrayBuffer + * format. + */ + async signWithHmacSha256(key, msg) { + const rawKey = typeof key === "string" ? key : String.fromCharCode(...new Uint16Array(key)); + const enc = new TextEncoder(); + const cryptoKey = await window.crypto.subtle.importKey("raw", enc.encode(rawKey), { + name: "HMAC", + hash: { + name: "SHA-256" + } + }, false, ["sign"]); + return window.crypto.subtle.sign("HMAC", cryptoKey, enc.encode(msg)); + } + }; + exports.BrowserCrypto = BrowserCrypto; + } +}); + +// +var require_crypto2 = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeCrypto = void 0; + var crypto3 = __require("crypto"); + var NodeCrypto = class { + async sha256DigestBase64(str) { + return crypto3.createHash("sha256").update(str).digest("base64"); + } + randomBytesBase64(count) { + return crypto3.randomBytes(count).toString("base64"); + } + async verify(pubkey, data, signature) { + const verifier = crypto3.createVerify("RSA-SHA256"); + verifier.update(data); + verifier.end(); + return verifier.verify(pubkey, signature, "base64"); + } + async sign(privateKey, data) { + const signer = crypto3.createSign("RSA-SHA256"); + signer.update(data); + signer.end(); + return signer.sign(privateKey, "base64"); + } + decodeBase64StringUtf8(base64) { + return Buffer.from(base64, "base64").toString("utf-8"); + } + encodeBase64StringUtf8(text) { + return Buffer.from(text, "utf-8").toString("base64"); + } + /** + * Computes the SHA-256 hash of the provided string. + * @param str The plain text string to hash. + * @return A promise that resolves with the SHA-256 hash of the provided + * string in hexadecimal encoding. + */ + async sha256DigestHex(str) { + return crypto3.createHash("sha256").update(str).digest("hex"); + } + /** + * Computes the HMAC hash of a message using the provided crypto key and the + * SHA-256 algorithm. + * @param key The secret crypto key in utf-8 or ArrayBuffer format. + * @param msg The plain text message. + * @return A promise that resolves with the HMAC-SHA256 hash in ArrayBuffer + * format. + */ + async signWithHmacSha256(key, msg) { + const cryptoKey = typeof key === "string" ? key : toBuffer(key); + return toArrayBuffer(crypto3.createHmac("sha256", cryptoKey).update(msg).digest()); + } + }; + exports.NodeCrypto = NodeCrypto; + function toArrayBuffer(buffer) { + return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + } + function toBuffer(arrayBuffer) { + return Buffer.from(arrayBuffer); + } + } +}); + +// +var require_crypto3 = __commonJS({ + ""(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m2, k); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m2, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m2[k]; + }); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p in m2) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m2, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createCrypto = createCrypto; + exports.hasBrowserCrypto = hasBrowserCrypto; + var crypto_1 = require_crypto(); + var crypto_2 = require_crypto2(); + __exportStar(require_shared(), exports); + function createCrypto() { + if (hasBrowserCrypto()) { + return new crypto_1.BrowserCrypto(); + } + return new crypto_2.NodeCrypto(); + } + function hasBrowserCrypto() { + return typeof window !== "undefined" && typeof window.crypto !== "undefined" && typeof window.crypto.subtle !== "undefined"; + } + } +}); + +// +var require_safe_buffer = __commonJS({ + ""(exports, module) { + var buffer = __require("buffer"); + var Buffer4 = buffer.Buffer; + function copyProps(src, dst) { + for (var key in src) { + dst[key] = src[key]; + } + } + if (Buffer4.from && Buffer4.alloc && Buffer4.allocUnsafe && Buffer4.allocUnsafeSlow) { + module.exports = buffer; + } else { + copyProps(buffer, exports); + exports.Buffer = SafeBuffer; + } + function SafeBuffer(arg, encodingOrOffset, length) { + return Buffer4(arg, encodingOrOffset, length); + } + SafeBuffer.prototype = Object.create(Buffer4.prototype); + copyProps(Buffer4, SafeBuffer); + SafeBuffer.from = function(arg, encodingOrOffset, length) { + if (typeof arg === "number") { + throw new TypeError("Argument must not be a number"); + } + return Buffer4(arg, encodingOrOffset, length); + }; + SafeBuffer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + var buf = Buffer4(size); + if (fill !== void 0) { + if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf; + }; + SafeBuffer.allocUnsafe = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return Buffer4(size); + }; + SafeBuffer.allocUnsafeSlow = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return buffer.SlowBuffer(size); + }; + } +}); + +// +var require_param_bytes_for_alg = __commonJS({ + ""(exports, module) { + "use strict"; + function getParamSize(keySize) { + var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1); + return result; + } + var paramBytesForAlg = { + ES256: getParamSize(256), + ES384: getParamSize(384), + ES512: getParamSize(521) + }; + function getParamBytesForAlg(alg) { + var paramBytes = paramBytesForAlg[alg]; + if (paramBytes) { + return paramBytes; + } + throw new Error('Unknown algorithm "' + alg + '"'); + } + module.exports = getParamBytesForAlg; + } +}); + +// +var require_ecdsa_sig_formatter = __commonJS({ + ""(exports, module) { + "use strict"; + var Buffer4 = require_safe_buffer().Buffer; + var getParamBytesForAlg = require_param_bytes_for_alg(); + var MAX_OCTET = 128; + var CLASS_UNIVERSAL = 0; + var PRIMITIVE_BIT = 32; + var TAG_SEQ = 16; + var TAG_INT = 2; + var ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6; + var ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6; + function base64Url(base64) { + return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function signatureAsBuffer(signature) { + if (Buffer4.isBuffer(signature)) { + return signature; + } else if ("string" === typeof signature) { + return Buffer4.from(signature, "base64"); + } + throw new TypeError("ECDSA signature must be a Base64 string or a Buffer"); + } + function derToJose(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var maxEncodedParamLength = paramBytes + 1; + var inputLength = signature.length; + var offset = 0; + if (signature[offset++] !== ENCODED_TAG_SEQ) { + throw new Error('Could not find expected "seq"'); + } + var seqLength = signature[offset++]; + if (seqLength === (MAX_OCTET | 1)) { + seqLength = signature[offset++]; + } + if (inputLength - offset < seqLength) { + throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining'); + } + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "r"'); + } + var rLength = signature[offset++]; + if (inputLength - offset - 2 < rLength) { + throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available'); + } + if (maxEncodedParamLength < rLength) { + throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var rOffset = offset; + offset += rLength; + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "s"'); + } + var sLength = signature[offset++]; + if (inputLength - offset !== sLength) { + throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"'); + } + if (maxEncodedParamLength < sLength) { + throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var sOffset = offset; + offset += sLength; + if (offset !== inputLength) { + throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain'); + } + var rPadding = paramBytes - rLength, sPadding = paramBytes - sLength; + var dst = Buffer4.allocUnsafe(rPadding + rLength + sPadding + sLength); + for (offset = 0; offset < rPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength); + offset = paramBytes; + for (var o = offset; offset < o + sPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength); + dst = dst.toString("base64"); + dst = base64Url(dst); + return dst; + } + function countPadding(buf, start, stop) { + var padding = 0; + while (start + padding < stop && buf[start + padding] === 0) { + ++padding; + } + var needsSign = buf[start + padding] >= MAX_OCTET; + if (needsSign) { + --padding; + } + return padding; + } + function joseToDer(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var signatureBytes = signature.length; + if (signatureBytes !== paramBytes * 2) { + throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"'); + } + var rPadding = countPadding(signature, 0, paramBytes); + var sPadding = countPadding(signature, paramBytes, signature.length); + var rLength = paramBytes - rPadding; + var sLength = paramBytes - sPadding; + var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength; + var shortLength = rsBytes < MAX_OCTET; + var dst = Buffer4.allocUnsafe((shortLength ? 2 : 3) + rsBytes); + var offset = 0; + dst[offset++] = ENCODED_TAG_SEQ; + if (shortLength) { + dst[offset++] = rsBytes; + } else { + dst[offset++] = MAX_OCTET | 1; + dst[offset++] = rsBytes & 255; + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = rLength; + if (rPadding < 0) { + dst[offset++] = 0; + offset += signature.copy(dst, offset, 0, paramBytes); + } else { + offset += signature.copy(dst, offset, rPadding, paramBytes); + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = sLength; + if (sPadding < 0) { + dst[offset++] = 0; + signature.copy(dst, offset, paramBytes); + } else { + signature.copy(dst, offset, paramBytes + sPadding); + } + return dst; + } + module.exports = { + derToJose, + joseToDer + }; + } +}); + +// +var require_util10 = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.LRUCache = void 0; + exports.snakeToCamel = snakeToCamel; + exports.originalOrCamelOptions = originalOrCamelOptions; + exports.removeUndefinedValuesInObject = removeUndefinedValuesInObject; + exports.isValidFile = isValidFile; + exports.getWellKnownCertificateConfigFileLocation = getWellKnownCertificateConfigFileLocation; + var fs5 = __require("fs"); + var os7 = __require("os"); + var path7 = __require("path"); + var WELL_KNOWN_CERTIFICATE_CONFIG_FILE = "certificate_config.json"; + var CLOUDSDK_CONFIG_DIRECTORY = "gcloud"; + function snakeToCamel(str) { + return str.replace(/([_][^_])/g, (match) => match.slice(1).toUpperCase()); + } + function originalOrCamelOptions(obj) { + function get2(key) { + const o = obj || {}; + return o[key] ?? o[snakeToCamel(key)]; + } + return { get: get2 }; + } + var LRUCache = class { + capacity; + /** + * Maps are in order. Thus, the older item is the first item. + * + * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map} + */ + #cache = /* @__PURE__ */ new Map(); + maxAge; + constructor(options) { + this.capacity = options.capacity; + this.maxAge = options.maxAge; + } + /** + * Moves the key to the end of the cache. + * + * @param key the key to move + * @param value the value of the key + */ + #moveToEnd(key, value) { + this.#cache.delete(key); + this.#cache.set(key, { + value, + lastAccessed: Date.now() + }); + } + /** + * Add an item to the cache. + * + * @param key the key to upsert + * @param value the value of the key + */ + set(key, value) { + this.#moveToEnd(key, value); + this.#evict(); + } + /** + * Get an item from the cache. + * + * @param key the key to retrieve + */ + get(key) { + const item = this.#cache.get(key); + if (!item) + return; + this.#moveToEnd(key, item.value); + this.#evict(); + return item.value; + } + /** + * Maintain the cache based on capacity and TTL. + */ + #evict() { + const cutoffDate = this.maxAge ? Date.now() - this.maxAge : 0; + let oldestItem = this.#cache.entries().next(); + while (!oldestItem.done && (this.#cache.size > this.capacity || // too many + oldestItem.value[1].lastAccessed < cutoffDate)) { + this.#cache.delete(oldestItem.value[0]); + oldestItem = this.#cache.entries().next(); + } + } + }; + exports.LRUCache = LRUCache; + function removeUndefinedValuesInObject(object) { + Object.entries(object).forEach(([key, value]) => { + if (value === void 0 || value === "undefined") { + delete object[key]; + } + }); + return object; + } + async function isValidFile(filePath) { + try { + const stats = await fs5.promises.lstat(filePath); + return stats.isFile(); + } catch (e2) { + return false; + } + } + function getWellKnownCertificateConfigFileLocation() { + const configDir = process.env.CLOUDSDK_CONFIG || (_isWindows() ? path7.join(process.env.APPDATA || "", CLOUDSDK_CONFIG_DIRECTORY) : path7.join(process.env.HOME || "", ".config", CLOUDSDK_CONFIG_DIRECTORY)); + return path7.join(configDir, WELL_KNOWN_CERTIFICATE_CONFIG_FILE); + } + function _isWindows() { + return os7.platform().startsWith("win"); + } + } +}); + +// +var require_package2 = __commonJS({ + ""(exports, module) { + module.exports = { + name: "google-auth-library", + version: "10.5.0", + author: "Google Inc.", + description: "Google APIs Authentication Client Library for Node.js", + engines: { + node: ">=18" + }, + main: "./build/src/index.js", + types: "./build/src/index.d.ts", + repository: "googleapis/google-auth-library-nodejs.git", + keywords: [ + "google", + "api", + "google apis", + "client", + "client library" + ], + dependencies: { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + gaxios: "^7.0.0", + "gcp-metadata": "^8.0.0", + "google-logging-utils": "^1.0.0", + gtoken: "^8.0.0", + jws: "^4.0.0" + }, + devDependencies: { + "@types/base64-js": "^1.2.5", + "@types/jws": "^3.1.0", + "@types/mocha": "^10.0.10", + "@types/mv": "^2.1.0", + "@types/ncp": "^2.0.1", + "@types/node": "^22.0.0", + "@types/sinon": "^17.0.0", + "assert-rejects": "^1.0.0", + c8: "^10.0.0", + codecov: "^3.0.2", + gts: "^6.0.0", + "is-docker": "^3.0.0", + jsdoc: "^4.0.0", + "jsdoc-fresh": "^5.0.0", + "jsdoc-region-tag": "^4.0.0", + karma: "^6.0.0", + "karma-chrome-launcher": "^3.0.0", + "karma-coverage": "^2.0.0", + "karma-firefox-launcher": "^2.0.0", + "karma-mocha": "^2.0.0", + "karma-sourcemap-loader": "^0.4.0", + "karma-webpack": "^5.0.1", + keypair: "^1.0.4", + mocha: "^11.1.0", + mv: "^2.1.1", + ncp: "^2.0.0", + nock: "^14.0.5", + "null-loader": "^4.0.0", + puppeteer: "^24.0.0", + sinon: "^21.0.0", + "ts-loader": "^8.0.0", + typescript: "5.8.2", + webpack: "^5.21.2", + "webpack-cli": "^4.0.0" + }, + files: [ + "build/src", + "!build/src/**/*.map" + ], + scripts: { + test: "c8 mocha build/test", + clean: "gts clean", + prepare: "npm run compile", + lint: "gts check --no-inline-config", + compile: "tsc -p .", + fix: "gts fix", + pretest: "npm run compile -- --sourceMap", + docs: "jsdoc -c .jsdoc.js", + "samples-setup": "cd samples/ && npm link ../ && npm run setup && cd ../", + "samples-test": "cd samples/ && npm link ../ && npm test && cd ../", + "system-test": "mocha build/system-test --timeout 60000", + "presystem-test": "npm run compile -- --sourceMap", + webpack: "webpack", + "browser-test": "karma start", + "docs-test": "echo 'disabled until linkinator is fixed'", + "predocs-test": "npm run docs", + prelint: "cd samples; npm link ../; npm install" + }, + license: "Apache-2.0" + }; + } +}); + +// +var require_shared2 = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.USER_AGENT = exports.PRODUCT_NAME = exports.pkg = void 0; + var pkg = require_package2(); + exports.pkg = pkg; + var PRODUCT_NAME = "google-api-nodejs-client"; + exports.PRODUCT_NAME = PRODUCT_NAME; + var USER_AGENT = `${PRODUCT_NAME}/${pkg.version}`; + exports.USER_AGENT = USER_AGENT; + } +}); + +// +var require_authclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AuthClient = exports.DEFAULT_EAGER_REFRESH_THRESHOLD_MILLIS = exports.DEFAULT_UNIVERSE = void 0; + var events_1 = __require("events"); + var gaxios_1 = require_src2(); + var util_1 = require_util10(); + var google_logging_utils_1 = require_src3(); + var shared_cjs_1 = require_shared2(); + exports.DEFAULT_UNIVERSE = "googleapis.com"; + exports.DEFAULT_EAGER_REFRESH_THRESHOLD_MILLIS = 5 * 60 * 1e3; + var AuthClient = class _AuthClient extends events_1.EventEmitter { + apiKey; + projectId; + /** + * The quota project ID. The quota project can be used by client libraries for the billing purpose. + * See {@link https://cloud.google.com/docs/quota Working with quotas} + */ + quotaProjectId; + /** + * The {@link Gaxios `Gaxios`} instance used for making requests. + */ + transporter; + credentials = {}; + eagerRefreshThresholdMillis = exports.DEFAULT_EAGER_REFRESH_THRESHOLD_MILLIS; + forceRefreshOnFailure = false; + universeDomain = exports.DEFAULT_UNIVERSE; + /** + * Symbols that can be added to GaxiosOptions to specify the method name that is + * making an RPC call, for logging purposes, as well as a string ID that can be + * used to correlate calls and responses. + */ + static RequestMethodNameSymbol = Symbol("request method name"); + static RequestLogIdSymbol = Symbol("request log id"); + constructor(opts = {}) { + super(); + const options = (0, util_1.originalOrCamelOptions)(opts); + this.apiKey = opts.apiKey; + this.projectId = options.get("project_id") ?? null; + this.quotaProjectId = options.get("quota_project_id"); + this.credentials = options.get("credentials") ?? {}; + this.universeDomain = options.get("universe_domain") ?? exports.DEFAULT_UNIVERSE; + this.transporter = opts.transporter ?? new gaxios_1.Gaxios(opts.transporterOptions); + if (options.get("useAuthRequestParameters") !== false) { + this.transporter.interceptors.request.add(_AuthClient.DEFAULT_REQUEST_INTERCEPTOR); + this.transporter.interceptors.response.add(_AuthClient.DEFAULT_RESPONSE_INTERCEPTOR); + } + if (opts.eagerRefreshThresholdMillis) { + this.eagerRefreshThresholdMillis = opts.eagerRefreshThresholdMillis; + } + this.forceRefreshOnFailure = opts.forceRefreshOnFailure ?? false; + } + /** + * A {@link fetch `fetch`} compliant API for {@link AuthClient}. + * + * @see {@link AuthClient.request} for the classic method. + * + * @remarks + * + * This is useful as a drop-in replacement for `fetch` API usage. + * + * @example + * + * ```ts + * const authClient = new AuthClient(); + * const fetchWithAuthClient: typeof fetch = (...args) => authClient.fetch(...args); + * await fetchWithAuthClient('https://example.com'); + * ``` + * + * @param args `fetch` API or {@link Gaxios.fetch `Gaxios#fetch`} parameters + * @returns the {@link GaxiosResponse} with Gaxios-added properties + */ + fetch(...args) { + const input = args[0]; + const init = args[1]; + let url = void 0; + const headers = new Headers(); + if (typeof input === "string") { + url = new URL(input); + } else if (input instanceof URL) { + url = input; + } else if (input && input.url) { + url = new URL(input.url); + } + if (input && typeof input === "object" && "headers" in input) { + gaxios_1.Gaxios.mergeHeaders(headers, input.headers); + } + if (init) { + gaxios_1.Gaxios.mergeHeaders(headers, new Headers(init.headers)); + } + if (typeof input === "object" && !(input instanceof URL)) { + return this.request({ ...init, ...input, headers, url }); + } else { + return this.request({ ...init, headers, url }); + } + } + /** + * Sets the auth credentials. + */ + setCredentials(credentials) { + this.credentials = credentials; + } + /** + * Append additional headers, e.g., x-goog-user-project, shared across the + * classes inheriting AuthClient. This method should be used by any method + * that overrides getRequestMetadataAsync(), which is a shared helper for + * setting request information in both gRPC and HTTP API calls. + * + * @param headers object to append additional headers to. + */ + addSharedMetadataHeaders(headers) { + if (!headers.has("x-goog-user-project") && // don't override a value the user sets. + this.quotaProjectId) { + headers.set("x-goog-user-project", this.quotaProjectId); + } + return headers; + } + /** + * Adds the `x-goog-user-project` and `authorization` headers to the target Headers + * object, if they exist on the source. + * + * @param target the headers to target + * @param source the headers to source from + * @returns the target headers + */ + addUserProjectAndAuthHeaders(target, source) { + const xGoogUserProject = source.get("x-goog-user-project"); + const authorizationHeader = source.get("authorization"); + if (xGoogUserProject) { + target.set("x-goog-user-project", xGoogUserProject); + } + if (authorizationHeader) { + target.set("authorization", authorizationHeader); + } + return target; + } + static log = (0, google_logging_utils_1.log)("auth"); + static DEFAULT_REQUEST_INTERCEPTOR = { + resolved: async (config) => { + if (!config.headers.has("x-goog-api-client")) { + const nodeVersion = process.version.replace(/^v/, ""); + config.headers.set("x-goog-api-client", `gl-node/${nodeVersion}`); + } + const userAgent2 = config.headers.get("User-Agent"); + if (!userAgent2) { + config.headers.set("User-Agent", shared_cjs_1.USER_AGENT); + } else if (!userAgent2.includes(`${shared_cjs_1.PRODUCT_NAME}/`)) { + config.headers.set("User-Agent", `${userAgent2} ${shared_cjs_1.USER_AGENT}`); + } + try { + const symbols = config; + const methodName = symbols[_AuthClient.RequestMethodNameSymbol]; + const logId = `${Math.floor(Math.random() * 1e3)}`; + symbols[_AuthClient.RequestLogIdSymbol] = logId; + const logObject = { + url: config.url, + headers: config.headers + }; + if (methodName) { + _AuthClient.log.info("%s [%s] request %j", methodName, logId, logObject); + } else { + _AuthClient.log.info("[%s] request %j", logId, logObject); + } + } catch (e2) { + } + return config; + } + }; + static DEFAULT_RESPONSE_INTERCEPTOR = { + resolved: async (response) => { + try { + const symbols = response.config; + const methodName = symbols[_AuthClient.RequestMethodNameSymbol]; + const logId = symbols[_AuthClient.RequestLogIdSymbol]; + if (methodName) { + _AuthClient.log.info("%s [%s] response %j", methodName, logId, response.data); + } else { + _AuthClient.log.info("[%s] response %j", logId, response.data); + } + } catch (e2) { + } + return response; + }, + rejected: async (error2) => { + try { + const symbols = error2.config; + const methodName = symbols[_AuthClient.RequestMethodNameSymbol]; + const logId = symbols[_AuthClient.RequestLogIdSymbol]; + if (methodName) { + _AuthClient.log.info("%s [%s] error %j", methodName, logId, error2.response?.data); + } else { + _AuthClient.log.error("[%s] error %j", logId, error2.response?.data); + } + } catch (e2) { + } + throw error2; + } + }; + /** + * Sets the method name that is making a Gaxios request, so that logging may tag + * log lines with the operation. + * @param config A Gaxios request config + * @param methodName The method name making the call + */ + static setMethodName(config, methodName) { + try { + const symbols = config; + symbols[_AuthClient.RequestMethodNameSymbol] = methodName; + } catch (e2) { + } + } + /** + * Retry config for Auth-related requests. + * + * @remarks + * + * This is not a part of the default {@link AuthClient.transporter transporter/gaxios} + * config as some downstream APIs would prefer if customers explicitly enable retries, + * such as GCS. + */ + static get RETRY_CONFIG() { + return { + retry: true, + retryConfig: { + httpMethodsToRetry: ["GET", "PUT", "POST", "HEAD", "OPTIONS", "DELETE"] + } + }; + } + }; + exports.AuthClient = AuthClient; + } +}); + +// +var require_loginticket = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.LoginTicket = void 0; + var LoginTicket = class { + envelope; + payload; + /** + * Create a simple class to extract user ID from an ID Token + * + * @param {string} env Envelope of the jwt + * @param {TokenPayload} pay Payload of the jwt + * @constructor + */ + constructor(env2, pay) { + this.envelope = env2; + this.payload = pay; + } + getEnvelope() { + return this.envelope; + } + getPayload() { + return this.payload; + } + /** + * Create a simple class to extract user ID from an ID Token + * + * @return The user ID + */ + getUserId() { + const payload = this.getPayload(); + if (payload && payload.sub) { + return payload.sub; + } + return null; + } + /** + * Returns attributes from the login ticket. This can contain + * various information about the user session. + * + * @return The envelope and payload + */ + getAttributes() { + return { envelope: this.getEnvelope(), payload: this.getPayload() }; + } + }; + exports.LoginTicket = LoginTicket; + } +}); + +// +var require_oauth2client = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.OAuth2Client = exports.ClientAuthentication = exports.CertificateFormat = exports.CodeChallengeMethod = void 0; + var gaxios_1 = require_src2(); + var querystring = __require("querystring"); + var stream = __require("stream"); + var formatEcdsa = require_ecdsa_sig_formatter(); + var util_1 = require_util10(); + var crypto_1 = require_crypto3(); + var authclient_1 = require_authclient(); + var loginticket_1 = require_loginticket(); + var CodeChallengeMethod; + (function(CodeChallengeMethod2) { + CodeChallengeMethod2["Plain"] = "plain"; + CodeChallengeMethod2["S256"] = "S256"; + })(CodeChallengeMethod || (exports.CodeChallengeMethod = CodeChallengeMethod = {})); + var CertificateFormat; + (function(CertificateFormat2) { + CertificateFormat2["PEM"] = "PEM"; + CertificateFormat2["JWK"] = "JWK"; + })(CertificateFormat || (exports.CertificateFormat = CertificateFormat = {})); + var ClientAuthentication; + (function(ClientAuthentication2) { + ClientAuthentication2["ClientSecretPost"] = "ClientSecretPost"; + ClientAuthentication2["ClientSecretBasic"] = "ClientSecretBasic"; + ClientAuthentication2["None"] = "None"; + })(ClientAuthentication || (exports.ClientAuthentication = ClientAuthentication = {})); + var OAuth2Client = class _OAuth2Client extends authclient_1.AuthClient { + redirectUri; + certificateCache = {}; + certificateExpiry = null; + certificateCacheFormat = CertificateFormat.PEM; + refreshTokenPromises = /* @__PURE__ */ new Map(); + endpoints; + issuers; + clientAuthentication; + // TODO: refactor tests to make this private + _clientId; + // TODO: refactor tests to make this private + _clientSecret; + refreshHandler; + /** + * An OAuth2 Client for Google APIs. + * + * @param options The OAuth2 Client Options. Passing an `clientId` directly is **@DEPRECATED**. + * @param clientSecret **@DEPRECATED**. Provide a {@link OAuth2ClientOptions `OAuth2ClientOptions`} object in the first parameter instead. + * @param redirectUri **@DEPRECATED**. Provide a {@link OAuth2ClientOptions `OAuth2ClientOptions`} object in the first parameter instead. + */ + constructor(options = {}, clientSecret, redirectUri) { + super(typeof options === "object" ? options : {}); + if (typeof options !== "object") { + options = { + clientId: options, + clientSecret, + redirectUri + }; + } + this._clientId = options.clientId || options.client_id; + this._clientSecret = options.clientSecret || options.client_secret; + this.redirectUri = options.redirectUri || options.redirect_uris?.[0]; + this.endpoints = { + tokenInfoUrl: "https://oauth2.googleapis.com/tokeninfo", + oauth2AuthBaseUrl: "https://accounts.google.com/o/oauth2/v2/auth", + oauth2TokenUrl: "https://oauth2.googleapis.com/token", + oauth2RevokeUrl: "https://oauth2.googleapis.com/revoke", + oauth2FederatedSignonPemCertsUrl: "https://www.googleapis.com/oauth2/v1/certs", + oauth2FederatedSignonJwkCertsUrl: "https://www.googleapis.com/oauth2/v3/certs", + oauth2IapPublicKeyUrl: "https://www.gstatic.com/iap/verify/public_key", + ...options.endpoints + }; + this.clientAuthentication = options.clientAuthentication || ClientAuthentication.ClientSecretPost; + this.issuers = options.issuers || [ + "accounts.google.com", + "https://accounts.google.com", + this.universeDomain + ]; + } + /** + * @deprecated use instance's {@link OAuth2Client.endpoints} + */ + static GOOGLE_TOKEN_INFO_URL = "https://oauth2.googleapis.com/tokeninfo"; + /** + * Clock skew - five minutes in seconds + */ + static CLOCK_SKEW_SECS_ = 300; + /** + * The default max Token Lifetime is one day in seconds + */ + static DEFAULT_MAX_TOKEN_LIFETIME_SECS_ = 86400; + /** + * Generates URL for consent page landing. + * @param opts Options. + * @return URL to consent page. + */ + generateAuthUrl(opts = {}) { + if (opts.code_challenge_method && !opts.code_challenge) { + throw new Error("If a code_challenge_method is provided, code_challenge must be included."); + } + opts.response_type = opts.response_type || "code"; + opts.client_id = opts.client_id || this._clientId; + opts.redirect_uri = opts.redirect_uri || this.redirectUri; + if (Array.isArray(opts.scope)) { + opts.scope = opts.scope.join(" "); + } + const rootUrl = this.endpoints.oauth2AuthBaseUrl.toString(); + return rootUrl + "?" + querystring.stringify(opts); + } + generateCodeVerifier() { + throw new Error("generateCodeVerifier is removed, please use generateCodeVerifierAsync instead."); + } + /** + * Convenience method to automatically generate a code_verifier, and its + * resulting SHA256. If used, this must be paired with a S256 + * code_challenge_method. + * + * For a full example see: + * https://github.com/googleapis/google-auth-library-nodejs/blob/main/samples/oauth2-codeVerifier.js + */ + async generateCodeVerifierAsync() { + const crypto3 = (0, crypto_1.createCrypto)(); + const randomString = crypto3.randomBytesBase64(96); + const codeVerifier = randomString.replace(/\+/g, "~").replace(/=/g, "_").replace(/\//g, "-"); + const unencodedCodeChallenge = await crypto3.sha256DigestBase64(codeVerifier); + const codeChallenge = unencodedCodeChallenge.split("=")[0].replace(/\+/g, "-").replace(/\//g, "_"); + return { codeVerifier, codeChallenge }; + } + getToken(codeOrOptions, callback) { + const options = typeof codeOrOptions === "string" ? { code: codeOrOptions } : codeOrOptions; + if (callback) { + this.getTokenAsync(options).then((r2) => callback(null, r2.tokens, r2.res), (e2) => callback(e2, null, e2.response)); + } else { + return this.getTokenAsync(options); + } + } + async getTokenAsync(options) { + const url = this.endpoints.oauth2TokenUrl.toString(); + const headers = new Headers(); + const values = { + client_id: options.client_id || this._clientId, + code_verifier: options.codeVerifier, + code: options.code, + grant_type: "authorization_code", + redirect_uri: options.redirect_uri || this.redirectUri + }; + if (this.clientAuthentication === ClientAuthentication.ClientSecretBasic) { + const basic = Buffer.from(`${this._clientId}:${this._clientSecret}`); + headers.set("authorization", `Basic ${basic.toString("base64")}`); + } + if (this.clientAuthentication === ClientAuthentication.ClientSecretPost) { + values.client_secret = this._clientSecret; + } + const opts = { + ..._OAuth2Client.RETRY_CONFIG, + method: "POST", + url, + data: new URLSearchParams((0, util_1.removeUndefinedValuesInObject)(values)), + headers + }; + authclient_1.AuthClient.setMethodName(opts, "getTokenAsync"); + const res = await this.transporter.request(opts); + const tokens = res.data; + if (res.data && res.data.expires_in) { + tokens.expiry_date = (/* @__PURE__ */ new Date()).getTime() + res.data.expires_in * 1e3; + delete tokens.expires_in; + } + this.emit("tokens", tokens); + return { tokens, res }; + } + /** + * Refreshes the access token. + * @param refresh_token Existing refresh token. + * @private + */ + async refreshToken(refreshToken2) { + if (!refreshToken2) { + return this.refreshTokenNoCache(refreshToken2); + } + if (this.refreshTokenPromises.has(refreshToken2)) { + return this.refreshTokenPromises.get(refreshToken2); + } + const p = this.refreshTokenNoCache(refreshToken2).then((r2) => { + this.refreshTokenPromises.delete(refreshToken2); + return r2; + }, (e2) => { + this.refreshTokenPromises.delete(refreshToken2); + throw e2; + }); + this.refreshTokenPromises.set(refreshToken2, p); + return p; + } + async refreshTokenNoCache(refreshToken2) { + if (!refreshToken2) { + throw new Error("No refresh token is set."); + } + const url = this.endpoints.oauth2TokenUrl.toString(); + const data = { + refresh_token: refreshToken2, + client_id: this._clientId, + client_secret: this._clientSecret, + grant_type: "refresh_token" + }; + let res; + try { + const opts = { + ..._OAuth2Client.RETRY_CONFIG, + method: "POST", + url, + data: new URLSearchParams((0, util_1.removeUndefinedValuesInObject)(data)) + }; + authclient_1.AuthClient.setMethodName(opts, "refreshTokenNoCache"); + res = await this.transporter.request(opts); + } catch (e2) { + if (e2 instanceof gaxios_1.GaxiosError && e2.message === "invalid_grant" && e2.response?.data && /ReAuth/i.test(e2.response.data.error_description)) { + e2.message = JSON.stringify(e2.response.data); + } + throw e2; + } + const tokens = res.data; + if (res.data && res.data.expires_in) { + tokens.expiry_date = (/* @__PURE__ */ new Date()).getTime() + res.data.expires_in * 1e3; + delete tokens.expires_in; + } + this.emit("tokens", tokens); + return { tokens, res }; + } + refreshAccessToken(callback) { + if (callback) { + this.refreshAccessTokenAsync().then((r2) => callback(null, r2.credentials, r2.res), callback); + } else { + return this.refreshAccessTokenAsync(); + } + } + async refreshAccessTokenAsync() { + const r2 = await this.refreshToken(this.credentials.refresh_token); + const tokens = r2.tokens; + tokens.refresh_token = this.credentials.refresh_token; + this.credentials = tokens; + return { credentials: this.credentials, res: r2.res }; + } + getAccessToken(callback) { + if (callback) { + this.getAccessTokenAsync().then((r2) => callback(null, r2.token, r2.res), callback); + } else { + return this.getAccessTokenAsync(); + } + } + async getAccessTokenAsync() { + const shouldRefresh = !this.credentials.access_token || this.isTokenExpiring(); + if (shouldRefresh) { + if (!this.credentials.refresh_token) { + if (this.refreshHandler) { + const refreshedAccessToken = await this.processAndValidateRefreshHandler(); + if (refreshedAccessToken?.access_token) { + this.setCredentials(refreshedAccessToken); + return { token: this.credentials.access_token }; + } + } else { + throw new Error("No refresh token or refresh handler callback is set."); + } + } + const r2 = await this.refreshAccessTokenAsync(); + if (!r2.credentials || r2.credentials && !r2.credentials.access_token) { + throw new Error("Could not refresh access token."); + } + return { token: r2.credentials.access_token, res: r2.res }; + } else { + return { token: this.credentials.access_token }; + } + } + /** + * The main authentication interface. It takes an optional url which when + * present is the endpoint being accessed, and returns a Promise which + * resolves with authorization header fields. + * + * In OAuth2Client, the result has the form: + * { authorization: 'Bearer ' } + */ + async getRequestHeaders(url) { + const headers = (await this.getRequestMetadataAsync(url)).headers; + return headers; + } + async getRequestMetadataAsync(url) { + url; + const thisCreds = this.credentials; + if (!thisCreds.access_token && !thisCreds.refresh_token && !this.apiKey && !this.refreshHandler) { + throw new Error("No access, refresh token, API key or refresh handler callback is set."); + } + if (thisCreds.access_token && !this.isTokenExpiring()) { + thisCreds.token_type = thisCreds.token_type || "Bearer"; + const headers2 = new Headers({ + authorization: thisCreds.token_type + " " + thisCreds.access_token + }); + return { headers: this.addSharedMetadataHeaders(headers2) }; + } + if (this.refreshHandler) { + const refreshedAccessToken = await this.processAndValidateRefreshHandler(); + if (refreshedAccessToken?.access_token) { + this.setCredentials(refreshedAccessToken); + const headers2 = new Headers({ + authorization: "Bearer " + this.credentials.access_token + }); + return { headers: this.addSharedMetadataHeaders(headers2) }; + } + } + if (this.apiKey) { + return { headers: new Headers({ "X-Goog-Api-Key": this.apiKey }) }; + } + let r2 = null; + let tokens = null; + try { + r2 = await this.refreshToken(thisCreds.refresh_token); + tokens = r2.tokens; + } catch (err) { + const e2 = err; + if (e2.response && (e2.response.status === 403 || e2.response.status === 404)) { + e2.message = `Could not refresh access token: ${e2.message}`; + } + throw e2; + } + const credentials = this.credentials; + credentials.token_type = credentials.token_type || "Bearer"; + tokens.refresh_token = credentials.refresh_token; + this.credentials = tokens; + const headers = new Headers({ + authorization: credentials.token_type + " " + tokens.access_token + }); + return { headers: this.addSharedMetadataHeaders(headers), res: r2.res }; + } + /** + * Generates an URL to revoke the given token. + * @param token The existing token to be revoked. + * + * @deprecated use instance method {@link OAuth2Client.getRevokeTokenURL} + */ + static getRevokeTokenUrl(token) { + return new _OAuth2Client().getRevokeTokenURL(token).toString(); + } + /** + * Generates a URL to revoke the given token. + * + * @param token The existing token to be revoked. + */ + getRevokeTokenURL(token) { + const url = new URL(this.endpoints.oauth2RevokeUrl); + url.searchParams.append("token", token); + return url; + } + revokeToken(token, callback) { + const opts = { + ..._OAuth2Client.RETRY_CONFIG, + url: this.getRevokeTokenURL(token).toString(), + method: "POST" + }; + authclient_1.AuthClient.setMethodName(opts, "revokeToken"); + if (callback) { + this.transporter.request(opts).then((r2) => callback(null, r2), callback); + } else { + return this.transporter.request(opts); + } + } + revokeCredentials(callback) { + if (callback) { + this.revokeCredentialsAsync().then((res) => callback(null, res), callback); + } else { + return this.revokeCredentialsAsync(); + } + } + async revokeCredentialsAsync() { + const token = this.credentials.access_token; + this.credentials = {}; + if (token) { + return this.revokeToken(token); + } else { + throw new Error("No access token to revoke."); + } + } + request(opts, callback) { + if (callback) { + this.requestAsync(opts).then((r2) => callback(null, r2), (e2) => { + return callback(e2, e2.response); + }); + } else { + return this.requestAsync(opts); + } + } + async requestAsync(opts, reAuthRetried = false) { + try { + const r2 = await this.getRequestMetadataAsync(); + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers); + this.addUserProjectAndAuthHeaders(opts.headers, r2.headers); + if (this.apiKey) { + opts.headers.set("X-Goog-Api-Key", this.apiKey); + } + return await this.transporter.request(opts); + } catch (e2) { + const res = e2.response; + if (res) { + const statusCode = res.status; + const mayRequireRefresh = this.credentials && this.credentials.access_token && this.credentials.refresh_token && (!this.credentials.expiry_date || this.forceRefreshOnFailure); + const mayRequireRefreshWithNoRefreshToken = this.credentials && this.credentials.access_token && !this.credentials.refresh_token && (!this.credentials.expiry_date || this.forceRefreshOnFailure) && this.refreshHandler; + const isReadableStream = res.config.data instanceof stream.Readable; + const isAuthErr = statusCode === 401 || statusCode === 403; + if (!reAuthRetried && isAuthErr && !isReadableStream && mayRequireRefresh) { + await this.refreshAccessTokenAsync(); + return this.requestAsync(opts, true); + } else if (!reAuthRetried && isAuthErr && !isReadableStream && mayRequireRefreshWithNoRefreshToken) { + const refreshedAccessToken = await this.processAndValidateRefreshHandler(); + if (refreshedAccessToken?.access_token) { + this.setCredentials(refreshedAccessToken); + } + return this.requestAsync(opts, true); + } + } + throw e2; + } + } + verifyIdToken(options, callback) { + if (callback && typeof callback !== "function") { + throw new Error("This method accepts an options object as the first parameter, which includes the idToken, audience, and maxExpiry."); + } + if (callback) { + this.verifyIdTokenAsync(options).then((r2) => callback(null, r2), callback); + } else { + return this.verifyIdTokenAsync(options); + } + } + async verifyIdTokenAsync(options) { + if (!options.idToken) { + throw new Error("The verifyIdToken method requires an ID Token"); + } + const response = await this.getFederatedSignonCertsAsync(); + const login = await this.verifySignedJwtWithCertsAsync(options.idToken, response.certs, options.audience, this.issuers, options.maxExpiry); + return login; + } + /** + * Obtains information about the provisioned access token. Especially useful + * if you want to check the scopes that were provisioned to a given token. + * + * @param accessToken Required. The Access Token for which you want to get + * user info. + */ + async getTokenInfo(accessToken) { + const { data } = await this.transporter.request({ + ..._OAuth2Client.RETRY_CONFIG, + method: "POST", + headers: { + "content-type": "application/x-www-form-urlencoded;charset=UTF-8", + authorization: `Bearer ${accessToken}` + }, + url: this.endpoints.tokenInfoUrl.toString() + }); + const info2 = Object.assign({ + expiry_date: (/* @__PURE__ */ new Date()).getTime() + data.expires_in * 1e3, + scopes: data.scope.split(" ") + }, data); + delete info2.expires_in; + delete info2.scope; + return info2; + } + getFederatedSignonCerts(callback) { + if (callback) { + this.getFederatedSignonCertsAsync().then((r2) => callback(null, r2.certs, r2.res), callback); + } else { + return this.getFederatedSignonCertsAsync(); + } + } + async getFederatedSignonCertsAsync() { + const nowTime = (/* @__PURE__ */ new Date()).getTime(); + const format = (0, crypto_1.hasBrowserCrypto)() ? CertificateFormat.JWK : CertificateFormat.PEM; + if (this.certificateExpiry && nowTime < this.certificateExpiry.getTime() && this.certificateCacheFormat === format) { + return { certs: this.certificateCache, format }; + } + let res; + let url; + switch (format) { + case CertificateFormat.PEM: + url = this.endpoints.oauth2FederatedSignonPemCertsUrl.toString(); + break; + case CertificateFormat.JWK: + url = this.endpoints.oauth2FederatedSignonJwkCertsUrl.toString(); + break; + default: + throw new Error(`Unsupported certificate format ${format}`); + } + try { + const opts = { + ..._OAuth2Client.RETRY_CONFIG, + url + }; + authclient_1.AuthClient.setMethodName(opts, "getFederatedSignonCertsAsync"); + res = await this.transporter.request(opts); + } catch (e2) { + if (e2 instanceof Error) { + e2.message = `Failed to retrieve verification certificates: ${e2.message}`; + } + throw e2; + } + const cacheControl = res?.headers.get("cache-control"); + let cacheAge = -1; + if (cacheControl) { + const maxAge = /max-age=(?[0-9]+)/.exec(cacheControl)?.groups?.maxAge; + if (maxAge) { + cacheAge = Number(maxAge) * 1e3; + } + } + let certificates = {}; + switch (format) { + case CertificateFormat.PEM: + certificates = res.data; + break; + case CertificateFormat.JWK: + for (const key of res.data.keys) { + certificates[key.kid] = key; + } + break; + default: + throw new Error(`Unsupported certificate format ${format}`); + } + const now = /* @__PURE__ */ new Date(); + this.certificateExpiry = cacheAge === -1 ? null : new Date(now.getTime() + cacheAge); + this.certificateCache = certificates; + this.certificateCacheFormat = format; + return { certs: certificates, format, res }; + } + getIapPublicKeys(callback) { + if (callback) { + this.getIapPublicKeysAsync().then((r2) => callback(null, r2.pubkeys, r2.res), callback); + } else { + return this.getIapPublicKeysAsync(); + } + } + async getIapPublicKeysAsync() { + let res; + const url = this.endpoints.oauth2IapPublicKeyUrl.toString(); + try { + const opts = { + ..._OAuth2Client.RETRY_CONFIG, + url + }; + authclient_1.AuthClient.setMethodName(opts, "getIapPublicKeysAsync"); + res = await this.transporter.request(opts); + } catch (e2) { + if (e2 instanceof Error) { + e2.message = `Failed to retrieve verification certificates: ${e2.message}`; + } + throw e2; + } + return { pubkeys: res.data, res }; + } + verifySignedJwtWithCerts() { + throw new Error("verifySignedJwtWithCerts is removed, please use verifySignedJwtWithCertsAsync instead."); + } + /** + * Verify the id token is signed with the correct certificate + * and is from the correct audience. + * @param jwt The jwt to verify (The ID Token in this case). + * @param certs The array of certs to test the jwt against. + * @param requiredAudience The audience to test the jwt against. + * @param issuers The allowed issuers of the jwt (Optional). + * @param maxExpiry The max expiry the certificate can be (Optional). + * @return Returns a promise resolving to LoginTicket on verification. + */ + async verifySignedJwtWithCertsAsync(jwt, certs, requiredAudience, issuers, maxExpiry) { + const crypto3 = (0, crypto_1.createCrypto)(); + if (!maxExpiry) { + maxExpiry = _OAuth2Client.DEFAULT_MAX_TOKEN_LIFETIME_SECS_; + } + const segments = jwt.split("."); + if (segments.length !== 3) { + throw new Error("Wrong number of segments in token: " + jwt); + } + const signed = segments[0] + "." + segments[1]; + let signature = segments[2]; + let envelope; + let payload; + try { + envelope = JSON.parse(crypto3.decodeBase64StringUtf8(segments[0])); + } catch (err) { + if (err instanceof Error) { + err.message = `Can't parse token envelope: ${segments[0]}': ${err.message}`; + } + throw err; + } + if (!envelope) { + throw new Error("Can't parse token envelope: " + segments[0]); + } + try { + payload = JSON.parse(crypto3.decodeBase64StringUtf8(segments[1])); + } catch (err) { + if (err instanceof Error) { + err.message = `Can't parse token payload '${segments[0]}`; + } + throw err; + } + if (!payload) { + throw new Error("Can't parse token payload: " + segments[1]); + } + if (!Object.prototype.hasOwnProperty.call(certs, envelope.kid)) { + throw new Error("No pem found for envelope: " + JSON.stringify(envelope)); + } + const cert = certs[envelope.kid]; + if (envelope.alg === "ES256") { + signature = formatEcdsa.joseToDer(signature, "ES256").toString("base64"); + } + const verified = await crypto3.verify(cert, signed, signature); + if (!verified) { + throw new Error("Invalid token signature: " + jwt); + } + if (!payload.iat) { + throw new Error("No issue time in token: " + JSON.stringify(payload)); + } + if (!payload.exp) { + throw new Error("No expiration time in token: " + JSON.stringify(payload)); + } + const iat = Number(payload.iat); + if (isNaN(iat)) + throw new Error("iat field using invalid format"); + const exp = Number(payload.exp); + if (isNaN(exp)) + throw new Error("exp field using invalid format"); + const now = (/* @__PURE__ */ new Date()).getTime() / 1e3; + if (exp >= now + maxExpiry) { + throw new Error("Expiration time too far in future: " + JSON.stringify(payload)); + } + const earliest = iat - _OAuth2Client.CLOCK_SKEW_SECS_; + const latest = exp + _OAuth2Client.CLOCK_SKEW_SECS_; + if (now < earliest) { + throw new Error("Token used too early, " + now + " < " + earliest + ": " + JSON.stringify(payload)); + } + if (now > latest) { + throw new Error("Token used too late, " + now + " > " + latest + ": " + JSON.stringify(payload)); + } + if (issuers && issuers.indexOf(payload.iss) < 0) { + throw new Error("Invalid issuer, expected one of [" + issuers + "], but got " + payload.iss); + } + if (typeof requiredAudience !== "undefined" && requiredAudience !== null) { + const aud = payload.aud; + let audVerified = false; + if (requiredAudience.constructor === Array) { + audVerified = requiredAudience.indexOf(aud) > -1; + } else { + audVerified = aud === requiredAudience; + } + if (!audVerified) { + throw new Error("Wrong recipient, payload audience != requiredAudience"); + } + } + return new loginticket_1.LoginTicket(envelope, payload); + } + /** + * Returns a promise that resolves with AccessTokenResponse type if + * refreshHandler is defined. + * If not, nothing is returned. + */ + async processAndValidateRefreshHandler() { + if (this.refreshHandler) { + const accessTokenResponse = await this.refreshHandler(); + if (!accessTokenResponse.access_token) { + throw new Error("No access token is returned by the refreshHandler callback."); + } + return accessTokenResponse; + } + return; + } + /** + * Returns true if a token is expired or will expire within + * eagerRefreshThresholdMillismilliseconds. + * If there is no expiry time, assumes the token is not expired or expiring. + */ + isTokenExpiring() { + const expiryDate = this.credentials.expiry_date; + return expiryDate ? expiryDate <= (/* @__PURE__ */ new Date()).getTime() + this.eagerRefreshThresholdMillis : false; + } + }; + exports.OAuth2Client = OAuth2Client; + } +}); + +// +var require_computeclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Compute = void 0; + var gaxios_1 = require_src2(); + var gcpMetadata = require_src4(); + var oauth2client_1 = require_oauth2client(); + var Compute = class extends oauth2client_1.OAuth2Client { + serviceAccountEmail; + scopes; + /** + * Google Compute Engine service account credentials. + * + * Retrieve access token from the metadata server. + * See: https://cloud.google.com/compute/docs/access/authenticate-workloads#applications + */ + constructor(options = {}) { + super(options); + this.credentials = { expiry_date: 1, refresh_token: "compute-placeholder" }; + this.serviceAccountEmail = options.serviceAccountEmail || "default"; + this.scopes = Array.isArray(options.scopes) ? options.scopes : options.scopes ? [options.scopes] : []; + } + /** + * Refreshes the access token. + * @param refreshToken Unused parameter + */ + async refreshTokenNoCache() { + const tokenPath = `service-accounts/${this.serviceAccountEmail}/token`; + let data; + try { + const instanceOptions = { + property: tokenPath + }; + if (this.scopes.length > 0) { + instanceOptions.params = { + scopes: this.scopes.join(",") + }; + } + data = await gcpMetadata.instance(instanceOptions); + } catch (e2) { + if (e2 instanceof gaxios_1.GaxiosError) { + e2.message = `Could not refresh access token: ${e2.message}`; + this.wrapError(e2); + } + throw e2; + } + const tokens = data; + if (data && data.expires_in) { + tokens.expiry_date = (/* @__PURE__ */ new Date()).getTime() + data.expires_in * 1e3; + delete tokens.expires_in; + } + this.emit("tokens", tokens); + return { tokens, res: null }; + } + /** + * Fetches an ID token. + * @param targetAudience the audience for the fetched ID token. + */ + async fetchIdToken(targetAudience) { + const idTokenPath = `service-accounts/${this.serviceAccountEmail}/identity?format=full&audience=${targetAudience}`; + let idToken; + try { + const instanceOptions = { + property: idTokenPath + }; + idToken = await gcpMetadata.instance(instanceOptions); + } catch (e2) { + if (e2 instanceof Error) { + e2.message = `Could not fetch ID token: ${e2.message}`; + } + throw e2; + } + return idToken; + } + wrapError(e2) { + const res = e2.response; + if (res && res.status) { + e2.status = res.status; + if (res.status === 403) { + e2.message = "A Forbidden error was returned while attempting to retrieve an access token for the Compute Engine built-in service account. This may be because the Compute Engine instance does not have the correct permission scopes specified: " + e2.message; + } else if (res.status === 404) { + e2.message = "A Not Found error was returned while attempting to retrieve an accesstoken for the Compute Engine built-in service account. This may be because the Compute Engine instance does not have any permission scopes specified: " + e2.message; + } + } + } + }; + exports.Compute = Compute; + } +}); + +// +var require_idtokenclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.IdTokenClient = void 0; + var oauth2client_1 = require_oauth2client(); + var IdTokenClient = class extends oauth2client_1.OAuth2Client { + targetAudience; + idTokenProvider; + /** + * Google ID Token client + * + * Retrieve ID token from the metadata server. + * See: https://cloud.google.com/docs/authentication/get-id-token#metadata-server + */ + constructor(options) { + super(options); + this.targetAudience = options.targetAudience; + this.idTokenProvider = options.idTokenProvider; + } + async getRequestMetadataAsync() { + if (!this.credentials.id_token || !this.credentials.expiry_date || this.isTokenExpiring()) { + const idToken = await this.idTokenProvider.fetchIdToken(this.targetAudience); + this.credentials = { + id_token: idToken, + expiry_date: this.getIdTokenExpiryDate(idToken) + }; + } + const headers = new Headers({ + authorization: "Bearer " + this.credentials.id_token + }); + return { headers }; + } + getIdTokenExpiryDate(idToken) { + const payloadB64 = idToken.split(".")[1]; + if (payloadB64) { + const payload = JSON.parse(Buffer.from(payloadB64, "base64").toString("ascii")); + return payload.exp * 1e3; + } + } + }; + exports.IdTokenClient = IdTokenClient; + } +}); + +// +var require_envDetect = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GCPEnv = void 0; + exports.clear = clear; + exports.getEnv = getEnv2; + var gcpMetadata = require_src4(); + var GCPEnv; + (function(GCPEnv2) { + GCPEnv2["APP_ENGINE"] = "APP_ENGINE"; + GCPEnv2["KUBERNETES_ENGINE"] = "KUBERNETES_ENGINE"; + GCPEnv2["CLOUD_FUNCTIONS"] = "CLOUD_FUNCTIONS"; + GCPEnv2["COMPUTE_ENGINE"] = "COMPUTE_ENGINE"; + GCPEnv2["CLOUD_RUN"] = "CLOUD_RUN"; + GCPEnv2["CLOUD_RUN_JOBS"] = "CLOUD_RUN_JOBS"; + GCPEnv2["NONE"] = "NONE"; + })(GCPEnv || (exports.GCPEnv = GCPEnv = {})); + var envPromise; + function clear() { + envPromise = void 0; + } + async function getEnv2() { + if (envPromise) { + return envPromise; + } + envPromise = getEnvMemoized(); + return envPromise; + } + async function getEnvMemoized() { + let env2 = GCPEnv.NONE; + if (isAppEngine()) { + env2 = GCPEnv.APP_ENGINE; + } else if (isCloudFunction()) { + env2 = GCPEnv.CLOUD_FUNCTIONS; + } else if (await isComputeEngine()) { + if (await isKubernetesEngine()) { + env2 = GCPEnv.KUBERNETES_ENGINE; + } else if (isCloudRun()) { + env2 = GCPEnv.CLOUD_RUN; + } else if (isCloudRunJob()) { + env2 = GCPEnv.CLOUD_RUN_JOBS; + } else { + env2 = GCPEnv.COMPUTE_ENGINE; + } + } else { + env2 = GCPEnv.NONE; + } + return env2; + } + function isAppEngine() { + return !!(process.env.GAE_SERVICE || process.env.GAE_MODULE_NAME); + } + function isCloudFunction() { + return !!(process.env.FUNCTION_NAME || process.env.FUNCTION_TARGET); + } + function isCloudRun() { + return !!process.env.K_CONFIGURATION; + } + function isCloudRunJob() { + return !!process.env.CLOUD_RUN_JOB; + } + async function isKubernetesEngine() { + try { + await gcpMetadata.instance("attributes/cluster-name"); + return true; + } catch (e2) { + return false; + } + } + async function isComputeEngine() { + return gcpMetadata.isAvailable(); + } + } +}); + +// +var require_data_stream = __commonJS({ + ""(exports, module) { + var Buffer4 = require_safe_buffer().Buffer; + var Stream4 = __require("stream"); + var util = __require("util"); + function DataStream(data) { + this.buffer = null; + this.writable = true; + this.readable = true; + if (!data) { + this.buffer = Buffer4.alloc(0); + return this; + } + if (typeof data.pipe === "function") { + this.buffer = Buffer4.alloc(0); + data.pipe(this); + return this; + } + if (data.length || typeof data === "object") { + this.buffer = data; + this.writable = false; + process.nextTick(function() { + this.emit("end", data); + this.readable = false; + this.emit("close"); + }.bind(this)); + return this; + } + throw new TypeError("Unexpected data type (" + typeof data + ")"); + } + util.inherits(DataStream, Stream4); + DataStream.prototype.write = function write(data) { + this.buffer = Buffer4.concat([this.buffer, Buffer4.from(data)]); + this.emit("data", data); + }; + DataStream.prototype.end = function end(data) { + if (data) + this.write(data); + this.emit("end", data); + this.emit("close"); + this.writable = false; + this.readable = false; + }; + module.exports = DataStream; + } +}); + +// +var require_buffer_equal_constant_time = __commonJS({ + ""(exports, module) { + "use strict"; + var Buffer4 = __require("buffer").Buffer; + var SlowBuffer = __require("buffer").SlowBuffer; + module.exports = bufferEq; + function bufferEq(a, b) { + if (!Buffer4.isBuffer(a) || !Buffer4.isBuffer(b)) { + return false; + } + if (a.length !== b.length) { + return false; + } + var c = 0; + for (var i2 = 0; i2 < a.length; i2++) { + c |= a[i2] ^ b[i2]; + } + return c === 0; + } + bufferEq.install = function() { + Buffer4.prototype.equal = SlowBuffer.prototype.equal = function equal(that) { + return bufferEq(this, that); + }; + }; + var origBufEqual = Buffer4.prototype.equal; + var origSlowBufEqual = SlowBuffer.prototype.equal; + bufferEq.restore = function() { + Buffer4.prototype.equal = origBufEqual; + SlowBuffer.prototype.equal = origSlowBufEqual; + }; + } +}); + +// +var require_jwa = __commonJS({ + ""(exports, module) { + var Buffer4 = require_safe_buffer().Buffer; + var crypto3 = __require("crypto"); + var formatEcdsa = require_ecdsa_sig_formatter(); + var util = __require("util"); + var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".'; + var MSG_INVALID_SECRET = "secret must be a string or buffer"; + var MSG_INVALID_VERIFIER_KEY = "key must be a string or a buffer"; + var MSG_INVALID_SIGNER_KEY = "key must be a string, a buffer or an object"; + var supportsKeyObjects = typeof crypto3.createPublicKey === "function"; + if (supportsKeyObjects) { + MSG_INVALID_VERIFIER_KEY += " or a KeyObject"; + MSG_INVALID_SECRET += "or a KeyObject"; + } + function checkIsPublicKey(key) { + if (Buffer4.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.type !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.asymmetricKeyType !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + } + function checkIsPrivateKey(key) { + if (Buffer4.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (typeof key === "object") { + return; + } + throw typeError(MSG_INVALID_SIGNER_KEY); + } + function checkIsSecretKey(key) { + if (Buffer4.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return key; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_SECRET); + } + if (key.type !== "secret") { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_SECRET); + } + } + function fromBase642(base64) { + return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function toBase64(base64url) { + base64url = base64url.toString(); + var padding = 4 - base64url.length % 4; + if (padding !== 4) { + for (var i2 = 0; i2 < padding; ++i2) { + base64url += "="; + } + } + return base64url.replace(/\-/g, "+").replace(/_/g, "/"); + } + function typeError(template) { + var args = [].slice.call(arguments, 1); + var errMsg = util.format.bind(util, template).apply(null, args); + return new TypeError(errMsg); + } + function bufferOrString(obj) { + return Buffer4.isBuffer(obj) || typeof obj === "string"; + } + function normalizeInput(thing) { + if (!bufferOrString(thing)) + thing = JSON.stringify(thing); + return thing; + } + function createHmacSigner(bits) { + return function sign(thing, secret) { + checkIsSecretKey(secret); + thing = normalizeInput(thing); + var hmac = crypto3.createHmac("sha" + bits, secret); + var sig = (hmac.update(thing), hmac.digest("base64")); + return fromBase642(sig); + }; + } + var bufferEqual; + var timingSafeEqual = "timingSafeEqual" in crypto3 ? function timingSafeEqual2(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + return crypto3.timingSafeEqual(a, b); + } : function timingSafeEqual2(a, b) { + if (!bufferEqual) { + bufferEqual = require_buffer_equal_constant_time(); + } + return bufferEqual(a, b); + }; + function createHmacVerifier(bits) { + return function verify(thing, signature, secret) { + var computedSig = createHmacSigner(bits)(thing, secret); + return timingSafeEqual(Buffer4.from(signature), Buffer4.from(computedSig)); + }; + } + function createKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto3.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign(privateKey, "base64")); + return fromBase642(sig); + }; + } + function createKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto3.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify(publicKey, signature, "base64"); + }; + } + function createPSSKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto3.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign({ + key: privateKey, + padding: crypto3.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto3.constants.RSA_PSS_SALTLEN_DIGEST + }, "base64")); + return fromBase642(sig); + }; + } + function createPSSKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto3.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify({ + key: publicKey, + padding: crypto3.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto3.constants.RSA_PSS_SALTLEN_DIGEST + }, signature, "base64"); + }; + } + function createECDSASigner(bits) { + var inner = createKeySigner(bits); + return function sign() { + var signature = inner.apply(null, arguments); + signature = formatEcdsa.derToJose(signature, "ES" + bits); + return signature; + }; + } + function createECDSAVerifer(bits) { + var inner = createKeyVerifier(bits); + return function verify(thing, signature, publicKey) { + signature = formatEcdsa.joseToDer(signature, "ES" + bits).toString("base64"); + var result = inner(thing, signature, publicKey); + return result; + }; + } + function createNoneSigner() { + return function sign() { + return ""; + }; + } + function createNoneVerifier() { + return function verify(thing, signature) { + return signature === ""; + }; + } + module.exports = function jwa(algorithm) { + var signerFactories = { + hs: createHmacSigner, + rs: createKeySigner, + ps: createPSSKeySigner, + es: createECDSASigner, + none: createNoneSigner + }; + var verifierFactories = { + hs: createHmacVerifier, + rs: createKeyVerifier, + ps: createPSSKeyVerifier, + es: createECDSAVerifer, + none: createNoneVerifier + }; + var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/); + if (!match) + throw typeError(MSG_INVALID_ALGORITHM, algorithm); + var algo = (match[1] || match[3]).toLowerCase(); + var bits = match[2]; + return { + sign: signerFactories[algo](bits), + verify: verifierFactories[algo](bits) + }; + }; + } +}); + +// +var require_tostring = __commonJS({ + ""(exports, module) { + var Buffer4 = __require("buffer").Buffer; + module.exports = function toString(obj) { + if (typeof obj === "string") + return obj; + if (typeof obj === "number" || Buffer4.isBuffer(obj)) + return obj.toString(); + return JSON.stringify(obj); + }; + } +}); + +// +var require_sign_stream = __commonJS({ + ""(exports, module) { + var Buffer4 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream4 = __require("stream"); + var toString = require_tostring(); + var util = __require("util"); + function base64url(string, encoding) { + return Buffer4.from(string, encoding).toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function jwsSecuredInput(header, payload, encoding) { + encoding = encoding || "utf8"; + var encodedHeader = base64url(toString(header), "binary"); + var encodedPayload = base64url(toString(payload), encoding); + return util.format("%s.%s", encodedHeader, encodedPayload); + } + function jwsSign(opts) { + var header = opts.header; + var payload = opts.payload; + var secretOrKey = opts.secret || opts.privateKey; + var encoding = opts.encoding; + var algo = jwa(header.alg); + var securedInput = jwsSecuredInput(header, payload, encoding); + var signature = algo.sign(securedInput, secretOrKey); + return util.format("%s.%s", securedInput, signature); + } + function SignStream(opts) { + var secret = opts.secret; + secret = secret == null ? opts.privateKey : secret; + secret = secret == null ? opts.key : secret; + if (/^hs/i.test(opts.header.alg) === true && secret == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secret); + this.readable = true; + this.header = opts.header; + this.encoding = opts.encoding; + this.secret = this.privateKey = this.key = secretStream; + this.payload = new DataStream(opts.payload); + this.secret.once("close", function() { + if (!this.payload.writable && this.readable) + this.sign(); + }.bind(this)); + this.payload.once("close", function() { + if (!this.secret.writable && this.readable) + this.sign(); + }.bind(this)); + } + util.inherits(SignStream, Stream4); + SignStream.prototype.sign = function sign() { + try { + var signature = jwsSign({ + header: this.header, + payload: this.payload.buffer, + secret: this.secret.buffer, + encoding: this.encoding + }); + this.emit("done", signature); + this.emit("data", signature); + this.emit("end"); + this.readable = false; + return signature; + } catch (e2) { + this.readable = false; + this.emit("error", e2); + this.emit("close"); + } + }; + SignStream.sign = jwsSign; + module.exports = SignStream; + } +}); + +// +var require_verify_stream = __commonJS({ + ""(exports, module) { + var Buffer4 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream4 = __require("stream"); + var toString = require_tostring(); + var util = __require("util"); + var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; + function isObject(thing) { + return Object.prototype.toString.call(thing) === "[object Object]"; + } + function safeJsonParse(thing) { + if (isObject(thing)) + return thing; + try { + return JSON.parse(thing); + } catch (e2) { + return void 0; + } + } + function headerFromJWS(jwsSig) { + var encodedHeader = jwsSig.split(".", 1)[0]; + return safeJsonParse(Buffer4.from(encodedHeader, "base64").toString("binary")); + } + function securedInputFromJWS(jwsSig) { + return jwsSig.split(".", 2).join("."); + } + function signatureFromJWS(jwsSig) { + return jwsSig.split(".")[2]; + } + function payloadFromJWS(jwsSig, encoding) { + encoding = encoding || "utf8"; + var payload = jwsSig.split(".")[1]; + return Buffer4.from(payload, "base64").toString(encoding); + } + function isValidJws(string) { + return JWS_REGEX.test(string) && !!headerFromJWS(string); + } + function jwsVerify(jwsSig, algorithm, secretOrKey) { + if (!algorithm) { + var err = new Error("Missing algorithm parameter for jws.verify"); + err.code = "MISSING_ALGORITHM"; + throw err; + } + jwsSig = toString(jwsSig); + var signature = signatureFromJWS(jwsSig); + var securedInput = securedInputFromJWS(jwsSig); + var algo = jwa(algorithm); + return algo.verify(securedInput, signature, secretOrKey); + } + function jwsDecode(jwsSig, opts) { + opts = opts || {}; + jwsSig = toString(jwsSig); + if (!isValidJws(jwsSig)) + return null; + var header = headerFromJWS(jwsSig); + if (!header) + return null; + var payload = payloadFromJWS(jwsSig); + if (header.typ === "JWT" || opts.json) + payload = JSON.parse(payload, opts.encoding); + return { + header, + payload, + signature: signatureFromJWS(jwsSig) + }; + } + function VerifyStream(opts) { + opts = opts || {}; + var secretOrKey = opts.secret; + secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey; + secretOrKey = secretOrKey == null ? opts.key : secretOrKey; + if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secretOrKey); + this.readable = true; + this.algorithm = opts.algorithm; + this.encoding = opts.encoding; + this.secret = this.publicKey = this.key = secretStream; + this.signature = new DataStream(opts.signature); + this.secret.once("close", function() { + if (!this.signature.writable && this.readable) + this.verify(); + }.bind(this)); + this.signature.once("close", function() { + if (!this.secret.writable && this.readable) + this.verify(); + }.bind(this)); + } + util.inherits(VerifyStream, Stream4); + VerifyStream.prototype.verify = function verify() { + try { + var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); + var obj = jwsDecode(this.signature.buffer, this.encoding); + this.emit("done", valid, obj); + this.emit("data", valid); + this.emit("end"); + this.readable = false; + return valid; + } catch (e2) { + this.readable = false; + this.emit("error", e2); + this.emit("close"); + } + }; + VerifyStream.decode = jwsDecode; + VerifyStream.isValid = isValidJws; + VerifyStream.verify = jwsVerify; + module.exports = VerifyStream; + } +}); + +// +var require_jws = __commonJS({ + ""(exports) { + var SignStream = require_sign_stream(); + var VerifyStream = require_verify_stream(); + var ALGORITHMS = [ + "HS256", + "HS384", + "HS512", + "RS256", + "RS384", + "RS512", + "PS256", + "PS384", + "PS512", + "ES256", + "ES384", + "ES512" + ]; + exports.ALGORITHMS = ALGORITHMS; + exports.sign = SignStream.sign; + exports.verify = VerifyStream.verify; + exports.decode = VerifyStream.decode; + exports.isValid = VerifyStream.isValid; + exports.createSign = function createSign(opts) { + return new SignStream(opts); + }; + exports.createVerify = function createVerify(opts) { + return new VerifyStream(opts); + }; + } +}); + +// +var require_src5 = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.GoogleToken = void 0; + var fs5 = _interopRequireWildcard(__require("fs")); + var _gaxios = require_src2(); + var jws = _interopRequireWildcard(require_jws()); + var path7 = _interopRequireWildcard(__require("path")); + var _util = __require("util"); + function _interopRequireWildcard(e2, t2) { + if ("function" == typeof WeakMap) + var r2 = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e3, t3) { + if (!t3 && e3 && e3.__esModule) + return e3; + var o, i2, f3 = { __proto__: null, "default": e3 }; + if (null === e3 || "object" != _typeof(e3) && "function" != typeof e3) + return f3; + if (o = t3 ? n : r2) { + if (o.has(e3)) + return o.get(e3); + o.set(e3, f3); + } + for (var _t3 in e3) + "default" !== _t3 && {}.hasOwnProperty.call(e3, _t3) && ((i2 = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e3, _t3)) && (i2.get || i2.set) ? o(f3, _t3, i2) : f3[_t3] = e3[_t3]); + return f3; + })(e2, t2); + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classPrivateMethodInitSpec(e2, a) { + _checkPrivateRedeclaration(e2, a), a.add(e2); + } + function _classPrivateFieldInitSpec(e2, t2, a) { + _checkPrivateRedeclaration(e2, t2), t2.set(e2, a); + } + function _checkPrivateRedeclaration(e2, t2) { + if (t2.has(e2)) + throw new TypeError("Cannot initialize the same private elements twice on an object"); + } + function _classPrivateFieldSet(s2, a, r2) { + return s2.set(_assertClassBrand(s2, a), r2), r2; + } + function _classPrivateFieldGet(s2, a) { + return s2.get(_assertClassBrand(s2, a)); + } + function _assertClassBrand(e2, t2, n) { + if ("function" == typeof e2 ? e2 === t2 : e2.has(t2)) + return arguments.length < 3 ? t2 : n; + throw new TypeError("Private element is not present on this object"); + } + function _defineProperties(e2, r2) { + for (var t2 = 0; t2 < r2.length; t2++) { + var o = r2[t2]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e2, _toPropertyKey(o.key), o); + } + } + function _createClass(e2, r2, t2) { + return r2 && _defineProperties(e2.prototype, r2), t2 && _defineProperties(e2, t2), Object.defineProperty(e2, "prototype", { writable: false }), e2; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) + throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t2, o, e2) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t2, _isNativeReflectConstruct() ? Reflect.construct(o, e2 || [], _getPrototypeOf(t2).constructor) : o.apply(t2, e2)); + } + function _possibleConstructorReturn(t2, e2) { + if (e2 && ("object" == _typeof(e2) || "function" == typeof e2)) + return e2; + if (void 0 !== e2) + throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t2); + } + function _assertThisInitialized(e2) { + if (void 0 === e2) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e2; + } + function _inherits(t2, e2) { + if ("function" != typeof e2 && null !== e2) + throw new TypeError("Super expression must either be null or a function"); + t2.prototype = Object.create(e2 && e2.prototype, { constructor: { value: t2, writable: true, configurable: true } }), Object.defineProperty(t2, "prototype", { writable: false }), e2 && _setPrototypeOf(t2, e2); + } + function _wrapNativeSuper(t2) { + var r2 = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; + return _wrapNativeSuper = function _wrapNativeSuper2(t3) { + if (null === t3 || !_isNativeFunction(t3)) + return t3; + if ("function" != typeof t3) + throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r2) { + if (r2.has(t3)) + return r2.get(t3); + r2.set(t3, Wrapper); + } + function Wrapper() { + return _construct(t3, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t3.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }), _setPrototypeOf(Wrapper, t3); + }, _wrapNativeSuper(t2); + } + function _construct(t2, e2, r2) { + if (_isNativeReflectConstruct()) + return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e2); + var p = new (t2.bind.apply(t2, o))(); + return r2 && _setPrototypeOf(p, r2.prototype), p; + } + function _isNativeReflectConstruct() { + try { + var t2 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t3) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t2; + })(); + } + function _isNativeFunction(t2) { + try { + return -1 !== Function.toString.call(t2).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t2; + } + } + function _setPrototypeOf(t2, e2) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t3, e3) { + return t3.__proto__ = e3, t3; + }, _setPrototypeOf(t2, e2); + } + function _getPrototypeOf(t2) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t3) { + return t3.__proto__ || Object.getPrototypeOf(t3); + }, _getPrototypeOf(t2); + } + function _defineProperty(e2, r2, t2) { + return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2; + } + function _toPropertyKey(t2) { + var i2 = _toPrimitive(t2, "string"); + return "symbol" == _typeof(i2) ? i2 : i2 + ""; + } + function _toPrimitive(t2, r2) { + if ("object" != _typeof(t2) || !t2) + return t2; + var e2 = t2[Symbol.toPrimitive]; + if (void 0 !== e2) { + var i2 = e2.call(t2, r2 || "default"); + if ("object" != _typeof(i2)) + return i2; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r2 ? String : Number)(t2); + } + function _regenerator() { + var e2, t2, r2 = "function" == typeof Symbol ? Symbol : {}, n = r2.iterator || "@@iterator", o = r2.toStringTag || "@@toStringTag"; + function i2(r3, n2, o2, i3) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r4, n3, o3) { + var i4, c3, u3, f4 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e2, a: d, f: d.bind(e2, 4), d: function d2(t3, r5) { + return i4 = t3, c3 = 0, u3 = e2, G.n = r5, a; + } }; + function d(r5, n4) { + for (c3 = r5, u3 = n4, t2 = 0; !y && f4 && !o4 && t2 < p.length; t2++) { + var o4, i5 = p[t2], d2 = G.p, l = i5[2]; + r5 > 3 ? (o4 = l === n4) && (u3 = i5[(c3 = i5[4]) ? 5 : (c3 = 3, 3)], i5[4] = i5[5] = e2) : i5[0] <= d2 && ((o4 = r5 < 2 && d2 < i5[1]) ? (c3 = 0, G.v = n4, G.n = i5[1]) : d2 < l && (o4 = r5 < 3 || i5[0] > n4 || n4 > l) && (i5[4] = r5, i5[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r5 > 1) + return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f4 > 1) + throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t2 = c3 < 2 ? e2 : u3) || !y; ) { + i4 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f4 = 2, i4) { + if (c3 || (o4 = "next"), t2 = i4[o4]) { + if (!(t2 = t2.call(i4, u3))) + throw TypeError("iterator result is not an object"); + if (!t2.done) + return t2; + u3 = t2.value, c3 < 2 && (c3 = 0); + } else + 1 === c3 && (t2 = i4["return"]) && t2.call(i4), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i4 = e2; + } else if ((t2 = (y = G.n < 0) ? u3 : r4.call(n3, G)) !== a) + break; + } catch (t3) { + i4 = e2, c3 = 1, u3 = t3; + } finally { + f4 = 1; + } + } + return { value: t2, done: y }; + }; + }(r3, o2, i3), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t2 = Object.getPrototypeOf; + var c = [][n] ? t2(t2([][n]())) : (_regeneratorDefine2(t2 = {}, n, function() { + return this; + }), t2), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f3(e3) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e3, GeneratorFunctionPrototype) : (e3.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e3, o, "GeneratorFunction")), e3.prototype = Object.create(u), e3; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i2, m: f3 }; + })(); + } + function _regeneratorDefine2(e2, r2, n, t2) { + var i2 = Object.defineProperty; + try { + i2({}, "", {}); + } catch (e3) { + i2 = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e3, r3, n2, t3) { + if (r3) + i2 ? i2(e3, r3, { value: n2, enumerable: !t3, configurable: !t3, writable: !t3 }) : e3[r3] = n2; + else { + var o = function o2(r4, n3) { + _regeneratorDefine2(e3, r4, function(e4) { + return this._invoke(r4, n3, e4); + }); + }; + o("next", 0), o("throw", 1), o("return", 2); + } + }, _regeneratorDefine2(e2, r2, n, t2); + } + function asyncGeneratorStep(n, t2, e2, r2, o, a, c) { + try { + var i2 = n[a](c), u = i2.value; + } catch (n2) { + return void e2(n2); + } + i2.done ? t2(u) : Promise.resolve(u).then(r2, o); + } + function _asyncToGenerator(n) { + return function() { + var t2 = this, e2 = arguments; + return new Promise(function(r2, o) { + var a = n.apply(t2, e2); + function _next(n2) { + asyncGeneratorStep(a, r2, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r2, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + var readFile = fs5.readFile ? (0, _util.promisify)(fs5.readFile) : _asyncToGenerator(_regenerator().m(function _callee() { + return _regenerator().w(function(_context) { + while (1) + switch (_context.n) { + case 0: + throw new ErrorWithCode("use key rather than keyFile.", "MISSING_CREDENTIALS"); + case 1: + return _context.a(2); + } + }, _callee); + })); + var GOOGLE_TOKEN_URL = "https://oauth2.googleapis.com/token"; + var GOOGLE_REVOKE_TOKEN_URL = "https://oauth2.googleapis.com/revoke?token="; + var ErrorWithCode = function(_Error) { + function ErrorWithCode2(message, code) { + var _this; + _classCallCheck(this, ErrorWithCode2); + _this = _callSuper(this, ErrorWithCode2, [message]); + _defineProperty(_this, "code", void 0); + _this.code = code; + return _this; + } + _inherits(ErrorWithCode2, _Error); + return _createClass(ErrorWithCode2); + }(_wrapNativeSuper(Error)); + var _inFlightRequest = /* @__PURE__ */ new WeakMap(); + var _GoogleToken_brand = /* @__PURE__ */ new WeakSet(); + var GoogleToken = exports.GoogleToken = function() { + function GoogleToken2(_options) { + _classCallCheck(this, GoogleToken2); + _classPrivateMethodInitSpec(this, _GoogleToken_brand); + _defineProperty(this, "expiresAt", void 0); + _defineProperty(this, "key", void 0); + _defineProperty(this, "keyFile", void 0); + _defineProperty(this, "iss", void 0); + _defineProperty(this, "sub", void 0); + _defineProperty(this, "scope", void 0); + _defineProperty(this, "rawToken", void 0); + _defineProperty(this, "tokenExpires", void 0); + _defineProperty(this, "email", void 0); + _defineProperty(this, "additionalClaims", void 0); + _defineProperty(this, "eagerRefreshThresholdMillis", void 0); + _defineProperty(this, "transporter", { + request: function request2(opts) { + return (0, _gaxios.request)(opts); + } + }); + _classPrivateFieldInitSpec(this, _inFlightRequest, void 0); + _assertClassBrand(_GoogleToken_brand, this, _configure).call(this, _options); + } + return _createClass(GoogleToken2, [{ + key: "accessToken", + get: function get2() { + return this.rawToken ? this.rawToken.access_token : void 0; + } + }, { + key: "idToken", + get: function get2() { + return this.rawToken ? this.rawToken.id_token : void 0; + } + }, { + key: "tokenType", + get: function get2() { + return this.rawToken ? this.rawToken.token_type : void 0; + } + }, { + key: "refreshToken", + get: function get2() { + return this.rawToken ? this.rawToken.refresh_token : void 0; + } + }, { + key: "hasExpired", + value: function hasExpired() { + var now = (/* @__PURE__ */ new Date()).getTime(); + if (this.rawToken && this.expiresAt) { + return now >= this.expiresAt; + } else { + return true; + } + } + /** + * Returns whether the token will expire within eagerRefreshThresholdMillis + * + * @return true if the token will be expired within eagerRefreshThresholdMillis, false otherwise. + */ + }, { + key: "isTokenExpiring", + value: function isTokenExpiring() { + var _this$eagerRefreshThr; + var now = (/* @__PURE__ */ new Date()).getTime(); + var eagerRefreshThresholdMillis = (_this$eagerRefreshThr = this.eagerRefreshThresholdMillis) !== null && _this$eagerRefreshThr !== void 0 ? _this$eagerRefreshThr : 0; + if (this.rawToken && this.expiresAt) { + return this.expiresAt <= now + eagerRefreshThresholdMillis; + } else { + return true; + } + } + /** + * Returns a cached token or retrieves a new one from Google. + * + * @param callback The callback function. + */ + }, { + key: "getToken", + value: function getToken2(callback) { + var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (_typeof(callback) === "object") { + opts = callback; + callback = void 0; + } + opts = Object.assign({ + forceRefresh: false + }, opts); + if (callback) { + var cb = callback; + _assertClassBrand(_GoogleToken_brand, this, _getTokenAsync).call(this, opts).then(function(t2) { + return cb(null, t2); + }, callback); + return; + } + return _assertClassBrand(_GoogleToken_brand, this, _getTokenAsync).call(this, opts); + } + /** + * Given a keyFile, extract the key and client email if available + * @param keyFile Path to a json, pem, or p12 file that contains the key. + * @returns an object with privateKey and clientEmail properties + */ + }, { + key: "getCredentials", + value: function() { + var _getCredentials = _asyncToGenerator(_regenerator().m(function _callee2(keyFile) { + var ext, key, body, privateKey, clientEmail, _privateKey, _t; + return _regenerator().w(function(_context2) { + while (1) + switch (_context2.n) { + case 0: + ext = path7.extname(keyFile); + _t = ext; + _context2.n = _t === ".json" ? 1 : _t === ".der" ? 4 : _t === ".crt" ? 4 : _t === ".pem" ? 4 : _t === ".p12" ? 6 : _t === ".pfx" ? 6 : 7; + break; + case 1: + _context2.n = 2; + return readFile(keyFile, "utf8"); + case 2: + key = _context2.v; + body = JSON.parse(key); + privateKey = body.private_key; + clientEmail = body.client_email; + if (!(!privateKey || !clientEmail)) { + _context2.n = 3; + break; + } + throw new ErrorWithCode("private_key and client_email are required.", "MISSING_CREDENTIALS"); + case 3: + return _context2.a(2, { + privateKey, + clientEmail + }); + case 4: + _context2.n = 5; + return readFile(keyFile, "utf8"); + case 5: + _privateKey = _context2.v; + return _context2.a(2, { + privateKey: _privateKey + }); + case 6: + throw new ErrorWithCode("*.p12 certificates are not supported after v6.1.2. Consider utilizing *.json format or converting *.p12 to *.pem using the OpenSSL CLI.", "UNKNOWN_CERTIFICATE_TYPE"); + case 7: + throw new ErrorWithCode("Unknown certificate type. Type is determined based on file extension. Current supported extensions are *.json, and *.pem.", "UNKNOWN_CERTIFICATE_TYPE"); + case 8: + return _context2.a(2); + } + }, _callee2); + })); + function getCredentials(_x) { + return _getCredentials.apply(this, arguments); + } + return getCredentials; + }() + }, { + key: "revokeToken", + value: function revokeToken(callback) { + if (callback) { + _assertClassBrand(_GoogleToken_brand, this, _revokeTokenAsync).call(this).then(function() { + return callback(); + }, callback); + return; + } + return _assertClassBrand(_GoogleToken_brand, this, _revokeTokenAsync).call(this); + } + }]); + }(); + function _getTokenAsync(_x2) { + return _getTokenAsync2.apply(this, arguments); + } + function _getTokenAsync2() { + _getTokenAsync2 = _asyncToGenerator(_regenerator().m(function _callee3(opts) { + return _regenerator().w(function(_context3) { + while (1) + switch (_context3.n) { + case 0: + if (!(_classPrivateFieldGet(_inFlightRequest, this) && !opts.forceRefresh)) { + _context3.n = 1; + break; + } + return _context3.a(2, _classPrivateFieldGet(_inFlightRequest, this)); + case 1: + _context3.p = 1; + _context3.n = 2; + return _classPrivateFieldSet(_inFlightRequest, this, _assertClassBrand(_GoogleToken_brand, this, _getTokenAsyncInner).call(this, opts)); + case 2: + return _context3.a(2, _context3.v); + case 3: + _context3.p = 3; + _classPrivateFieldSet(_inFlightRequest, this, void 0); + return _context3.f(3); + case 4: + return _context3.a(2); + } + }, _callee3, this, [[1, , 3, 4]]); + })); + return _getTokenAsync2.apply(this, arguments); + } + function _getTokenAsyncInner(_x3) { + return _getTokenAsyncInner2.apply(this, arguments); + } + function _getTokenAsyncInner2() { + _getTokenAsyncInner2 = _asyncToGenerator(_regenerator().m(function _callee4(opts) { + var creds; + return _regenerator().w(function(_context4) { + while (1) + switch (_context4.n) { + case 0: + if (!(this.isTokenExpiring() === false && opts.forceRefresh === false)) { + _context4.n = 1; + break; + } + return _context4.a(2, Promise.resolve(this.rawToken)); + case 1: + if (!(!this.key && !this.keyFile)) { + _context4.n = 2; + break; + } + throw new Error("No key or keyFile set."); + case 2: + if (!(!this.key && this.keyFile)) { + _context4.n = 4; + break; + } + _context4.n = 3; + return this.getCredentials(this.keyFile); + case 3: + creds = _context4.v; + this.key = creds.privateKey; + this.iss = creds.clientEmail || this.iss; + if (!creds.clientEmail) { + _assertClassBrand(_GoogleToken_brand, this, _ensureEmail).call(this); + } + case 4: + return _context4.a(2, _assertClassBrand(_GoogleToken_brand, this, _requestToken).call(this)); + } + }, _callee4, this); + })); + return _getTokenAsyncInner2.apply(this, arguments); + } + function _ensureEmail() { + if (!this.iss) { + throw new ErrorWithCode("email is required.", "MISSING_CREDENTIALS"); + } + } + function _revokeTokenAsync() { + return _revokeTokenAsync2.apply(this, arguments); + } + function _revokeTokenAsync2() { + _revokeTokenAsync2 = _asyncToGenerator(_regenerator().m(function _callee5() { + var url; + return _regenerator().w(function(_context5) { + while (1) + switch (_context5.n) { + case 0: + if (this.accessToken) { + _context5.n = 1; + break; + } + throw new Error("No token to revoke."); + case 1: + url = GOOGLE_REVOKE_TOKEN_URL + this.accessToken; + _context5.n = 2; + return this.transporter.request({ + url, + retry: true + }); + case 2: + _assertClassBrand(_GoogleToken_brand, this, _configure).call(this, { + email: this.iss, + sub: this.sub, + key: this.key, + keyFile: this.keyFile, + scope: this.scope, + additionalClaims: this.additionalClaims + }); + case 3: + return _context5.a(2); + } + }, _callee5, this); + })); + return _revokeTokenAsync2.apply(this, arguments); + } + function _configure() { + var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + this.keyFile = options.keyFile; + this.key = options.key; + this.rawToken = void 0; + this.iss = options.email || options.iss; + this.sub = options.sub; + this.additionalClaims = options.additionalClaims; + if (_typeof(options.scope) === "object") { + this.scope = options.scope.join(" "); + } else { + this.scope = options.scope; + } + this.eagerRefreshThresholdMillis = options.eagerRefreshThresholdMillis; + if (options.transporter) { + this.transporter = options.transporter; + } + } + function _requestToken() { + return _requestToken2.apply(this, arguments); + } + function _requestToken2() { + _requestToken2 = _asyncToGenerator(_regenerator().m(function _callee6() { + var iat, additionalClaims, payload, signedJWT, r2, _response, _response2, body, desc, _t2; + return _regenerator().w(function(_context6) { + while (1) + switch (_context6.n) { + case 0: + iat = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3); + additionalClaims = this.additionalClaims || {}; + payload = Object.assign({ + iss: this.iss, + scope: this.scope, + aud: GOOGLE_TOKEN_URL, + exp: iat + 3600, + iat, + sub: this.sub + }, additionalClaims); + signedJWT = jws.sign({ + header: { + alg: "RS256" + }, + payload, + secret: this.key + }); + _context6.p = 1; + _context6.n = 2; + return this.transporter.request({ + method: "POST", + url: GOOGLE_TOKEN_URL, + data: new URLSearchParams({ + grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer", + assertion: signedJWT + }), + responseType: "json", + retryConfig: { + httpMethodsToRetry: ["POST"] + } + }); + case 2: + r2 = _context6.v; + this.rawToken = r2.data; + this.expiresAt = r2.data.expires_in === null || r2.data.expires_in === void 0 ? void 0 : (iat + r2.data.expires_in) * 1e3; + return _context6.a(2, this.rawToken); + case 3: + _context6.p = 3; + _t2 = _context6.v; + this.rawToken = void 0; + this.tokenExpires = void 0; + body = _t2.response && (_response = _t2.response) !== null && _response !== void 0 && _response.data ? (_response2 = _t2.response) === null || _response2 === void 0 ? void 0 : _response2.data : {}; + if (body.error) { + desc = body.error_description ? ": ".concat(body.error_description) : ""; + _t2.message = "".concat(body.error).concat(desc); + } + throw _t2; + case 4: + return _context6.a(2); + } + }, _callee6, this, [[1, 3]]); + })); + return _requestToken2.apply(this, arguments); + } + } +}); + +// +var require_jwtaccess = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.JWTAccess = void 0; + var jws = require_jws(); + var util_1 = require_util10(); + var DEFAULT_HEADER = { + alg: "RS256", + typ: "JWT" + }; + var JWTAccess = class _JWTAccess { + email; + key; + keyId; + projectId; + eagerRefreshThresholdMillis; + cache = new util_1.LRUCache({ + capacity: 500, + maxAge: 60 * 60 * 1e3 + }); + /** + * JWTAccess service account credentials. + * + * Create a new access token by using the credential to create a new JWT token + * that's recognized as the access token. + * + * @param email the service account email address. + * @param key the private key that will be used to sign the token. + * @param keyId the ID of the private key used to sign the token. + */ + constructor(email, key, keyId, eagerRefreshThresholdMillis) { + this.email = email; + this.key = key; + this.keyId = keyId; + this.eagerRefreshThresholdMillis = eagerRefreshThresholdMillis ?? 5 * 60 * 1e3; + } + /** + * Ensures that we're caching a key appropriately, giving precedence to scopes vs. url + * + * @param url The URI being authorized. + * @param scopes The scope or scopes being authorized + * @returns A string that returns the cached key. + */ + getCachedKey(url, scopes) { + let cacheKey = url; + if (scopes && Array.isArray(scopes) && scopes.length) { + cacheKey = url ? `${url}_${scopes.join("_")}` : `${scopes.join("_")}`; + } else if (typeof scopes === "string") { + cacheKey = url ? `${url}_${scopes}` : scopes; + } + if (!cacheKey) { + throw Error("Scopes or url must be provided"); + } + return cacheKey; + } + /** + * Get a non-expired access token, after refreshing if necessary. + * + * @param url The URI being authorized. + * @param additionalClaims An object with a set of additional claims to + * include in the payload. + * @returns An object that includes the authorization header. + */ + getRequestHeaders(url, additionalClaims, scopes) { + const key = this.getCachedKey(url, scopes); + const cachedToken = this.cache.get(key); + const now = Date.now(); + if (cachedToken && cachedToken.expiration - now > this.eagerRefreshThresholdMillis) { + return new Headers(cachedToken.headers); + } + const iat = Math.floor(Date.now() / 1e3); + const exp = _JWTAccess.getExpirationTime(iat); + let defaultClaims; + if (Array.isArray(scopes)) { + scopes = scopes.join(" "); + } + if (scopes) { + defaultClaims = { + iss: this.email, + sub: this.email, + scope: scopes, + exp, + iat + }; + } else { + defaultClaims = { + iss: this.email, + sub: this.email, + aud: url, + exp, + iat + }; + } + if (additionalClaims) { + for (const claim in defaultClaims) { + if (additionalClaims[claim]) { + throw new Error(`The '${claim}' property is not allowed when passing additionalClaims. This claim is included in the JWT by default.`); + } + } + } + const header = this.keyId ? { ...DEFAULT_HEADER, kid: this.keyId } : DEFAULT_HEADER; + const payload = Object.assign(defaultClaims, additionalClaims); + const signedJWT = jws.sign({ header, payload, secret: this.key }); + const headers = new Headers({ authorization: `Bearer ${signedJWT}` }); + this.cache.set(key, { + expiration: exp * 1e3, + headers + }); + return headers; + } + /** + * Returns an expiration time for the JWT token. + * + * @param iat The issued at time for the JWT. + * @returns An expiration time for the JWT. + */ + static getExpirationTime(iat) { + const exp = iat + 3600; + return exp; + } + /** + * Create a JWTAccess credentials instance using the given input options. + * @param json The input object. + */ + fromJSON(json) { + if (!json) { + throw new Error("Must pass in a JSON object containing the service account auth settings."); + } + if (!json.client_email) { + throw new Error("The incoming JSON object does not contain a client_email field"); + } + if (!json.private_key) { + throw new Error("The incoming JSON object does not contain a private_key field"); + } + this.email = json.client_email; + this.key = json.private_key; + this.keyId = json.private_key_id; + this.projectId = json.project_id; + } + fromStream(inputStream, callback) { + if (callback) { + this.fromStreamAsync(inputStream).then(() => callback(), callback); + } else { + return this.fromStreamAsync(inputStream); + } + } + fromStreamAsync(inputStream) { + return new Promise((resolve2, reject) => { + if (!inputStream) { + reject(new Error("Must pass in a stream containing the service account auth settings.")); + } + let s2 = ""; + inputStream.setEncoding("utf8").on("data", (chunk) => s2 += chunk).on("error", reject).on("end", () => { + try { + const data = JSON.parse(s2); + this.fromJSON(data); + resolve2(); + } catch (err) { + reject(err); + } + }); + }); + } + }; + exports.JWTAccess = JWTAccess; + } +}); + +// +var require_jwtclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.JWT = void 0; + var gtoken_1 = require_src5(); + var jwtaccess_1 = require_jwtaccess(); + var oauth2client_1 = require_oauth2client(); + var authclient_1 = require_authclient(); + var JWT = class _JWT extends oauth2client_1.OAuth2Client { + email; + keyFile; + key; + keyId; + defaultScopes; + scopes; + scope; + subject; + gtoken; + additionalClaims; + useJWTAccessWithScope; + defaultServicePath; + access; + /** + * JWT service account credentials. + * + * Retrieve access token using gtoken. + * + * @param options the + */ + constructor(options = {}) { + super(options); + this.email = options.email; + this.keyFile = options.keyFile; + this.key = options.key; + this.keyId = options.keyId; + this.scopes = options.scopes; + this.subject = options.subject; + this.additionalClaims = options.additionalClaims; + this.credentials = { refresh_token: "jwt-placeholder", expiry_date: 1 }; + } + /** + * Creates a copy of the credential with the specified scopes. + * @param scopes List of requested scopes or a single scope. + * @return The cloned instance. + */ + createScoped(scopes) { + const jwt = new _JWT(this); + jwt.scopes = scopes; + return jwt; + } + /** + * Obtains the metadata to be sent with the request. + * + * @param url the URI being authorized. + */ + async getRequestMetadataAsync(url) { + url = this.defaultServicePath ? `https://${this.defaultServicePath}/` : url; + const useSelfSignedJWT = !this.hasUserScopes() && url || this.useJWTAccessWithScope && this.hasAnyScopes() || this.universeDomain !== authclient_1.DEFAULT_UNIVERSE; + if (this.subject && this.universeDomain !== authclient_1.DEFAULT_UNIVERSE) { + throw new RangeError(`Service Account user is configured for the credential. Domain-wide delegation is not supported in universes other than ${authclient_1.DEFAULT_UNIVERSE}`); + } + if (!this.apiKey && useSelfSignedJWT) { + if (this.additionalClaims && this.additionalClaims.target_audience) { + const { tokens } = await this.refreshToken(); + return { + headers: this.addSharedMetadataHeaders(new Headers({ + authorization: `Bearer ${tokens.id_token}` + })) + }; + } else { + if (!this.access) { + this.access = new jwtaccess_1.JWTAccess(this.email, this.key, this.keyId, this.eagerRefreshThresholdMillis); + } + let scopes; + if (this.hasUserScopes()) { + scopes = this.scopes; + } else if (!url) { + scopes = this.defaultScopes; + } + const useScopes = this.useJWTAccessWithScope || this.universeDomain !== authclient_1.DEFAULT_UNIVERSE; + const headers = await this.access.getRequestHeaders( + url ?? void 0, + this.additionalClaims, + // Scopes take precedent over audience for signing, + // so we only provide them if `useJWTAccessWithScope` is on or + // if we are in a non-default universe + useScopes ? scopes : void 0 + ); + return { headers: this.addSharedMetadataHeaders(headers) }; + } + } else if (this.hasAnyScopes() || this.apiKey) { + return super.getRequestMetadataAsync(url); + } else { + return { headers: new Headers() }; + } + } + /** + * Fetches an ID token. + * @param targetAudience the audience for the fetched ID token. + */ + async fetchIdToken(targetAudience) { + const gtoken = new gtoken_1.GoogleToken({ + iss: this.email, + sub: this.subject, + scope: this.scopes || this.defaultScopes, + keyFile: this.keyFile, + key: this.key, + additionalClaims: { target_audience: targetAudience }, + transporter: this.transporter + }); + await gtoken.getToken({ + forceRefresh: true + }); + if (!gtoken.idToken) { + throw new Error("Unknown error: Failed to fetch ID token"); + } + return gtoken.idToken; + } + /** + * Determine if there are currently scopes available. + */ + hasUserScopes() { + if (!this.scopes) { + return false; + } + return this.scopes.length > 0; + } + /** + * Are there any default or user scopes defined. + */ + hasAnyScopes() { + if (this.scopes && this.scopes.length > 0) + return true; + if (this.defaultScopes && this.defaultScopes.length > 0) + return true; + return false; + } + authorize(callback) { + if (callback) { + this.authorizeAsync().then((r2) => callback(null, r2), callback); + } else { + return this.authorizeAsync(); + } + } + async authorizeAsync() { + const result = await this.refreshToken(); + if (!result) { + throw new Error("No result returned"); + } + this.credentials = result.tokens; + this.credentials.refresh_token = "jwt-placeholder"; + this.key = this.gtoken.key; + this.email = this.gtoken.iss; + return result.tokens; + } + /** + * Refreshes the access token. + * @param refreshToken ignored + * @private + */ + async refreshTokenNoCache() { + const gtoken = this.createGToken(); + const token = await gtoken.getToken({ + forceRefresh: this.isTokenExpiring() + }); + const tokens = { + access_token: token.access_token, + token_type: "Bearer", + expiry_date: gtoken.expiresAt, + id_token: gtoken.idToken + }; + this.emit("tokens", tokens); + return { res: null, tokens }; + } + /** + * Create a gToken if it doesn't already exist. + */ + createGToken() { + if (!this.gtoken) { + this.gtoken = new gtoken_1.GoogleToken({ + iss: this.email, + sub: this.subject, + scope: this.scopes || this.defaultScopes, + keyFile: this.keyFile, + key: this.key, + additionalClaims: this.additionalClaims, + transporter: this.transporter + }); + } + return this.gtoken; + } + /** + * Create a JWT credentials instance using the given input options. + * @param json The input object. + * + * @remarks + * + * **Important**: If you accept a credential configuration (credential JSON/File/Stream) from an external source for authentication to Google Cloud, you must validate it before providing it to any Google API or library. Providing an unvalidated credential configuration to Google APIs can compromise the security of your systems and data. For more information, refer to {@link https://cloud.google.com/docs/authentication/external/externally-sourced-credentials Validate credential configurations from external sources}. + */ + fromJSON(json) { + if (!json) { + throw new Error("Must pass in a JSON object containing the service account auth settings."); + } + if (!json.client_email) { + throw new Error("The incoming JSON object does not contain a client_email field"); + } + if (!json.private_key) { + throw new Error("The incoming JSON object does not contain a private_key field"); + } + this.email = json.client_email; + this.key = json.private_key; + this.keyId = json.private_key_id; + this.projectId = json.project_id; + this.quotaProjectId = json.quota_project_id; + this.universeDomain = json.universe_domain || this.universeDomain; + } + fromStream(inputStream, callback) { + if (callback) { + this.fromStreamAsync(inputStream).then(() => callback(), callback); + } else { + return this.fromStreamAsync(inputStream); + } + } + fromStreamAsync(inputStream) { + return new Promise((resolve2, reject) => { + if (!inputStream) { + throw new Error("Must pass in a stream containing the service account auth settings."); + } + let s2 = ""; + inputStream.setEncoding("utf8").on("error", reject).on("data", (chunk) => s2 += chunk).on("end", () => { + try { + const data = JSON.parse(s2); + this.fromJSON(data); + resolve2(); + } catch (e2) { + reject(e2); + } + }); + }); + } + /** + * Creates a JWT credentials instance using an API Key for authentication. + * @param apiKey The API Key in string form. + */ + fromAPIKey(apiKey) { + if (typeof apiKey !== "string") { + throw new Error("Must provide an API Key string."); + } + this.apiKey = apiKey; + } + /** + * Using the key or keyFile on the JWT client, obtain an object that contains + * the key and the client email. + */ + async getCredentials() { + if (this.key) { + return { private_key: this.key, client_email: this.email }; + } else if (this.keyFile) { + const gtoken = this.createGToken(); + const creds = await gtoken.getCredentials(this.keyFile); + return { private_key: creds.privateKey, client_email: creds.clientEmail }; + } + throw new Error("A key or a keyFile must be provided to getCredentials."); + } + }; + exports.JWT = JWT; + } +}); + +// +var require_refreshclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UserRefreshClient = exports.USER_REFRESH_ACCOUNT_TYPE = void 0; + var oauth2client_1 = require_oauth2client(); + var authclient_1 = require_authclient(); + exports.USER_REFRESH_ACCOUNT_TYPE = "authorized_user"; + var UserRefreshClient = class _UserRefreshClient extends oauth2client_1.OAuth2Client { + // TODO: refactor tests to make this private + // In a future gts release, the _propertyName rule will be lifted. + // This is also a hard one because `this.refreshToken` is a function. + _refreshToken; + /** + * The User Refresh Token client. + * + * @param optionsOrClientId The User Refresh Token client options. Passing an `clientId` directly is **@DEPRECATED**. + * @param clientSecret **@DEPRECATED**. Provide a {@link UserRefreshClientOptions `UserRefreshClientOptions`} object in the first parameter instead. + * @param refreshToken **@DEPRECATED**. Provide a {@link UserRefreshClientOptions `UserRefreshClientOptions`} object in the first parameter instead. + * @param eagerRefreshThresholdMillis **@DEPRECATED**. Provide a {@link UserRefreshClientOptions `UserRefreshClientOptions`} object in the first parameter instead. + * @param forceRefreshOnFailure **@DEPRECATED**. Provide a {@link UserRefreshClientOptions `UserRefreshClientOptions`} object in the first parameter instead. + */ + constructor(optionsOrClientId, clientSecret, refreshToken2, eagerRefreshThresholdMillis, forceRefreshOnFailure) { + const opts = optionsOrClientId && typeof optionsOrClientId === "object" ? optionsOrClientId : { + clientId: optionsOrClientId, + clientSecret, + refreshToken: refreshToken2, + eagerRefreshThresholdMillis, + forceRefreshOnFailure + }; + super(opts); + this._refreshToken = opts.refreshToken; + this.credentials.refresh_token = opts.refreshToken; + } + /** + * Refreshes the access token. + * @param refreshToken An ignored refreshToken.. + * @param callback Optional callback. + */ + async refreshTokenNoCache() { + return super.refreshTokenNoCache(this._refreshToken); + } + async fetchIdToken(targetAudience) { + const opts = { + ..._UserRefreshClient.RETRY_CONFIG, + url: this.endpoints.oauth2TokenUrl, + method: "POST", + data: new URLSearchParams({ + client_id: this._clientId, + client_secret: this._clientSecret, + grant_type: "refresh_token", + refresh_token: this._refreshToken, + target_audience: targetAudience + }) + }; + authclient_1.AuthClient.setMethodName(opts, "fetchIdToken"); + const res = await this.transporter.request(opts); + return res.data.id_token; + } + /** + * Create a UserRefreshClient credentials instance using the given input + * options. + * @param json The input object. + */ + fromJSON(json) { + if (!json) { + throw new Error("Must pass in a JSON object containing the user refresh token"); + } + if (json.type !== "authorized_user") { + throw new Error('The incoming JSON object does not have the "authorized_user" type'); + } + if (!json.client_id) { + throw new Error("The incoming JSON object does not contain a client_id field"); + } + if (!json.client_secret) { + throw new Error("The incoming JSON object does not contain a client_secret field"); + } + if (!json.refresh_token) { + throw new Error("The incoming JSON object does not contain a refresh_token field"); + } + this._clientId = json.client_id; + this._clientSecret = json.client_secret; + this._refreshToken = json.refresh_token; + this.credentials.refresh_token = json.refresh_token; + this.quotaProjectId = json.quota_project_id; + this.universeDomain = json.universe_domain || this.universeDomain; + } + fromStream(inputStream, callback) { + if (callback) { + this.fromStreamAsync(inputStream).then(() => callback(), callback); + } else { + return this.fromStreamAsync(inputStream); + } + } + async fromStreamAsync(inputStream) { + return new Promise((resolve2, reject) => { + if (!inputStream) { + return reject(new Error("Must pass in a stream containing the user refresh token.")); + } + let s2 = ""; + inputStream.setEncoding("utf8").on("error", reject).on("data", (chunk) => s2 += chunk).on("end", () => { + try { + const data = JSON.parse(s2); + this.fromJSON(data); + return resolve2(); + } catch (err) { + return reject(err); + } + }); + }); + } + /** + * Create a UserRefreshClient credentials instance using the given input + * options. + * @param json The input object. + */ + static fromJSON(json) { + const client = new _UserRefreshClient(); + client.fromJSON(json); + return client; + } + }; + exports.UserRefreshClient = UserRefreshClient; + } +}); + +// +var require_impersonated = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Impersonated = exports.IMPERSONATED_ACCOUNT_TYPE = void 0; + var oauth2client_1 = require_oauth2client(); + var gaxios_1 = require_src2(); + var util_1 = require_util10(); + exports.IMPERSONATED_ACCOUNT_TYPE = "impersonated_service_account"; + var Impersonated = class _Impersonated extends oauth2client_1.OAuth2Client { + sourceClient; + targetPrincipal; + targetScopes; + delegates; + lifetime; + endpoint; + /** + * Impersonated service account credentials. + * + * Create a new access token by impersonating another service account. + * + * Impersonated Credentials allowing credentials issued to a user or + * service account to impersonate another. The source project using + * Impersonated Credentials must enable the "IAMCredentials" API. + * Also, the target service account must grant the orginating principal + * the "Service Account Token Creator" IAM role. + * + * **IMPORTANT**: This method does not validate the credential configuration. + * A security risk occurs when a credential configuration configured with + * malicious URLs is used. When the credential configuration is accepted from + * an untrusted source, you should validate it before using it with this + * method. For more details, see + * https://cloud.google.com/docs/authentication/external/externally-sourced-credentials. + * + * @param {object} options - The configuration object. + * @param {object} [options.sourceClient] the source credential used as to + * acquire the impersonated credentials. + * @param {string} [options.targetPrincipal] the service account to + * impersonate. + * @param {string[]} [options.delegates] the chained list of delegates + * required to grant the final access_token. If set, the sequence of + * identities must have "Service Account Token Creator" capability granted to + * the preceding identity. For example, if set to [serviceAccountB, + * serviceAccountC], the sourceCredential must have the Token Creator role on + * serviceAccountB. serviceAccountB must have the Token Creator on + * serviceAccountC. Finally, C must have Token Creator on target_principal. + * If left unset, sourceCredential must have that role on targetPrincipal. + * @param {string[]} [options.targetScopes] scopes to request during the + * authorization grant. + * @param {number} [options.lifetime] number of seconds the delegated + * credential should be valid for up to 3600 seconds by default, or 43,200 + * seconds by extending the token's lifetime, see: + * https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials#sa-credentials-oauth + * @param {string} [options.endpoint] api endpoint override. + */ + constructor(options = {}) { + super(options); + this.credentials = { + expiry_date: 1, + refresh_token: "impersonated-placeholder" + }; + this.sourceClient = options.sourceClient ?? new oauth2client_1.OAuth2Client(); + this.targetPrincipal = options.targetPrincipal ?? ""; + this.delegates = options.delegates ?? []; + this.targetScopes = options.targetScopes ?? []; + this.lifetime = options.lifetime ?? 3600; + const usingExplicitUniverseDomain = !!(0, util_1.originalOrCamelOptions)(options).get("universe_domain"); + if (!usingExplicitUniverseDomain) { + this.universeDomain = this.sourceClient.universeDomain; + } else if (this.sourceClient.universeDomain !== this.universeDomain) { + throw new RangeError(`Universe domain ${this.sourceClient.universeDomain} in source credentials does not match ${this.universeDomain} universe domain set for impersonated credentials.`); + } + this.endpoint = options.endpoint ?? `https://iamcredentials.${this.universeDomain}`; + } + /** + * Signs some bytes. + * + * {@link https://cloud.google.com/iam/docs/reference/credentials/rest/v1/projects.serviceAccounts/signBlob Reference Documentation} + * @param blobToSign String to sign. + * + * @returns A {@link SignBlobResponse} denoting the keyID and signedBlob in base64 string + */ + async sign(blobToSign) { + await this.sourceClient.getAccessToken(); + const name = `projects/-/serviceAccounts/${this.targetPrincipal}`; + const u = `${this.endpoint}/v1/${name}:signBlob`; + const body = { + delegates: this.delegates, + payload: Buffer.from(blobToSign).toString("base64") + }; + const res = await this.sourceClient.request({ + ..._Impersonated.RETRY_CONFIG, + url: u, + data: body, + method: "POST" + }); + return res.data; + } + /** The service account email to be impersonated. */ + getTargetPrincipal() { + return this.targetPrincipal; + } + /** + * Refreshes the access token. + */ + async refreshToken() { + try { + await this.sourceClient.getAccessToken(); + const name = "projects/-/serviceAccounts/" + this.targetPrincipal; + const u = `${this.endpoint}/v1/${name}:generateAccessToken`; + const body = { + delegates: this.delegates, + scope: this.targetScopes, + lifetime: this.lifetime + "s" + }; + const res = await this.sourceClient.request({ + ..._Impersonated.RETRY_CONFIG, + url: u, + data: body, + method: "POST" + }); + const tokenResponse = res.data; + this.credentials.access_token = tokenResponse.accessToken; + this.credentials.expiry_date = Date.parse(tokenResponse.expireTime); + return { + tokens: this.credentials, + res + }; + } catch (error2) { + if (!(error2 instanceof Error)) + throw error2; + let status = 0; + let message = ""; + if (error2 instanceof gaxios_1.GaxiosError) { + status = error2?.response?.data?.error?.status; + message = error2?.response?.data?.error?.message; + } + if (status && message) { + error2.message = `${status}: unable to impersonate: ${message}`; + throw error2; + } else { + error2.message = `unable to impersonate: ${error2}`; + throw error2; + } + } + } + /** + * Generates an OpenID Connect ID token for a service account. + * + * {@link https://cloud.google.com/iam/docs/reference/credentials/rest/v1/projects.serviceAccounts/generateIdToken Reference Documentation} + * + * @param targetAudience the audience for the fetched ID token. + * @param options the for the request + * @return an OpenID Connect ID token + */ + async fetchIdToken(targetAudience, options) { + await this.sourceClient.getAccessToken(); + const name = `projects/-/serviceAccounts/${this.targetPrincipal}`; + const u = `${this.endpoint}/v1/${name}:generateIdToken`; + const body = { + delegates: this.delegates, + audience: targetAudience, + includeEmail: options?.includeEmail ?? true, + useEmailAzp: options?.includeEmail ?? true + }; + const res = await this.sourceClient.request({ + ..._Impersonated.RETRY_CONFIG, + url: u, + data: body, + method: "POST" + }); + return res.data.token; + } + }; + exports.Impersonated = Impersonated; + } +}); + +// +var require_oauth2common = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.OAuthClientAuthHandler = void 0; + exports.getErrorFromOAuthErrorResponse = getErrorFromOAuthErrorResponse; + var gaxios_1 = require_src2(); + var crypto_1 = require_crypto3(); + var METHODS_SUPPORTING_REQUEST_BODY = ["PUT", "POST", "PATCH"]; + var OAuthClientAuthHandler = class { + #crypto = (0, crypto_1.createCrypto)(); + #clientAuthentication; + transporter; + /** + * Instantiates an OAuth client authentication handler. + * @param options The OAuth Client Auth Handler instance options. Passing an `ClientAuthentication` directly is **@DEPRECATED**. + */ + constructor(options) { + if (options && "clientId" in options) { + this.#clientAuthentication = options; + this.transporter = new gaxios_1.Gaxios(); + } else { + this.#clientAuthentication = options?.clientAuthentication; + this.transporter = options?.transporter || new gaxios_1.Gaxios(); + } + } + /** + * Applies client authentication on the OAuth request's headers or POST + * body but does not process the request. + * @param opts The GaxiosOptions whose headers or data are to be modified + * depending on the client authentication mechanism to be used. + * @param bearerToken The optional bearer token to use for authentication. + * When this is used, no client authentication credentials are needed. + */ + applyClientAuthenticationOptions(opts, bearerToken) { + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers); + this.injectAuthenticatedHeaders(opts, bearerToken); + if (!bearerToken) { + this.injectAuthenticatedRequestBody(opts); + } + } + /** + * Applies client authentication on the request's header if either + * basic authentication or bearer token authentication is selected. + * + * @param opts The GaxiosOptions whose headers or data are to be modified + * depending on the client authentication mechanism to be used. + * @param bearerToken The optional bearer token to use for authentication. + * When this is used, no client authentication credentials are needed. + */ + injectAuthenticatedHeaders(opts, bearerToken) { + if (bearerToken) { + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers, { + authorization: `Bearer ${bearerToken}` + }); + } else if (this.#clientAuthentication?.confidentialClientType === "basic") { + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers); + const clientId = this.#clientAuthentication.clientId; + const clientSecret = this.#clientAuthentication.clientSecret || ""; + const base64EncodedCreds = this.#crypto.encodeBase64StringUtf8(`${clientId}:${clientSecret}`); + gaxios_1.Gaxios.mergeHeaders(opts.headers, { + authorization: `Basic ${base64EncodedCreds}` + }); + } + } + /** + * Applies client authentication on the request's body if request-body + * client authentication is selected. + * + * @param opts The GaxiosOptions whose headers or data are to be modified + * depending on the client authentication mechanism to be used. + */ + injectAuthenticatedRequestBody(opts) { + if (this.#clientAuthentication?.confidentialClientType === "request-body") { + const method = (opts.method || "GET").toUpperCase(); + if (!METHODS_SUPPORTING_REQUEST_BODY.includes(method)) { + throw new Error(`${method} HTTP method does not support ${this.#clientAuthentication.confidentialClientType} client authentication`); + } + const headers = new Headers(opts.headers); + const contentType = headers.get("content-type"); + if (contentType?.startsWith("application/x-www-form-urlencoded") || opts.data instanceof URLSearchParams) { + const data = new URLSearchParams(opts.data ?? ""); + data.append("client_id", this.#clientAuthentication.clientId); + data.append("client_secret", this.#clientAuthentication.clientSecret || ""); + opts.data = data; + } else if (contentType?.startsWith("application/json")) { + opts.data = opts.data || {}; + Object.assign(opts.data, { + client_id: this.#clientAuthentication.clientId, + client_secret: this.#clientAuthentication.clientSecret || "" + }); + } else { + throw new Error(`${contentType} content-types are not supported with ${this.#clientAuthentication.confidentialClientType} client authentication`); + } + } + } + /** + * Retry config for Auth-related requests. + * + * @remarks + * + * This is not a part of the default {@link AuthClient.transporter transporter/gaxios} + * config as some downstream APIs would prefer if customers explicitly enable retries, + * such as GCS. + */ + static get RETRY_CONFIG() { + return { + retry: true, + retryConfig: { + httpMethodsToRetry: ["GET", "PUT", "POST", "HEAD", "OPTIONS", "DELETE"] + } + }; + } + }; + exports.OAuthClientAuthHandler = OAuthClientAuthHandler; + function getErrorFromOAuthErrorResponse(resp, err) { + const errorCode = resp.error; + const errorDescription = resp.error_description; + const errorUri = resp.error_uri; + let message = `Error code ${errorCode}`; + if (typeof errorDescription !== "undefined") { + message += `: ${errorDescription}`; + } + if (typeof errorUri !== "undefined") { + message += ` - ${errorUri}`; + } + const newError = new Error(message); + if (err) { + const keys = Object.keys(err); + if (err.stack) { + keys.push("stack"); + } + keys.forEach((key) => { + if (key !== "message") { + Object.defineProperty(newError, key, { + value: err[key], + writable: false, + enumerable: true + }); + } + }); + } + return newError; + } + } +}); + +// +var require_stscredentials = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.StsCredentials = void 0; + var gaxios_1 = require_src2(); + var authclient_1 = require_authclient(); + var oauth2common_1 = require_oauth2common(); + var util_1 = require_util10(); + var StsCredentials = class _StsCredentials extends oauth2common_1.OAuthClientAuthHandler { + #tokenExchangeEndpoint; + /** + * Initializes an STS credentials instance. + * + * @param options The STS credentials instance options. Passing an `tokenExchangeEndpoint` directly is **@DEPRECATED**. + * @param clientAuthentication **@DEPRECATED**. Provide a {@link StsCredentialsConstructionOptions `StsCredentialsConstructionOptions`} object in the first parameter instead. + */ + constructor(options = { + tokenExchangeEndpoint: "" + }, clientAuthentication) { + if (typeof options !== "object" || options instanceof URL) { + options = { + tokenExchangeEndpoint: options, + clientAuthentication + }; + } + super(options); + this.#tokenExchangeEndpoint = options.tokenExchangeEndpoint; + } + /** + * Exchanges the provided token for another type of token based on the + * rfc8693 spec. + * @param stsCredentialsOptions The token exchange options used to populate + * the token exchange request. + * @param additionalHeaders Optional additional headers to pass along the + * request. + * @param options Optional additional GCP-specific non-spec defined options + * to send with the request. + * Example: `&options=${encodeUriComponent(JSON.stringified(options))}` + * @return A promise that resolves with the token exchange response containing + * the requested token and its expiration time. + */ + async exchangeToken(stsCredentialsOptions, headers, options) { + const values = { + grant_type: stsCredentialsOptions.grantType, + resource: stsCredentialsOptions.resource, + audience: stsCredentialsOptions.audience, + scope: stsCredentialsOptions.scope?.join(" "), + requested_token_type: stsCredentialsOptions.requestedTokenType, + subject_token: stsCredentialsOptions.subjectToken, + subject_token_type: stsCredentialsOptions.subjectTokenType, + actor_token: stsCredentialsOptions.actingParty?.actorToken, + actor_token_type: stsCredentialsOptions.actingParty?.actorTokenType, + // Non-standard GCP-specific options. + options: options && JSON.stringify(options) + }; + const opts = { + ..._StsCredentials.RETRY_CONFIG, + url: this.#tokenExchangeEndpoint.toString(), + method: "POST", + headers, + data: new URLSearchParams((0, util_1.removeUndefinedValuesInObject)(values)) + }; + authclient_1.AuthClient.setMethodName(opts, "exchangeToken"); + this.applyClientAuthenticationOptions(opts); + try { + const response = await this.transporter.request(opts); + const stsSuccessfulResponse = response.data; + stsSuccessfulResponse.res = response; + return stsSuccessfulResponse; + } catch (error2) { + if (error2 instanceof gaxios_1.GaxiosError && error2.response) { + throw (0, oauth2common_1.getErrorFromOAuthErrorResponse)( + error2.response.data, + // Preserve other fields from the original error. + error2 + ); + } + throw error2; + } + } + }; + exports.StsCredentials = StsCredentials; + } +}); + +// +var require_baseexternalclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.BaseExternalAccountClient = exports.CLOUD_RESOURCE_MANAGER = exports.EXTERNAL_ACCOUNT_TYPE = exports.EXPIRATION_TIME_OFFSET = void 0; + var gaxios_1 = require_src2(); + var stream = __require("stream"); + var authclient_1 = require_authclient(); + var sts = require_stscredentials(); + var util_1 = require_util10(); + var shared_cjs_1 = require_shared2(); + var STS_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange"; + var STS_REQUEST_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token"; + var DEFAULT_OAUTH_SCOPE = "https://www.googleapis.com/auth/cloud-platform"; + var DEFAULT_TOKEN_LIFESPAN = 3600; + exports.EXPIRATION_TIME_OFFSET = 5 * 60 * 1e3; + exports.EXTERNAL_ACCOUNT_TYPE = "external_account"; + exports.CLOUD_RESOURCE_MANAGER = "https://cloudresourcemanager.googleapis.com/v1/projects/"; + var WORKFORCE_AUDIENCE_PATTERN = "//iam\\.googleapis\\.com/locations/[^/]+/workforcePools/[^/]+/providers/.+"; + var DEFAULT_TOKEN_URL = "https://sts.{universeDomain}/v1/token"; + var BaseExternalAccountClient = class _BaseExternalAccountClient extends authclient_1.AuthClient { + /** + * OAuth scopes for the GCP access token to use. When not provided, + * the default https://www.googleapis.com/auth/cloud-platform is + * used. + */ + scopes; + projectNumber; + audience; + subjectTokenType; + stsCredential; + clientAuth; + credentialSourceType; + cachedAccessToken; + serviceAccountImpersonationUrl; + serviceAccountImpersonationLifetime; + workforcePoolUserProject; + configLifetimeRequested; + tokenUrl; + /** + * @example + * ```ts + * new URL('https://cloudresourcemanager.googleapis.com/v1/projects/'); + * ``` + */ + cloudResourceManagerURL; + supplierContext; + /** + * A pending access token request. Used for concurrent calls. + */ + #pendingAccessToken = null; + /** + * Instantiate a BaseExternalAccountClient instance using the provided JSON + * object loaded from an external account credentials file. + * @param options The external account options object typically loaded + * from the external account JSON credential file. The camelCased options + * are aliases for the snake_cased options. + */ + constructor(options) { + super(options); + const opts = (0, util_1.originalOrCamelOptions)(options); + const type = opts.get("type"); + if (type && type !== exports.EXTERNAL_ACCOUNT_TYPE) { + throw new Error(`Expected "${exports.EXTERNAL_ACCOUNT_TYPE}" type but received "${options.type}"`); + } + const clientId = opts.get("client_id"); + const clientSecret = opts.get("client_secret"); + this.tokenUrl = opts.get("token_url") ?? DEFAULT_TOKEN_URL.replace("{universeDomain}", this.universeDomain); + const subjectTokenType = opts.get("subject_token_type"); + const workforcePoolUserProject = opts.get("workforce_pool_user_project"); + const serviceAccountImpersonationUrl = opts.get("service_account_impersonation_url"); + const serviceAccountImpersonation = opts.get("service_account_impersonation"); + const serviceAccountImpersonationLifetime = (0, util_1.originalOrCamelOptions)(serviceAccountImpersonation).get("token_lifetime_seconds"); + this.cloudResourceManagerURL = new URL(opts.get("cloud_resource_manager_url") || `https://cloudresourcemanager.${this.universeDomain}/v1/projects/`); + if (clientId) { + this.clientAuth = { + confidentialClientType: "basic", + clientId, + clientSecret + }; + } + this.stsCredential = new sts.StsCredentials({ + tokenExchangeEndpoint: this.tokenUrl, + clientAuthentication: this.clientAuth + }); + this.scopes = opts.get("scopes") || [DEFAULT_OAUTH_SCOPE]; + this.cachedAccessToken = null; + this.audience = opts.get("audience"); + this.subjectTokenType = subjectTokenType; + this.workforcePoolUserProject = workforcePoolUserProject; + const workforceAudiencePattern = new RegExp(WORKFORCE_AUDIENCE_PATTERN); + if (this.workforcePoolUserProject && !this.audience.match(workforceAudiencePattern)) { + throw new Error("workforcePoolUserProject should not be set for non-workforce pool credentials."); + } + this.serviceAccountImpersonationUrl = serviceAccountImpersonationUrl; + this.serviceAccountImpersonationLifetime = serviceAccountImpersonationLifetime; + if (this.serviceAccountImpersonationLifetime) { + this.configLifetimeRequested = true; + } else { + this.configLifetimeRequested = false; + this.serviceAccountImpersonationLifetime = DEFAULT_TOKEN_LIFESPAN; + } + this.projectNumber = this.getProjectNumber(this.audience); + this.supplierContext = { + audience: this.audience, + subjectTokenType: this.subjectTokenType, + transporter: this.transporter + }; + } + /** The service account email to be impersonated, if available. */ + getServiceAccountEmail() { + if (this.serviceAccountImpersonationUrl) { + if (this.serviceAccountImpersonationUrl.length > 256) { + throw new RangeError(`URL is too long: ${this.serviceAccountImpersonationUrl}`); + } + const re = /serviceAccounts\/(?[^:]+):generateAccessToken$/; + const result = re.exec(this.serviceAccountImpersonationUrl); + return result?.groups?.email || null; + } + return null; + } + /** + * Provides a mechanism to inject GCP access tokens directly. + * When the provided credential expires, a new credential, using the + * external account options, is retrieved. + * @param credentials The Credentials object to set on the current client. + */ + setCredentials(credentials) { + super.setCredentials(credentials); + this.cachedAccessToken = credentials; + } + /** + * @return A promise that resolves with the current GCP access token + * response. If the current credential is expired, a new one is retrieved. + */ + async getAccessToken() { + if (!this.cachedAccessToken || this.isExpired(this.cachedAccessToken)) { + await this.refreshAccessTokenAsync(); + } + return { + token: this.cachedAccessToken.access_token, + res: this.cachedAccessToken.res + }; + } + /** + * The main authentication interface. It takes an optional url which when + * present is the endpoint being accessed, and returns a Promise which + * resolves with authorization header fields. + * + * The result has the form: + * { authorization: 'Bearer ' } + */ + async getRequestHeaders() { + const accessTokenResponse = await this.getAccessToken(); + const headers = new Headers({ + authorization: `Bearer ${accessTokenResponse.token}` + }); + return this.addSharedMetadataHeaders(headers); + } + request(opts, callback) { + if (callback) { + this.requestAsync(opts).then((r2) => callback(null, r2), (e2) => { + return callback(e2, e2.response); + }); + } else { + return this.requestAsync(opts); + } + } + /** + * @return A promise that resolves with the project ID corresponding to the + * current workload identity pool or current workforce pool if + * determinable. For workforce pool credential, it returns the project ID + * corresponding to the workforcePoolUserProject. + * This is introduced to match the current pattern of using the Auth + * library: + * const projectId = await auth.getProjectId(); + * const url = `https://dns.googleapis.com/dns/v1/projects/${projectId}`; + * const res = await client.request({ url }); + * The resource may not have permission + * (resourcemanager.projects.get) to call this API or the required + * scopes may not be selected: + * https://cloud.google.com/resource-manager/reference/rest/v1/projects/get#authorization-scopes + */ + async getProjectId() { + const projectNumber = this.projectNumber || this.workforcePoolUserProject; + if (this.projectId) { + return this.projectId; + } else if (projectNumber) { + const headers = await this.getRequestHeaders(); + const opts = { + ..._BaseExternalAccountClient.RETRY_CONFIG, + headers, + url: `${this.cloudResourceManagerURL.toString()}${projectNumber}` + }; + authclient_1.AuthClient.setMethodName(opts, "getProjectId"); + const response = await this.transporter.request(opts); + this.projectId = response.data.projectId; + return this.projectId; + } + return null; + } + /** + * Authenticates the provided HTTP request, processes it and resolves with the + * returned response. + * @param opts The HTTP request options. + * @param reAuthRetried Whether the current attempt is a retry after a failed attempt due to an auth failure. + * @return A promise that resolves with the successful response. + */ + async requestAsync(opts, reAuthRetried = false) { + let response; + try { + const requestHeaders = await this.getRequestHeaders(); + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers); + this.addUserProjectAndAuthHeaders(opts.headers, requestHeaders); + response = await this.transporter.request(opts); + } catch (e2) { + const res = e2.response; + if (res) { + const statusCode = res.status; + const isReadableStream = res.config.data instanceof stream.Readable; + const isAuthErr = statusCode === 401 || statusCode === 403; + if (!reAuthRetried && isAuthErr && !isReadableStream && this.forceRefreshOnFailure) { + await this.refreshAccessTokenAsync(); + return await this.requestAsync(opts, true); + } + } + throw e2; + } + return response; + } + /** + * Forces token refresh, even if unexpired tokens are currently cached. + * External credentials are exchanged for GCP access tokens via the token + * exchange endpoint and other settings provided in the client options + * object. + * If the service_account_impersonation_url is provided, an additional + * step to exchange the external account GCP access token for a service + * account impersonated token is performed. + * @return A promise that resolves with the fresh GCP access tokens. + */ + async refreshAccessTokenAsync() { + this.#pendingAccessToken = this.#pendingAccessToken || this.#internalRefreshAccessTokenAsync(); + try { + return await this.#pendingAccessToken; + } finally { + this.#pendingAccessToken = null; + } + } + async #internalRefreshAccessTokenAsync() { + const subjectToken = await this.retrieveSubjectToken(); + const stsCredentialsOptions = { + grantType: STS_GRANT_TYPE, + audience: this.audience, + requestedTokenType: STS_REQUEST_TOKEN_TYPE, + subjectToken, + subjectTokenType: this.subjectTokenType, + // generateAccessToken requires the provided access token to have + // scopes: + // https://www.googleapis.com/auth/iam or + // https://www.googleapis.com/auth/cloud-platform + // The new service account access token scopes will match the user + // provided ones. + scope: this.serviceAccountImpersonationUrl ? [DEFAULT_OAUTH_SCOPE] : this.getScopesArray() + }; + const additionalOptions = !this.clientAuth && this.workforcePoolUserProject ? { userProject: this.workforcePoolUserProject } : void 0; + const additionalHeaders = new Headers({ + "x-goog-api-client": this.getMetricsHeaderValue() + }); + const stsResponse = await this.stsCredential.exchangeToken(stsCredentialsOptions, additionalHeaders, additionalOptions); + if (this.serviceAccountImpersonationUrl) { + this.cachedAccessToken = await this.getImpersonatedAccessToken(stsResponse.access_token); + } else if (stsResponse.expires_in) { + this.cachedAccessToken = { + access_token: stsResponse.access_token, + expiry_date: (/* @__PURE__ */ new Date()).getTime() + stsResponse.expires_in * 1e3, + res: stsResponse.res + }; + } else { + this.cachedAccessToken = { + access_token: stsResponse.access_token, + res: stsResponse.res + }; + } + this.credentials = {}; + Object.assign(this.credentials, this.cachedAccessToken); + delete this.credentials.res; + this.emit("tokens", { + refresh_token: null, + expiry_date: this.cachedAccessToken.expiry_date, + access_token: this.cachedAccessToken.access_token, + token_type: "Bearer", + id_token: null + }); + return this.cachedAccessToken; + } + /** + * Returns the workload identity pool project number if it is determinable + * from the audience resource name. + * @param audience The STS audience used to determine the project number. + * @return The project number associated with the workload identity pool, if + * this can be determined from the STS audience field. Otherwise, null is + * returned. + */ + getProjectNumber(audience) { + const match = audience.match(/\/projects\/([^/]+)/); + if (!match) { + return null; + } + return match[1]; + } + /** + * Exchanges an external account GCP access token for a service + * account impersonated access token using iamcredentials + * GenerateAccessToken API. + * @param token The access token to exchange for a service account access + * token. + * @return A promise that resolves with the service account impersonated + * credentials response. + */ + async getImpersonatedAccessToken(token) { + const opts = { + ..._BaseExternalAccountClient.RETRY_CONFIG, + url: this.serviceAccountImpersonationUrl, + method: "POST", + headers: { + "content-type": "application/json", + authorization: `Bearer ${token}` + }, + data: { + scope: this.getScopesArray(), + lifetime: this.serviceAccountImpersonationLifetime + "s" + } + }; + authclient_1.AuthClient.setMethodName(opts, "getImpersonatedAccessToken"); + const response = await this.transporter.request(opts); + const successResponse = response.data; + return { + access_token: successResponse.accessToken, + // Convert from ISO format to timestamp. + expiry_date: new Date(successResponse.expireTime).getTime(), + res: response + }; + } + /** + * Returns whether the provided credentials are expired or not. + * If there is no expiry time, assumes the token is not expired or expiring. + * @param accessToken The credentials to check for expiration. + * @return Whether the credentials are expired or not. + */ + isExpired(accessToken) { + const now = (/* @__PURE__ */ new Date()).getTime(); + return accessToken.expiry_date ? now >= accessToken.expiry_date - this.eagerRefreshThresholdMillis : false; + } + /** + * @return The list of scopes for the requested GCP access token. + */ + getScopesArray() { + if (typeof this.scopes === "string") { + return [this.scopes]; + } + return this.scopes || [DEFAULT_OAUTH_SCOPE]; + } + getMetricsHeaderValue() { + const nodeVersion = process.version.replace(/^v/, ""); + const saImpersonation = this.serviceAccountImpersonationUrl !== void 0; + const credentialSourceType = this.credentialSourceType ? this.credentialSourceType : "unknown"; + return `gl-node/${nodeVersion} auth/${shared_cjs_1.pkg.version} google-byoid-sdk source/${credentialSourceType} sa-impersonation/${saImpersonation} config-lifetime/${this.configLifetimeRequested}`; + } + getTokenUrl() { + return this.tokenUrl; + } + }; + exports.BaseExternalAccountClient = BaseExternalAccountClient; + } +}); + +// +var require_filesubjecttokensupplier = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.FileSubjectTokenSupplier = void 0; + var util_1 = __require("util"); + var fs5 = __require("fs"); + var readFile = (0, util_1.promisify)(fs5.readFile ?? (() => { + })); + var realpath = (0, util_1.promisify)(fs5.realpath ?? (() => { + })); + var lstat2 = (0, util_1.promisify)(fs5.lstat ?? (() => { + })); + var FileSubjectTokenSupplier = class { + filePath; + formatType; + subjectTokenFieldName; + /** + * Instantiates a new file based subject token supplier. + * @param opts The file subject token supplier options to build the supplier + * with. + */ + constructor(opts) { + this.filePath = opts.filePath; + this.formatType = opts.formatType; + this.subjectTokenFieldName = opts.subjectTokenFieldName; + } + /** + * Returns the subject token stored at the file specified in the constructor. + * @param context {@link ExternalAccountSupplierContext} from the calling + * {@link IdentityPoolClient}, contains the requested audience and subject + * token type for the external account identity. Not used. + */ + async getSubjectToken() { + let parsedFilePath = this.filePath; + try { + parsedFilePath = await realpath(parsedFilePath); + if (!(await lstat2(parsedFilePath)).isFile()) { + throw new Error(); + } + } catch (err) { + if (err instanceof Error) { + err.message = `The file at ${parsedFilePath} does not exist, or it is not a file. ${err.message}`; + } + throw err; + } + let subjectToken; + const rawText = await readFile(parsedFilePath, { encoding: "utf8" }); + if (this.formatType === "text") { + subjectToken = rawText; + } else if (this.formatType === "json" && this.subjectTokenFieldName) { + const json = JSON.parse(rawText); + subjectToken = json[this.subjectTokenFieldName]; + } + if (!subjectToken) { + throw new Error("Unable to parse the subject_token from the credential_source file"); + } + return subjectToken; + } + }; + exports.FileSubjectTokenSupplier = FileSubjectTokenSupplier; + } +}); + +// +var require_urlsubjecttokensupplier = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.UrlSubjectTokenSupplier = void 0; + var authclient_1 = require_authclient(); + var UrlSubjectTokenSupplier = class { + url; + headers; + formatType; + subjectTokenFieldName; + additionalGaxiosOptions; + /** + * Instantiates a URL subject token supplier. + * @param opts The URL subject token supplier options to build the supplier with. + */ + constructor(opts) { + this.url = opts.url; + this.formatType = opts.formatType; + this.subjectTokenFieldName = opts.subjectTokenFieldName; + this.headers = opts.headers; + this.additionalGaxiosOptions = opts.additionalGaxiosOptions; + } + /** + * Sends a GET request to the URL provided in the constructor and resolves + * with the returned external subject token. + * @param context {@link ExternalAccountSupplierContext} from the calling + * {@link IdentityPoolClient}, contains the requested audience and subject + * token type for the external account identity. Not used. + */ + async getSubjectToken(context3) { + const opts = { + ...this.additionalGaxiosOptions, + url: this.url, + method: "GET", + headers: this.headers + }; + authclient_1.AuthClient.setMethodName(opts, "getSubjectToken"); + let subjectToken; + if (this.formatType === "text") { + const response = await context3.transporter.request(opts); + subjectToken = response.data; + } else if (this.formatType === "json" && this.subjectTokenFieldName) { + const response = await context3.transporter.request(opts); + subjectToken = response.data[this.subjectTokenFieldName]; + } + if (!subjectToken) { + throw new Error("Unable to parse the subject_token from the credential_source URL"); + } + return subjectToken; + } + }; + exports.UrlSubjectTokenSupplier = UrlSubjectTokenSupplier; + } +}); + +// +var require_certificatesubjecttokensupplier = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.CertificateSubjectTokenSupplier = exports.InvalidConfigurationError = exports.CertificateSourceUnavailableError = exports.CERTIFICATE_CONFIGURATION_ENV_VARIABLE = void 0; + var util_1 = require_util10(); + var fs5 = __require("fs"); + var crypto_1 = __require("crypto"); + var https3 = __require("https"); + exports.CERTIFICATE_CONFIGURATION_ENV_VARIABLE = "GOOGLE_API_CERTIFICATE_CONFIG"; + var CertificateSourceUnavailableError = class extends Error { + constructor(message) { + super(message); + this.name = "CertificateSourceUnavailableError"; + } + }; + exports.CertificateSourceUnavailableError = CertificateSourceUnavailableError; + var InvalidConfigurationError = class extends Error { + constructor(message) { + super(message); + this.name = "InvalidConfigurationError"; + } + }; + exports.InvalidConfigurationError = InvalidConfigurationError; + var CertificateSubjectTokenSupplier = class { + certificateConfigPath; + trustChainPath; + cert; + key; + /** + * Initializes a new instance of the CertificateSubjectTokenSupplier. + * @param opts The configuration options for the supplier. + */ + constructor(opts) { + if (!opts.useDefaultCertificateConfig && !opts.certificateConfigLocation) { + throw new InvalidConfigurationError("Either `useDefaultCertificateConfig` must be true or a `certificateConfigLocation` must be provided."); + } + if (opts.useDefaultCertificateConfig && opts.certificateConfigLocation) { + throw new InvalidConfigurationError("Both `useDefaultCertificateConfig` and `certificateConfigLocation` cannot be provided."); + } + this.trustChainPath = opts.trustChainPath; + this.certificateConfigPath = opts.certificateConfigLocation ?? ""; + } + /** + * Creates an HTTPS agent configured with the client certificate and private key for mTLS. + * @returns An mTLS-configured https.Agent. + */ + async createMtlsHttpsAgent() { + if (!this.key || !this.cert) { + throw new InvalidConfigurationError("Cannot create mTLS Agent with missing certificate or key"); + } + return new https3.Agent({ key: this.key, cert: this.cert }); + } + /** + * Constructs the subject token, which is the base64-encoded certificate chain. + * @returns A promise that resolves with the subject token. + */ + async getSubjectToken() { + this.certificateConfigPath = await this.#resolveCertificateConfigFilePath(); + const { certPath, keyPath } = await this.#getCertAndKeyPaths(); + ({ cert: this.cert, key: this.key } = await this.#getKeyAndCert(certPath, keyPath)); + return await this.#processChainFromPaths(this.cert); + } + /** + * Resolves the absolute path to the certificate configuration file + * by checking the "certificate_config_location" provided in the ADC file, + * or the "GOOGLE_API_CERTIFICATE_CONFIG" environment variable + * or in the default gcloud path. + * @param overridePath An optional path to check first. + * @returns The resolved file path. + */ + async #resolveCertificateConfigFilePath() { + const overridePath = this.certificateConfigPath; + if (overridePath) { + if (await (0, util_1.isValidFile)(overridePath)) { + return overridePath; + } + throw new CertificateSourceUnavailableError(`Provided certificate config path is invalid: ${overridePath}`); + } + const envPath = process.env[exports.CERTIFICATE_CONFIGURATION_ENV_VARIABLE]; + if (envPath) { + if (await (0, util_1.isValidFile)(envPath)) { + return envPath; + } + throw new CertificateSourceUnavailableError(`Path from environment variable "${exports.CERTIFICATE_CONFIGURATION_ENV_VARIABLE}" is invalid: ${envPath}`); + } + const wellKnownPath = (0, util_1.getWellKnownCertificateConfigFileLocation)(); + if (await (0, util_1.isValidFile)(wellKnownPath)) { + return wellKnownPath; + } + throw new CertificateSourceUnavailableError(`Could not find certificate configuration file. Searched override path, the "${exports.CERTIFICATE_CONFIGURATION_ENV_VARIABLE}" env var, and the gcloud path (${wellKnownPath}).`); + } + /** + * Reads and parses the certificate config JSON file to extract the certificate and key paths. + * @returns An object containing the certificate and key paths. + */ + async #getCertAndKeyPaths() { + const configPath = this.certificateConfigPath; + let fileContents; + try { + fileContents = await fs5.promises.readFile(configPath, "utf8"); + } catch (err) { + throw new CertificateSourceUnavailableError(`Failed to read certificate config file at: ${configPath}`); + } + try { + const config = JSON.parse(fileContents); + const certPath = config?.cert_configs?.workload?.cert_path; + const keyPath = config?.cert_configs?.workload?.key_path; + if (!certPath || !keyPath) { + throw new InvalidConfigurationError(`Certificate config file (${configPath}) is missing required "cert_path" or "key_path" in the workload config.`); + } + return { certPath, keyPath }; + } catch (e2) { + if (e2 instanceof InvalidConfigurationError) + throw e2; + throw new InvalidConfigurationError(`Failed to parse certificate config from ${configPath}: ${e2.message}`); + } + } + /** + * Reads and parses the cert and key files get their content and check valid format. + * @returns An object containing the cert content and key content in buffer format. + */ + async #getKeyAndCert(certPath, keyPath) { + let cert, key; + try { + cert = await fs5.promises.readFile(certPath); + new crypto_1.X509Certificate(cert); + } catch (err) { + const message = err instanceof Error ? err.message : String(err); + throw new CertificateSourceUnavailableError(`Failed to read certificate file at ${certPath}: ${message}`); + } + try { + key = await fs5.promises.readFile(keyPath); + (0, crypto_1.createPrivateKey)(key); + } catch (err) { + const message = err instanceof Error ? err.message : String(err); + throw new CertificateSourceUnavailableError(`Failed to read private key file at ${keyPath}: ${message}`); + } + return { cert, key }; + } + /** + * Reads the leaf certificate and trust chain, combines them, + * and returns a JSON array of base64-encoded certificates. + * @returns A stringified JSON array of the certificate chain. + */ + async #processChainFromPaths(leafCertBuffer) { + const leafCert = new crypto_1.X509Certificate(leafCertBuffer); + if (!this.trustChainPath) { + return JSON.stringify([leafCert.raw.toString("base64")]); + } + try { + const chainPems = await fs5.promises.readFile(this.trustChainPath, "utf8"); + const pemBlocks = chainPems.match(/-----BEGIN CERTIFICATE-----[^-]+-----END CERTIFICATE-----/g) ?? []; + const chainCerts = pemBlocks.map((pem, index) => { + try { + return new crypto_1.X509Certificate(pem); + } catch (err) { + const message = err instanceof Error ? err.message : String(err); + throw new InvalidConfigurationError(`Failed to parse certificate at index ${index} in trust chain file ${this.trustChainPath}: ${message}`); + } + }); + const leafIndex = chainCerts.findIndex((chainCert) => leafCert.raw.equals(chainCert.raw)); + let finalChain; + if (leafIndex === -1) { + finalChain = [leafCert, ...chainCerts]; + } else if (leafIndex === 0) { + finalChain = chainCerts; + } else { + throw new InvalidConfigurationError(`Leaf certificate exists in the trust chain but is not the first entry (found at index ${leafIndex}).`); + } + return JSON.stringify(finalChain.map((cert) => cert.raw.toString("base64"))); + } catch (err) { + if (err instanceof InvalidConfigurationError) + throw err; + const message = err instanceof Error ? err.message : String(err); + throw new CertificateSourceUnavailableError(`Failed to process certificate chain from ${this.trustChainPath}: ${message}`); + } + } + }; + exports.CertificateSubjectTokenSupplier = CertificateSubjectTokenSupplier; + } +}); + +// +var require_identitypoolclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.IdentityPoolClient = void 0; + var baseexternalclient_1 = require_baseexternalclient(); + var util_1 = require_util10(); + var filesubjecttokensupplier_1 = require_filesubjecttokensupplier(); + var urlsubjecttokensupplier_1 = require_urlsubjecttokensupplier(); + var certificatesubjecttokensupplier_1 = require_certificatesubjecttokensupplier(); + var stscredentials_1 = require_stscredentials(); + var gaxios_1 = require_src2(); + var IdentityPoolClient = class _IdentityPoolClient extends baseexternalclient_1.BaseExternalAccountClient { + subjectTokenSupplier; + /** + * Instantiate an IdentityPoolClient instance using the provided JSON + * object loaded from an external account credentials file. + * An error is thrown if the credential is not a valid file-sourced or + * url-sourced credential or a workforce pool user project is provided + * with a non workforce audience. + * @param options The external account options object typically loaded + * from the external account JSON credential file. The camelCased options + * are aliases for the snake_cased options. + */ + constructor(options) { + super(options); + const opts = (0, util_1.originalOrCamelOptions)(options); + const credentialSource = opts.get("credential_source"); + const subjectTokenSupplier = opts.get("subject_token_supplier"); + if (!credentialSource && !subjectTokenSupplier) { + throw new Error("A credential source or subject token supplier must be specified."); + } + if (credentialSource && subjectTokenSupplier) { + throw new Error("Only one of credential source or subject token supplier can be specified."); + } + if (subjectTokenSupplier) { + this.subjectTokenSupplier = subjectTokenSupplier; + this.credentialSourceType = "programmatic"; + } else { + const credentialSourceOpts = (0, util_1.originalOrCamelOptions)(credentialSource); + const formatOpts = (0, util_1.originalOrCamelOptions)(credentialSourceOpts.get("format")); + const formatType = formatOpts.get("type") || "text"; + const formatSubjectTokenFieldName = formatOpts.get("subject_token_field_name"); + if (formatType !== "json" && formatType !== "text") { + throw new Error(`Invalid credential_source format "${formatType}"`); + } + if (formatType === "json" && !formatSubjectTokenFieldName) { + throw new Error("Missing subject_token_field_name for JSON credential_source format"); + } + const file = credentialSourceOpts.get("file"); + const url = credentialSourceOpts.get("url"); + const certificate = credentialSourceOpts.get("certificate"); + const headers = credentialSourceOpts.get("headers"); + if (file && url || url && certificate || file && certificate) { + throw new Error('No valid Identity Pool "credential_source" provided, must be either file, url, or certificate.'); + } else if (file) { + this.credentialSourceType = "file"; + this.subjectTokenSupplier = new filesubjecttokensupplier_1.FileSubjectTokenSupplier({ + filePath: file, + formatType, + subjectTokenFieldName: formatSubjectTokenFieldName + }); + } else if (url) { + this.credentialSourceType = "url"; + this.subjectTokenSupplier = new urlsubjecttokensupplier_1.UrlSubjectTokenSupplier({ + url, + formatType, + subjectTokenFieldName: formatSubjectTokenFieldName, + headers, + additionalGaxiosOptions: _IdentityPoolClient.RETRY_CONFIG + }); + } else if (certificate) { + this.credentialSourceType = "certificate"; + const certificateSubjecttokensupplier = new certificatesubjecttokensupplier_1.CertificateSubjectTokenSupplier({ + useDefaultCertificateConfig: certificate.use_default_certificate_config, + certificateConfigLocation: certificate.certificate_config_location, + trustChainPath: certificate.trust_chain_path + }); + this.subjectTokenSupplier = certificateSubjecttokensupplier; + } else { + throw new Error('No valid Identity Pool "credential_source" provided, must be either file, url, or certificate.'); + } + } + } + /** + * Triggered when a external subject token is needed to be exchanged for a GCP + * access token via GCP STS endpoint. Gets a subject token by calling + * the configured {@link SubjectTokenSupplier} + * @return A promise that resolves with the external subject token. + */ + async retrieveSubjectToken() { + const subjectToken = await this.subjectTokenSupplier.getSubjectToken(this.supplierContext); + if (this.subjectTokenSupplier instanceof certificatesubjecttokensupplier_1.CertificateSubjectTokenSupplier) { + const mtlsAgent = await this.subjectTokenSupplier.createMtlsHttpsAgent(); + this.stsCredential = new stscredentials_1.StsCredentials({ + tokenExchangeEndpoint: this.getTokenUrl(), + clientAuthentication: this.clientAuth, + transporter: new gaxios_1.Gaxios({ agent: mtlsAgent }) + }); + this.transporter = new gaxios_1.Gaxios({ + ...this.transporter.defaults || {}, + agent: mtlsAgent + }); + } + return subjectToken; + } + }; + exports.IdentityPoolClient = IdentityPoolClient; + } +}); + +// +var require_awsrequestsigner = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AwsRequestSigner = void 0; + var gaxios_1 = require_src2(); + var crypto_1 = require_crypto3(); + var AWS_ALGORITHM = "AWS4-HMAC-SHA256"; + var AWS_REQUEST_TYPE = "aws4_request"; + var AwsRequestSigner = class { + getCredentials; + region; + crypto; + /** + * Instantiates an AWS API request signer used to send authenticated signed + * requests to AWS APIs based on the AWS Signature Version 4 signing process. + * This also provides a mechanism to generate the signed request without + * sending it. + * @param getCredentials A mechanism to retrieve AWS security credentials + * when needed. + * @param region The AWS region to use. + */ + constructor(getCredentials, region) { + this.getCredentials = getCredentials; + this.region = region; + this.crypto = (0, crypto_1.createCrypto)(); + } + /** + * Generates the signed request for the provided HTTP request for calling + * an AWS API. This follows the steps described at: + * https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html + * @param amzOptions The AWS request options that need to be signed. + * @return A promise that resolves with the GaxiosOptions containing the + * signed HTTP request parameters. + */ + async getRequestOptions(amzOptions) { + if (!amzOptions.url) { + throw new RangeError('"url" is required in "amzOptions"'); + } + const requestPayloadData = typeof amzOptions.data === "object" ? JSON.stringify(amzOptions.data) : amzOptions.data; + const url = amzOptions.url; + const method = amzOptions.method || "GET"; + const requestPayload = amzOptions.body || requestPayloadData; + const additionalAmzHeaders = amzOptions.headers; + const awsSecurityCredentials = await this.getCredentials(); + const uri = new URL(url); + if (typeof requestPayload !== "string" && requestPayload !== void 0) { + throw new TypeError(`'requestPayload' is expected to be a string if provided. Got: ${requestPayload}`); + } + const headerMap = await generateAuthenticationHeaderMap({ + crypto: this.crypto, + host: uri.host, + canonicalUri: uri.pathname, + canonicalQuerystring: uri.search.slice(1), + method, + region: this.region, + securityCredentials: awsSecurityCredentials, + requestPayload, + additionalAmzHeaders + }); + const headers = gaxios_1.Gaxios.mergeHeaders( + // Add x-amz-date if available. + headerMap.amzDate ? { "x-amz-date": headerMap.amzDate } : {}, + { + authorization: headerMap.authorizationHeader, + host: uri.host + }, + additionalAmzHeaders || {} + ); + if (awsSecurityCredentials.token) { + gaxios_1.Gaxios.mergeHeaders(headers, { + "x-amz-security-token": awsSecurityCredentials.token + }); + } + const awsSignedReq = { + url, + method, + headers + }; + if (requestPayload !== void 0) { + awsSignedReq.body = requestPayload; + } + return awsSignedReq; + } + }; + exports.AwsRequestSigner = AwsRequestSigner; + async function sign(crypto3, key, msg) { + return await crypto3.signWithHmacSha256(key, msg); + } + async function getSigningKey(crypto3, key, dateStamp, region, serviceName) { + const kDate = await sign(crypto3, `AWS4${key}`, dateStamp); + const kRegion = await sign(crypto3, kDate, region); + const kService = await sign(crypto3, kRegion, serviceName); + const kSigning = await sign(crypto3, kService, "aws4_request"); + return kSigning; + } + async function generateAuthenticationHeaderMap(options) { + const additionalAmzHeaders = gaxios_1.Gaxios.mergeHeaders(options.additionalAmzHeaders); + const requestPayload = options.requestPayload || ""; + const serviceName = options.host.split(".")[0]; + const now = /* @__PURE__ */ new Date(); + const amzDate = now.toISOString().replace(/[-:]/g, "").replace(/\.[0-9]+/, ""); + const dateStamp = now.toISOString().replace(/[-]/g, "").replace(/T.*/, ""); + if (options.securityCredentials.token) { + additionalAmzHeaders.set("x-amz-security-token", options.securityCredentials.token); + } + const amzHeaders = gaxios_1.Gaxios.mergeHeaders( + { + host: options.host + }, + // Previously the date was not fixed with x-amz- and could be provided manually. + // https://github.com/boto/botocore/blob/879f8440a4e9ace5d3cf145ce8b3d5e5ffb892ef/tests/unit/auth/aws4_testsuite/get-header-value-trim.req + additionalAmzHeaders.has("date") ? {} : { "x-amz-date": amzDate }, + additionalAmzHeaders + ); + let canonicalHeaders = ""; + const signedHeadersList = [ + ...amzHeaders.keys() + ].sort(); + signedHeadersList.forEach((key) => { + canonicalHeaders += `${key}:${amzHeaders.get(key)} +`; + }); + const signedHeaders = signedHeadersList.join(";"); + const payloadHash = await options.crypto.sha256DigestHex(requestPayload); + const canonicalRequest = `${options.method.toUpperCase()} +${options.canonicalUri} +${options.canonicalQuerystring} +${canonicalHeaders} +${signedHeaders} +${payloadHash}`; + const credentialScope = `${dateStamp}/${options.region}/${serviceName}/${AWS_REQUEST_TYPE}`; + const stringToSign = `${AWS_ALGORITHM} +${amzDate} +${credentialScope} +` + await options.crypto.sha256DigestHex(canonicalRequest); + const signingKey = await getSigningKey(options.crypto, options.securityCredentials.secretAccessKey, dateStamp, options.region, serviceName); + const signature = await sign(options.crypto, signingKey, stringToSign); + const authorizationHeader = `${AWS_ALGORITHM} Credential=${options.securityCredentials.accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${(0, crypto_1.fromArrayBufferToHex)(signature)}`; + return { + // Do not return x-amz-date if date is available. + amzDate: additionalAmzHeaders.has("date") ? void 0 : amzDate, + authorizationHeader, + canonicalQuerystring: options.canonicalQuerystring + }; + } + } +}); + +// +var require_defaultawssecuritycredentialssupplier = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DefaultAwsSecurityCredentialsSupplier = void 0; + var authclient_1 = require_authclient(); + var DefaultAwsSecurityCredentialsSupplier = class { + regionUrl; + securityCredentialsUrl; + imdsV2SessionTokenUrl; + additionalGaxiosOptions; + /** + * Instantiates a new DefaultAwsSecurityCredentialsSupplier using information + * from the credential_source stored in the ADC file. + * @param opts The default aws security credentials supplier options object to + * build the supplier with. + */ + constructor(opts) { + this.regionUrl = opts.regionUrl; + this.securityCredentialsUrl = opts.securityCredentialsUrl; + this.imdsV2SessionTokenUrl = opts.imdsV2SessionTokenUrl; + this.additionalGaxiosOptions = opts.additionalGaxiosOptions; + } + /** + * Returns the active AWS region. This first checks to see if the region + * is available as an environment variable. If it is not, then the supplier + * will call the region URL. + * @param context {@link ExternalAccountSupplierContext} from the calling + * {@link AwsClient}, contains the requested audience and subject token type + * for the external account identity. + * @return A promise that resolves with the AWS region string. + */ + async getAwsRegion(context3) { + if (this.#regionFromEnv) { + return this.#regionFromEnv; + } + const metadataHeaders = new Headers(); + if (!this.#regionFromEnv && this.imdsV2SessionTokenUrl) { + metadataHeaders.set("x-aws-ec2-metadata-token", await this.#getImdsV2SessionToken(context3.transporter)); + } + if (!this.regionUrl) { + throw new RangeError('Unable to determine AWS region due to missing "options.credential_source.region_url"'); + } + const opts = { + ...this.additionalGaxiosOptions, + url: this.regionUrl, + method: "GET", + headers: metadataHeaders + }; + authclient_1.AuthClient.setMethodName(opts, "getAwsRegion"); + const response = await context3.transporter.request(opts); + return response.data.substr(0, response.data.length - 1); + } + /** + * Returns AWS security credentials. This first checks to see if the credentials + * is available as environment variables. If it is not, then the supplier + * will call the security credentials URL. + * @param context {@link ExternalAccountSupplierContext} from the calling + * {@link AwsClient}, contains the requested audience and subject token type + * for the external account identity. + * @return A promise that resolves with the AWS security credentials. + */ + async getAwsSecurityCredentials(context3) { + if (this.#securityCredentialsFromEnv) { + return this.#securityCredentialsFromEnv; + } + const metadataHeaders = new Headers(); + if (this.imdsV2SessionTokenUrl) { + metadataHeaders.set("x-aws-ec2-metadata-token", await this.#getImdsV2SessionToken(context3.transporter)); + } + const roleName = await this.#getAwsRoleName(metadataHeaders, context3.transporter); + const awsCreds = await this.#retrieveAwsSecurityCredentials(roleName, metadataHeaders, context3.transporter); + return { + accessKeyId: awsCreds.AccessKeyId, + secretAccessKey: awsCreds.SecretAccessKey, + token: awsCreds.Token + }; + } + /** + * @param transporter The transporter to use for requests. + * @return A promise that resolves with the IMDSv2 Session Token. + */ + async #getImdsV2SessionToken(transporter) { + const opts = { + ...this.additionalGaxiosOptions, + url: this.imdsV2SessionTokenUrl, + method: "PUT", + headers: { "x-aws-ec2-metadata-token-ttl-seconds": "300" } + }; + authclient_1.AuthClient.setMethodName(opts, "#getImdsV2SessionToken"); + const response = await transporter.request(opts); + return response.data; + } + /** + * @param headers The headers to be used in the metadata request. + * @param transporter The transporter to use for requests. + * @return A promise that resolves with the assigned role to the current + * AWS VM. This is needed for calling the security-credentials endpoint. + */ + async #getAwsRoleName(headers, transporter) { + if (!this.securityCredentialsUrl) { + throw new Error('Unable to determine AWS role name due to missing "options.credential_source.url"'); + } + const opts = { + ...this.additionalGaxiosOptions, + url: this.securityCredentialsUrl, + method: "GET", + headers + }; + authclient_1.AuthClient.setMethodName(opts, "#getAwsRoleName"); + const response = await transporter.request(opts); + return response.data; + } + /** + * Retrieves the temporary AWS credentials by calling the security-credentials + * endpoint as specified in the `credential_source` object. + * @param roleName The role attached to the current VM. + * @param headers The headers to be used in the metadata request. + * @param transporter The transporter to use for requests. + * @return A promise that resolves with the temporary AWS credentials + * needed for creating the GetCallerIdentity signed request. + */ + async #retrieveAwsSecurityCredentials(roleName, headers, transporter) { + const opts = { + ...this.additionalGaxiosOptions, + url: `${this.securityCredentialsUrl}/${roleName}`, + headers + }; + authclient_1.AuthClient.setMethodName(opts, "#retrieveAwsSecurityCredentials"); + const response = await transporter.request(opts); + return response.data; + } + get #regionFromEnv() { + return process.env["AWS_REGION"] || process.env["AWS_DEFAULT_REGION"] || null; + } + get #securityCredentialsFromEnv() { + if (process.env["AWS_ACCESS_KEY_ID"] && process.env["AWS_SECRET_ACCESS_KEY"]) { + return { + accessKeyId: process.env["AWS_ACCESS_KEY_ID"], + secretAccessKey: process.env["AWS_SECRET_ACCESS_KEY"], + token: process.env["AWS_SESSION_TOKEN"] + }; + } + return null; + } + }; + exports.DefaultAwsSecurityCredentialsSupplier = DefaultAwsSecurityCredentialsSupplier; + } +}); + +// +var require_awsclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AwsClient = void 0; + var awsrequestsigner_1 = require_awsrequestsigner(); + var baseexternalclient_1 = require_baseexternalclient(); + var defaultawssecuritycredentialssupplier_1 = require_defaultawssecuritycredentialssupplier(); + var util_1 = require_util10(); + var gaxios_1 = require_src2(); + var AwsClient = class _AwsClient extends baseexternalclient_1.BaseExternalAccountClient { + environmentId; + awsSecurityCredentialsSupplier; + regionalCredVerificationUrl; + awsRequestSigner; + region; + static #DEFAULT_AWS_REGIONAL_CREDENTIAL_VERIFICATION_URL = "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15"; + /** + * @deprecated AWS client no validates the EC2 metadata address. + **/ + static AWS_EC2_METADATA_IPV4_ADDRESS = "169.254.169.254"; + /** + * @deprecated AWS client no validates the EC2 metadata address. + **/ + static AWS_EC2_METADATA_IPV6_ADDRESS = "fd00:ec2::254"; + /** + * Instantiates an AwsClient instance using the provided JSON + * object loaded from an external account credentials file. + * An error is thrown if the credential is not a valid AWS credential. + * @param options The external account options object typically loaded + * from the external account JSON credential file. + */ + constructor(options) { + super(options); + const opts = (0, util_1.originalOrCamelOptions)(options); + const credentialSource = opts.get("credential_source"); + const awsSecurityCredentialsSupplier = opts.get("aws_security_credentials_supplier"); + if (!credentialSource && !awsSecurityCredentialsSupplier) { + throw new Error("A credential source or AWS security credentials supplier must be specified."); + } + if (credentialSource && awsSecurityCredentialsSupplier) { + throw new Error("Only one of credential source or AWS security credentials supplier can be specified."); + } + if (awsSecurityCredentialsSupplier) { + this.awsSecurityCredentialsSupplier = awsSecurityCredentialsSupplier; + this.regionalCredVerificationUrl = _AwsClient.#DEFAULT_AWS_REGIONAL_CREDENTIAL_VERIFICATION_URL; + this.credentialSourceType = "programmatic"; + } else { + const credentialSourceOpts = (0, util_1.originalOrCamelOptions)(credentialSource); + this.environmentId = credentialSourceOpts.get("environment_id"); + const regionUrl = credentialSourceOpts.get("region_url"); + const securityCredentialsUrl = credentialSourceOpts.get("url"); + const imdsV2SessionTokenUrl = credentialSourceOpts.get("imdsv2_session_token_url"); + this.awsSecurityCredentialsSupplier = new defaultawssecuritycredentialssupplier_1.DefaultAwsSecurityCredentialsSupplier({ + regionUrl, + securityCredentialsUrl, + imdsV2SessionTokenUrl + }); + this.regionalCredVerificationUrl = credentialSourceOpts.get("regional_cred_verification_url"); + this.credentialSourceType = "aws"; + this.validateEnvironmentId(); + } + this.awsRequestSigner = null; + this.region = ""; + } + validateEnvironmentId() { + const match = this.environmentId?.match(/^(aws)(\d+)$/); + if (!match || !this.regionalCredVerificationUrl) { + throw new Error('No valid AWS "credential_source" provided'); + } else if (parseInt(match[2], 10) !== 1) { + throw new Error(`aws version "${match[2]}" is not supported in the current build.`); + } + } + /** + * Triggered when an external subject token is needed to be exchanged for a + * GCP access token via GCP STS endpoint. This will call the + * {@link AwsSecurityCredentialsSupplier} to retrieve an AWS region and AWS + * Security Credentials, then use them to create a signed AWS STS request that + * can be exchanged for a GCP access token. + * @return A promise that resolves with the external subject token. + */ + async retrieveSubjectToken() { + if (!this.awsRequestSigner) { + this.region = await this.awsSecurityCredentialsSupplier.getAwsRegion(this.supplierContext); + this.awsRequestSigner = new awsrequestsigner_1.AwsRequestSigner(async () => { + return this.awsSecurityCredentialsSupplier.getAwsSecurityCredentials(this.supplierContext); + }, this.region); + } + const options = await this.awsRequestSigner.getRequestOptions({ + ..._AwsClient.RETRY_CONFIG, + url: this.regionalCredVerificationUrl.replace("{region}", this.region), + method: "POST" + }); + const reformattedHeader = []; + const extendedHeaders = gaxios_1.Gaxios.mergeHeaders({ + // The full, canonical resource name of the workload identity pool + // provider, with or without the HTTPS prefix. + // Including this header as part of the signature is recommended to + // ensure data integrity. + "x-goog-cloud-target-resource": this.audience + }, options.headers); + extendedHeaders.forEach((value, key) => reformattedHeader.push({ key, value })); + return encodeURIComponent(JSON.stringify({ + url: options.url, + method: options.method, + headers: reformattedHeader + })); + } + }; + exports.AwsClient = AwsClient; + } +}); + +// +var require_executable_response = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.InvalidSubjectTokenError = exports.InvalidMessageFieldError = exports.InvalidCodeFieldError = exports.InvalidTokenTypeFieldError = exports.InvalidExpirationTimeFieldError = exports.InvalidSuccessFieldError = exports.InvalidVersionFieldError = exports.ExecutableResponseError = exports.ExecutableResponse = void 0; + var SAML_SUBJECT_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:saml2"; + var OIDC_SUBJECT_TOKEN_TYPE1 = "urn:ietf:params:oauth:token-type:id_token"; + var OIDC_SUBJECT_TOKEN_TYPE2 = "urn:ietf:params:oauth:token-type:jwt"; + var ExecutableResponse = class { + /** + * The version of the Executable response. Only version 1 is currently supported. + */ + version; + /** + * Whether the executable ran successfully. + */ + success; + /** + * The epoch time for expiration of the token in seconds. + */ + expirationTime; + /** + * The type of subject token in the response, currently supported values are: + * urn:ietf:params:oauth:token-type:saml2 + * urn:ietf:params:oauth:token-type:id_token + * urn:ietf:params:oauth:token-type:jwt + */ + tokenType; + /** + * The error code from the executable. + */ + errorCode; + /** + * The error message from the executable. + */ + errorMessage; + /** + * The subject token from the executable, format depends on tokenType. + */ + subjectToken; + /** + * Instantiates an ExecutableResponse instance using the provided JSON object + * from the output of the executable. + * @param responseJson Response from a 3rd party executable, loaded from a + * run of the executable or a cached output file. + */ + constructor(responseJson) { + if (!responseJson.version) { + throw new InvalidVersionFieldError("Executable response must contain a 'version' field."); + } + if (responseJson.success === void 0) { + throw new InvalidSuccessFieldError("Executable response must contain a 'success' field."); + } + this.version = responseJson.version; + this.success = responseJson.success; + if (this.success) { + this.expirationTime = responseJson.expiration_time; + this.tokenType = responseJson.token_type; + if (this.tokenType !== SAML_SUBJECT_TOKEN_TYPE && this.tokenType !== OIDC_SUBJECT_TOKEN_TYPE1 && this.tokenType !== OIDC_SUBJECT_TOKEN_TYPE2) { + throw new InvalidTokenTypeFieldError(`Executable response must contain a 'token_type' field when successful and it must be one of ${OIDC_SUBJECT_TOKEN_TYPE1}, ${OIDC_SUBJECT_TOKEN_TYPE2}, or ${SAML_SUBJECT_TOKEN_TYPE}.`); + } + if (this.tokenType === SAML_SUBJECT_TOKEN_TYPE) { + if (!responseJson.saml_response) { + throw new InvalidSubjectTokenError(`Executable response must contain a 'saml_response' field when token_type=${SAML_SUBJECT_TOKEN_TYPE}.`); + } + this.subjectToken = responseJson.saml_response; + } else { + if (!responseJson.id_token) { + throw new InvalidSubjectTokenError(`Executable response must contain a 'id_token' field when token_type=${OIDC_SUBJECT_TOKEN_TYPE1} or ${OIDC_SUBJECT_TOKEN_TYPE2}.`); + } + this.subjectToken = responseJson.id_token; + } + } else { + if (!responseJson.code) { + throw new InvalidCodeFieldError("Executable response must contain a 'code' field when unsuccessful."); + } + if (!responseJson.message) { + throw new InvalidMessageFieldError("Executable response must contain a 'message' field when unsuccessful."); + } + this.errorCode = responseJson.code; + this.errorMessage = responseJson.message; + } + } + /** + * @return A boolean representing if the response has a valid token. Returns + * true when the response was successful and the token is not expired. + */ + isValid() { + return !this.isExpired() && this.success; + } + /** + * @return A boolean representing if the response is expired. Returns true if the + * provided timeout has passed. + */ + isExpired() { + return this.expirationTime !== void 0 && this.expirationTime < Math.round(Date.now() / 1e3); + } + }; + exports.ExecutableResponse = ExecutableResponse; + var ExecutableResponseError = class extends Error { + constructor(message) { + super(message); + Object.setPrototypeOf(this, new.target.prototype); + } + }; + exports.ExecutableResponseError = ExecutableResponseError; + var InvalidVersionFieldError = class extends ExecutableResponseError { + }; + exports.InvalidVersionFieldError = InvalidVersionFieldError; + var InvalidSuccessFieldError = class extends ExecutableResponseError { + }; + exports.InvalidSuccessFieldError = InvalidSuccessFieldError; + var InvalidExpirationTimeFieldError = class extends ExecutableResponseError { + }; + exports.InvalidExpirationTimeFieldError = InvalidExpirationTimeFieldError; + var InvalidTokenTypeFieldError = class extends ExecutableResponseError { + }; + exports.InvalidTokenTypeFieldError = InvalidTokenTypeFieldError; + var InvalidCodeFieldError = class extends ExecutableResponseError { + }; + exports.InvalidCodeFieldError = InvalidCodeFieldError; + var InvalidMessageFieldError = class extends ExecutableResponseError { + }; + exports.InvalidMessageFieldError = InvalidMessageFieldError; + var InvalidSubjectTokenError = class extends ExecutableResponseError { + }; + exports.InvalidSubjectTokenError = InvalidSubjectTokenError; + } +}); + +// +var require_pluggable_auth_handler = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.PluggableAuthHandler = exports.ExecutableError = void 0; + var executable_response_1 = require_executable_response(); + var childProcess = __require("child_process"); + var fs5 = __require("fs"); + var ExecutableError = class extends Error { + /** + * The exit code returned by the executable. + */ + code; + constructor(message, code) { + super(`The executable failed with exit code: ${code} and error message: ${message}.`); + this.code = code; + Object.setPrototypeOf(this, new.target.prototype); + } + }; + exports.ExecutableError = ExecutableError; + var PluggableAuthHandler = class _PluggableAuthHandler { + commandComponents; + timeoutMillis; + outputFile; + /** + * Instantiates a PluggableAuthHandler instance using the provided + * PluggableAuthHandlerOptions object. + */ + constructor(options) { + if (!options.command) { + throw new Error("No command provided."); + } + this.commandComponents = _PluggableAuthHandler.parseCommand(options.command); + this.timeoutMillis = options.timeoutMillis; + if (!this.timeoutMillis) { + throw new Error("No timeoutMillis provided."); + } + this.outputFile = options.outputFile; + } + /** + * Calls user provided executable to get a 3rd party subject token and + * returns the response. + * @param envMap a Map of additional Environment Variables required for + * the executable. + * @return A promise that resolves with the executable response. + */ + retrieveResponseFromExecutable(envMap) { + return new Promise((resolve2, reject) => { + const child2 = childProcess.spawn(this.commandComponents[0], this.commandComponents.slice(1), { + env: { ...process.env, ...Object.fromEntries(envMap) } + }); + let output = ""; + child2.stdout.on("data", (data) => { + output += data; + }); + child2.stderr.on("data", (err) => { + output += err; + }); + const timeout = setTimeout(() => { + child2.removeAllListeners(); + child2.kill(); + return reject(new Error("The executable failed to finish within the timeout specified.")); + }, this.timeoutMillis); + child2.on("close", (code) => { + clearTimeout(timeout); + if (code === 0) { + try { + const responseJson = JSON.parse(output); + const response = new executable_response_1.ExecutableResponse(responseJson); + return resolve2(response); + } catch (error2) { + if (error2 instanceof executable_response_1.ExecutableResponseError) { + return reject(error2); + } + return reject(new executable_response_1.ExecutableResponseError(`The executable returned an invalid response: ${output}`)); + } + } else { + return reject(new ExecutableError(output, code.toString())); + } + }); + }); + } + /** + * Checks user provided output file for response from previous run of + * executable and return the response if it exists, is formatted correctly, and is not expired. + */ + async retrieveCachedResponse() { + if (!this.outputFile || this.outputFile.length === 0) { + return void 0; + } + let filePath; + try { + filePath = await fs5.promises.realpath(this.outputFile); + } catch { + return void 0; + } + if (!(await fs5.promises.lstat(filePath)).isFile()) { + return void 0; + } + const responseString = await fs5.promises.readFile(filePath, { + encoding: "utf8" + }); + if (responseString === "") { + return void 0; + } + try { + const responseJson = JSON.parse(responseString); + const response = new executable_response_1.ExecutableResponse(responseJson); + if (response.isValid()) { + return new executable_response_1.ExecutableResponse(responseJson); + } + return void 0; + } catch (error2) { + if (error2 instanceof executable_response_1.ExecutableResponseError) { + throw error2; + } + throw new executable_response_1.ExecutableResponseError(`The output file contained an invalid response: ${responseString}`); + } + } + /** + * Parses given command string into component array, splitting on spaces unless + * spaces are between quotation marks. + */ + static parseCommand(command) { + const components = command.match(/(?:[^\s"]+|"[^"]*")+/g); + if (!components) { + throw new Error(`Provided command: "${command}" could not be parsed.`); + } + for (let i2 = 0; i2 < components.length; i2++) { + if (components[i2][0] === '"' && components[i2].slice(-1) === '"') { + components[i2] = components[i2].slice(1, -1); + } + } + return components; + } + }; + exports.PluggableAuthHandler = PluggableAuthHandler; + } +}); + +// +var require_pluggable_auth_client = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.PluggableAuthClient = exports.ExecutableError = void 0; + var baseexternalclient_1 = require_baseexternalclient(); + var executable_response_1 = require_executable_response(); + var pluggable_auth_handler_1 = require_pluggable_auth_handler(); + var pluggable_auth_handler_2 = require_pluggable_auth_handler(); + Object.defineProperty(exports, "ExecutableError", { enumerable: true, get: function() { + return pluggable_auth_handler_2.ExecutableError; + } }); + var DEFAULT_EXECUTABLE_TIMEOUT_MILLIS = 30 * 1e3; + var MINIMUM_EXECUTABLE_TIMEOUT_MILLIS = 5 * 1e3; + var MAXIMUM_EXECUTABLE_TIMEOUT_MILLIS = 120 * 1e3; + var GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES = "GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES"; + var MAXIMUM_EXECUTABLE_VERSION = 1; + var PluggableAuthClient = class extends baseexternalclient_1.BaseExternalAccountClient { + /** + * The command used to retrieve the third party token. + */ + command; + /** + * The timeout in milliseconds for running executable, + * set to default if none provided. + */ + timeoutMillis; + /** + * The path to file to check for cached executable response. + */ + outputFile; + /** + * Executable and output file handler. + */ + handler; + /** + * Instantiates a PluggableAuthClient instance using the provided JSON + * object loaded from an external account credentials file. + * An error is thrown if the credential is not a valid pluggable auth credential. + * @param options The external account options object typically loaded from + * the external account JSON credential file. + */ + constructor(options) { + super(options); + if (!options.credential_source.executable) { + throw new Error('No valid Pluggable Auth "credential_source" provided.'); + } + this.command = options.credential_source.executable.command; + if (!this.command) { + throw new Error('No valid Pluggable Auth "credential_source" provided.'); + } + if (options.credential_source.executable.timeout_millis === void 0) { + this.timeoutMillis = DEFAULT_EXECUTABLE_TIMEOUT_MILLIS; + } else { + this.timeoutMillis = options.credential_source.executable.timeout_millis; + if (this.timeoutMillis < MINIMUM_EXECUTABLE_TIMEOUT_MILLIS || this.timeoutMillis > MAXIMUM_EXECUTABLE_TIMEOUT_MILLIS) { + throw new Error(`Timeout must be between ${MINIMUM_EXECUTABLE_TIMEOUT_MILLIS} and ${MAXIMUM_EXECUTABLE_TIMEOUT_MILLIS} milliseconds.`); + } + } + this.outputFile = options.credential_source.executable.output_file; + this.handler = new pluggable_auth_handler_1.PluggableAuthHandler({ + command: this.command, + timeoutMillis: this.timeoutMillis, + outputFile: this.outputFile + }); + this.credentialSourceType = "executable"; + } + /** + * Triggered when an external subject token is needed to be exchanged for a + * GCP access token via GCP STS endpoint. + * This uses the `options.credential_source` object to figure out how + * to retrieve the token using the current environment. In this case, + * this calls a user provided executable which returns the subject token. + * The logic is summarized as: + * 1. Validated that the executable is allowed to run. The + * GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES environment must be set to + * 1 for security reasons. + * 2. If an output file is specified by the user, check the file location + * for a response. If the file exists and contains a valid response, + * return the subject token from the file. + * 3. Call the provided executable and return response. + * @return A promise that resolves with the external subject token. + */ + async retrieveSubjectToken() { + if (process.env[GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES] !== "1") { + throw new Error("Pluggable Auth executables need to be explicitly allowed to run by setting the GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES environment Variable to 1."); + } + let executableResponse = void 0; + if (this.outputFile) { + executableResponse = await this.handler.retrieveCachedResponse(); + } + if (!executableResponse) { + const envMap = /* @__PURE__ */ new Map(); + envMap.set("GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE", this.audience); + envMap.set("GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE", this.subjectTokenType); + envMap.set("GOOGLE_EXTERNAL_ACCOUNT_INTERACTIVE", "0"); + if (this.outputFile) { + envMap.set("GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE", this.outputFile); + } + const serviceAccountEmail = this.getServiceAccountEmail(); + if (serviceAccountEmail) { + envMap.set("GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL", serviceAccountEmail); + } + executableResponse = await this.handler.retrieveResponseFromExecutable(envMap); + } + if (executableResponse.version > MAXIMUM_EXECUTABLE_VERSION) { + throw new Error(`Version of executable is not currently supported, maximum supported version is ${MAXIMUM_EXECUTABLE_VERSION}.`); + } + if (!executableResponse.success) { + throw new pluggable_auth_handler_1.ExecutableError(executableResponse.errorMessage, executableResponse.errorCode); + } + if (this.outputFile) { + if (!executableResponse.expirationTime) { + throw new executable_response_1.InvalidExpirationTimeFieldError("The executable response must contain the `expiration_time` field for successful responses when an output_file has been specified in the configuration."); + } + } + if (executableResponse.isExpired()) { + throw new Error("Executable response is expired."); + } + return executableResponse.subjectToken; + } + }; + exports.PluggableAuthClient = PluggableAuthClient; + } +}); + +// +var require_externalclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ExternalAccountClient = void 0; + var baseexternalclient_1 = require_baseexternalclient(); + var identitypoolclient_1 = require_identitypoolclient(); + var awsclient_1 = require_awsclient(); + var pluggable_auth_client_1 = require_pluggable_auth_client(); + var ExternalAccountClient = class { + constructor() { + throw new Error("ExternalAccountClients should be initialized via: ExternalAccountClient.fromJSON(), directly via explicit constructors, eg. new AwsClient(options), new IdentityPoolClient(options), newPluggableAuthClientOptions, or via new GoogleAuth(options).getClient()"); + } + /** + * This static method will instantiate the + * corresponding type of external account credential depending on the + * underlying credential source. + * + * **IMPORTANT**: This method does not validate the credential configuration. + * A security risk occurs when a credential configuration configured with + * malicious URLs is used. When the credential configuration is accepted from + * an untrusted source, you should validate it before using it with this + * method. For more details, see + * https://cloud.google.com/docs/authentication/external/externally-sourced-credentials. + * + * @param options The external account options object typically loaded + * from the external account JSON credential file. + * @return A BaseExternalAccountClient instance or null if the options + * provided do not correspond to an external account credential. + */ + static fromJSON(options) { + if (options && options.type === baseexternalclient_1.EXTERNAL_ACCOUNT_TYPE) { + if (options.credential_source?.environment_id) { + return new awsclient_1.AwsClient(options); + } else if (options.credential_source?.executable) { + return new pluggable_auth_client_1.PluggableAuthClient(options); + } else { + return new identitypoolclient_1.IdentityPoolClient(options); + } + } else { + return null; + } + } + }; + exports.ExternalAccountClient = ExternalAccountClient; + } +}); + +// +var require_externalAccountAuthorizedUserClient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ExternalAccountAuthorizedUserClient = exports.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE = void 0; + var authclient_1 = require_authclient(); + var oauth2common_1 = require_oauth2common(); + var gaxios_1 = require_src2(); + var stream = __require("stream"); + var baseexternalclient_1 = require_baseexternalclient(); + exports.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE = "external_account_authorized_user"; + var DEFAULT_TOKEN_URL = "https://sts.{universeDomain}/v1/oauthtoken"; + var ExternalAccountAuthorizedUserHandler = class _ExternalAccountAuthorizedUserHandler extends oauth2common_1.OAuthClientAuthHandler { + #tokenRefreshEndpoint; + /** + * Initializes an ExternalAccountAuthorizedUserHandler instance. + * @param url The URL of the token refresh endpoint. + * @param transporter The transporter to use for the refresh request. + * @param clientAuthentication The client authentication credentials to use + * for the refresh request. + */ + constructor(options) { + super(options); + this.#tokenRefreshEndpoint = options.tokenRefreshEndpoint; + } + /** + * Requests a new access token from the token_url endpoint using the provided + * refresh token. + * @param refreshToken The refresh token to use to generate a new access token. + * @param additionalHeaders Optional additional headers to pass along the + * request. + * @return A promise that resolves with the token refresh response containing + * the requested access token and its expiration time. + */ + async refreshToken(refreshToken2, headers) { + const opts = { + ..._ExternalAccountAuthorizedUserHandler.RETRY_CONFIG, + url: this.#tokenRefreshEndpoint, + method: "POST", + headers, + data: new URLSearchParams({ + grant_type: "refresh_token", + refresh_token: refreshToken2 + }) + }; + authclient_1.AuthClient.setMethodName(opts, "refreshToken"); + this.applyClientAuthenticationOptions(opts); + try { + const response = await this.transporter.request(opts); + const tokenRefreshResponse = response.data; + tokenRefreshResponse.res = response; + return tokenRefreshResponse; + } catch (error2) { + if (error2 instanceof gaxios_1.GaxiosError && error2.response) { + throw (0, oauth2common_1.getErrorFromOAuthErrorResponse)( + error2.response.data, + // Preserve other fields from the original error. + error2 + ); + } + throw error2; + } + } + }; + var ExternalAccountAuthorizedUserClient = class extends authclient_1.AuthClient { + cachedAccessToken; + externalAccountAuthorizedUserHandler; + refreshToken; + /** + * Instantiates an ExternalAccountAuthorizedUserClient instances using the + * provided JSON object loaded from a credentials files. + * An error is throws if the credential is not valid. + * @param options The external account authorized user option object typically + * from the external accoutn authorized user JSON credential file. + */ + constructor(options) { + super(options); + if (options.universe_domain) { + this.universeDomain = options.universe_domain; + } + this.refreshToken = options.refresh_token; + const clientAuthentication = { + confidentialClientType: "basic", + clientId: options.client_id, + clientSecret: options.client_secret + }; + this.externalAccountAuthorizedUserHandler = new ExternalAccountAuthorizedUserHandler({ + tokenRefreshEndpoint: options.token_url ?? DEFAULT_TOKEN_URL.replace("{universeDomain}", this.universeDomain), + transporter: this.transporter, + clientAuthentication + }); + this.cachedAccessToken = null; + this.quotaProjectId = options.quota_project_id; + if (typeof options?.eagerRefreshThresholdMillis !== "number") { + this.eagerRefreshThresholdMillis = baseexternalclient_1.EXPIRATION_TIME_OFFSET; + } else { + this.eagerRefreshThresholdMillis = options.eagerRefreshThresholdMillis; + } + this.forceRefreshOnFailure = !!options?.forceRefreshOnFailure; + } + async getAccessToken() { + if (!this.cachedAccessToken || this.isExpired(this.cachedAccessToken)) { + await this.refreshAccessTokenAsync(); + } + return { + token: this.cachedAccessToken.access_token, + res: this.cachedAccessToken.res + }; + } + async getRequestHeaders() { + const accessTokenResponse = await this.getAccessToken(); + const headers = new Headers({ + authorization: `Bearer ${accessTokenResponse.token}` + }); + return this.addSharedMetadataHeaders(headers); + } + request(opts, callback) { + if (callback) { + this.requestAsync(opts).then((r2) => callback(null, r2), (e2) => { + return callback(e2, e2.response); + }); + } else { + return this.requestAsync(opts); + } + } + /** + * Authenticates the provided HTTP request, processes it and resolves with the + * returned response. + * @param opts The HTTP request options. + * @param reAuthRetried Whether the current attempt is a retry after a failed attempt due to an auth failure. + * @return A promise that resolves with the successful response. + */ + async requestAsync(opts, reAuthRetried = false) { + let response; + try { + const requestHeaders = await this.getRequestHeaders(); + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers); + this.addUserProjectAndAuthHeaders(opts.headers, requestHeaders); + response = await this.transporter.request(opts); + } catch (e2) { + const res = e2.response; + if (res) { + const statusCode = res.status; + const isReadableStream = res.config.data instanceof stream.Readable; + const isAuthErr = statusCode === 401 || statusCode === 403; + if (!reAuthRetried && isAuthErr && !isReadableStream && this.forceRefreshOnFailure) { + await this.refreshAccessTokenAsync(); + return await this.requestAsync(opts, true); + } + } + throw e2; + } + return response; + } + /** + * Forces token refresh, even if unexpired tokens are currently cached. + * @return A promise that resolves with the refreshed credential. + */ + async refreshAccessTokenAsync() { + const refreshResponse = await this.externalAccountAuthorizedUserHandler.refreshToken(this.refreshToken); + this.cachedAccessToken = { + access_token: refreshResponse.access_token, + expiry_date: (/* @__PURE__ */ new Date()).getTime() + refreshResponse.expires_in * 1e3, + res: refreshResponse.res + }; + if (refreshResponse.refresh_token !== void 0) { + this.refreshToken = refreshResponse.refresh_token; + } + return this.cachedAccessToken; + } + /** + * Returns whether the provided credentials are expired or not. + * If there is no expiry time, assumes the token is not expired or expiring. + * @param credentials The credentials to check for expiration. + * @return Whether the credentials are expired or not. + */ + isExpired(credentials) { + const now = (/* @__PURE__ */ new Date()).getTime(); + return credentials.expiry_date ? now >= credentials.expiry_date - this.eagerRefreshThresholdMillis : false; + } + }; + exports.ExternalAccountAuthorizedUserClient = ExternalAccountAuthorizedUserClient; + } +}); + +// +var require_googleauth = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GoogleAuth = exports.GoogleAuthExceptionMessages = void 0; + var child_process_1 = __require("child_process"); + var fs5 = __require("fs"); + var gaxios_1 = require_src2(); + var gcpMetadata = require_src4(); + var os7 = __require("os"); + var path7 = __require("path"); + var crypto_1 = require_crypto3(); + var computeclient_1 = require_computeclient(); + var idtokenclient_1 = require_idtokenclient(); + var envDetect_1 = require_envDetect(); + var jwtclient_1 = require_jwtclient(); + var refreshclient_1 = require_refreshclient(); + var impersonated_1 = require_impersonated(); + var externalclient_1 = require_externalclient(); + var baseexternalclient_1 = require_baseexternalclient(); + var authclient_1 = require_authclient(); + var externalAccountAuthorizedUserClient_1 = require_externalAccountAuthorizedUserClient(); + var util_1 = require_util10(); + exports.GoogleAuthExceptionMessages = { + API_KEY_WITH_CREDENTIALS: "API Keys and Credentials are mutually exclusive authentication methods and cannot be used together.", + NO_PROJECT_ID_FOUND: "Unable to detect a Project Id in the current environment. \nTo learn more about authentication and Google APIs, visit: \nhttps://cloud.google.com/docs/authentication/getting-started", + NO_CREDENTIALS_FOUND: "Unable to find credentials in current environment. \nTo learn more about authentication and Google APIs, visit: \nhttps://cloud.google.com/docs/authentication/getting-started", + NO_ADC_FOUND: "Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.", + NO_UNIVERSE_DOMAIN_FOUND: "Unable to detect a Universe Domain in the current environment.\nTo learn more about Universe Domain retrieval, visit: \nhttps://cloud.google.com/compute/docs/metadata/predefined-metadata-keys" + }; + var GoogleAuth2 = class { + /** + * Caches a value indicating whether the auth layer is running on Google + * Compute Engine. + * @private + */ + checkIsGCE = void 0; + useJWTAccessWithScope; + defaultServicePath; + // Note: this properly is only public to satisfy unit tests. + // https://github.com/Microsoft/TypeScript/issues/5228 + get isGCE() { + return this.checkIsGCE; + } + _findProjectIdPromise; + _cachedProjectId; + // To save the contents of the JSON credential file + jsonContent = null; + apiKey; + cachedCredential = null; + /** + * A pending {@link AuthClient}. Used for concurrent {@link GoogleAuth.getClient} calls. + */ + #pendingAuthClient = null; + /** + * Scopes populated by the client library by default. We differentiate between + * these and user defined scopes when deciding whether to use a self-signed JWT. + */ + defaultScopes; + keyFilename; + scopes; + clientOptions = {}; + /** + * Configuration is resolved in the following order of precedence: + * - {@link GoogleAuthOptions.credentials `credentials`} + * - {@link GoogleAuthOptions.keyFilename `keyFilename`} + * - {@link GoogleAuthOptions.keyFile `keyFile`} + * + * {@link GoogleAuthOptions.clientOptions `clientOptions`} are passed to the + * {@link AuthClient `AuthClient`s}. + * + * @param opts + */ + constructor(opts = {}) { + this._cachedProjectId = opts.projectId || null; + this.cachedCredential = opts.authClient || null; + this.keyFilename = opts.keyFilename || opts.keyFile; + this.scopes = opts.scopes; + this.clientOptions = opts.clientOptions || {}; + this.jsonContent = opts.credentials || null; + this.apiKey = opts.apiKey || this.clientOptions.apiKey || null; + if (this.apiKey && (this.jsonContent || this.clientOptions.credentials)) { + throw new RangeError(exports.GoogleAuthExceptionMessages.API_KEY_WITH_CREDENTIALS); + } + if (opts.universeDomain) { + this.clientOptions.universeDomain = opts.universeDomain; + } + } + // GAPIC client libraries should always use self-signed JWTs. The following + // variables are set on the JWT client in order to indicate the type of library, + // and sign the JWT with the correct audience and scopes (if not supplied). + setGapicJWTValues(client) { + client.defaultServicePath = this.defaultServicePath; + client.useJWTAccessWithScope = this.useJWTAccessWithScope; + client.defaultScopes = this.defaultScopes; + } + getProjectId(callback) { + if (callback) { + this.getProjectIdAsync().then((r2) => callback(null, r2), callback); + } else { + return this.getProjectIdAsync(); + } + } + /** + * A temporary method for internal `getProjectId` usages where `null` is + * acceptable. In a future major release, `getProjectId` should return `null` + * (as the `Promise` base signature describes) and this private + * method should be removed. + * + * @returns Promise that resolves with project id (or `null`) + */ + async getProjectIdOptional() { + try { + return await this.getProjectId(); + } catch (e2) { + if (e2 instanceof Error && e2.message === exports.GoogleAuthExceptionMessages.NO_PROJECT_ID_FOUND) { + return null; + } else { + throw e2; + } + } + } + /** + * A private method for finding and caching a projectId. + * + * Supports environments in order of precedence: + * - GCLOUD_PROJECT or GOOGLE_CLOUD_PROJECT environment variable + * - GOOGLE_APPLICATION_CREDENTIALS JSON file + * - Cloud SDK: `gcloud config config-helper --format json` + * - GCE project ID from metadata server + * + * @returns projectId + */ + async findAndCacheProjectId() { + let projectId = null; + projectId ||= await this.getProductionProjectId(); + projectId ||= await this.getFileProjectId(); + projectId ||= await this.getDefaultServiceProjectId(); + projectId ||= await this.getGCEProjectId(); + projectId ||= await this.getExternalAccountClientProjectId(); + if (projectId) { + this._cachedProjectId = projectId; + return projectId; + } else { + throw new Error(exports.GoogleAuthExceptionMessages.NO_PROJECT_ID_FOUND); + } + } + async getProjectIdAsync() { + if (this._cachedProjectId) { + return this._cachedProjectId; + } + if (!this._findProjectIdPromise) { + this._findProjectIdPromise = this.findAndCacheProjectId(); + } + return this._findProjectIdPromise; + } + /** + * Retrieves a universe domain from the metadata server via + * {@link gcpMetadata.universe}. + * + * @returns a universe domain + */ + async getUniverseDomainFromMetadataServer() { + let universeDomain; + try { + universeDomain = await gcpMetadata.universe("universe-domain"); + universeDomain ||= authclient_1.DEFAULT_UNIVERSE; + } catch (e2) { + if (e2 && e2?.response?.status === 404) { + universeDomain = authclient_1.DEFAULT_UNIVERSE; + } else { + throw e2; + } + } + return universeDomain; + } + /** + * Retrieves, caches, and returns the universe domain in the following order + * of precedence: + * - The universe domain in {@link GoogleAuth.clientOptions} + * - An existing or ADC {@link AuthClient}'s universe domain + * - {@link gcpMetadata.universe}, if {@link Compute} client + * + * @returns The universe domain + */ + async getUniverseDomain() { + let universeDomain = (0, util_1.originalOrCamelOptions)(this.clientOptions).get("universe_domain"); + try { + universeDomain ??= (await this.getClient()).universeDomain; + } catch { + universeDomain ??= authclient_1.DEFAULT_UNIVERSE; + } + return universeDomain; + } + /** + * @returns Any scopes (user-specified or default scopes specified by the + * client library) that need to be set on the current Auth client. + */ + getAnyScopes() { + return this.scopes || this.defaultScopes; + } + getApplicationDefault(optionsOrCallback = {}, callback) { + let options; + if (typeof optionsOrCallback === "function") { + callback = optionsOrCallback; + } else { + options = optionsOrCallback; + } + if (callback) { + this.getApplicationDefaultAsync(options).then((r2) => callback(null, r2.credential, r2.projectId), callback); + } else { + return this.getApplicationDefaultAsync(options); + } + } + async getApplicationDefaultAsync(options = {}) { + if (this.cachedCredential) { + return await this.#prepareAndCacheClient(this.cachedCredential, null); + } + let credential; + credential = await this._tryGetApplicationCredentialsFromEnvironmentVariable(options); + if (credential) { + if (credential instanceof jwtclient_1.JWT) { + credential.scopes = this.scopes; + } else if (credential instanceof baseexternalclient_1.BaseExternalAccountClient) { + credential.scopes = this.getAnyScopes(); + } + return await this.#prepareAndCacheClient(credential); + } + credential = await this._tryGetApplicationCredentialsFromWellKnownFile(options); + if (credential) { + if (credential instanceof jwtclient_1.JWT) { + credential.scopes = this.scopes; + } else if (credential instanceof baseexternalclient_1.BaseExternalAccountClient) { + credential.scopes = this.getAnyScopes(); + } + return await this.#prepareAndCacheClient(credential); + } + if (await this._checkIsGCE()) { + options.scopes = this.getAnyScopes(); + return await this.#prepareAndCacheClient(new computeclient_1.Compute(options)); + } + throw new Error(exports.GoogleAuthExceptionMessages.NO_ADC_FOUND); + } + async #prepareAndCacheClient(credential, quotaProjectIdOverride = process.env["GOOGLE_CLOUD_QUOTA_PROJECT"] || null) { + const projectId = await this.getProjectIdOptional(); + if (quotaProjectIdOverride) { + credential.quotaProjectId = quotaProjectIdOverride; + } + this.cachedCredential = credential; + return { credential, projectId }; + } + /** + * Determines whether the auth layer is running on Google Compute Engine. + * Checks for GCP Residency, then fallback to checking if metadata server + * is available. + * + * @returns A promise that resolves with the boolean. + * @api private + */ + async _checkIsGCE() { + if (this.checkIsGCE === void 0) { + this.checkIsGCE = gcpMetadata.getGCPResidency() || await gcpMetadata.isAvailable(); + } + return this.checkIsGCE; + } + /** + * Attempts to load default credentials from the environment variable path.. + * @returns Promise that resolves with the OAuth2Client or null. + * @api private + */ + async _tryGetApplicationCredentialsFromEnvironmentVariable(options) { + const credentialsPath = process.env["GOOGLE_APPLICATION_CREDENTIALS"] || process.env["google_application_credentials"]; + if (!credentialsPath || credentialsPath.length === 0) { + return null; + } + try { + return this._getApplicationCredentialsFromFilePath(credentialsPath, options); + } catch (e2) { + if (e2 instanceof Error) { + e2.message = `Unable to read the credential file specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable: ${e2.message}`; + } + throw e2; + } + } + /** + * Attempts to load default credentials from a well-known file location + * @return Promise that resolves with the OAuth2Client or null. + * @api private + */ + async _tryGetApplicationCredentialsFromWellKnownFile(options) { + let location = null; + if (this._isWindows()) { + location = process.env["APPDATA"]; + } else { + const home = process.env["HOME"]; + if (home) { + location = path7.join(home, ".config"); + } + } + if (location) { + location = path7.join(location, "gcloud", "application_default_credentials.json"); + if (!fs5.existsSync(location)) { + location = null; + } + } + if (!location) { + return null; + } + const client = await this._getApplicationCredentialsFromFilePath(location, options); + return client; + } + /** + * Attempts to load default credentials from a file at the given path.. + * @param filePath The path to the file to read. + * @returns Promise that resolves with the OAuth2Client + * @api private + */ + async _getApplicationCredentialsFromFilePath(filePath, options = {}) { + if (!filePath || filePath.length === 0) { + throw new Error("The file path is invalid."); + } + try { + filePath = fs5.realpathSync(filePath); + if (!fs5.lstatSync(filePath).isFile()) { + throw new Error(); + } + } catch (err) { + if (err instanceof Error) { + err.message = `The file at ${filePath} does not exist, or it is not a file. ${err.message}`; + } + throw err; + } + const readStream = fs5.createReadStream(filePath); + return this.fromStream(readStream, options); + } + /** + * Create a credentials instance using a given impersonated input options. + * @param json The impersonated input object. + * @returns JWT or UserRefresh Client with data + */ + fromImpersonatedJSON(json) { + if (!json) { + throw new Error("Must pass in a JSON object containing an impersonated refresh token"); + } + if (json.type !== impersonated_1.IMPERSONATED_ACCOUNT_TYPE) { + throw new Error(`The incoming JSON object does not have the "${impersonated_1.IMPERSONATED_ACCOUNT_TYPE}" type`); + } + if (!json.source_credentials) { + throw new Error("The incoming JSON object does not contain a source_credentials field"); + } + if (!json.service_account_impersonation_url) { + throw new Error("The incoming JSON object does not contain a service_account_impersonation_url field"); + } + const sourceClient = this.fromJSON(json.source_credentials); + if (json.service_account_impersonation_url?.length > 256) { + throw new RangeError(`Target principal is too long: ${json.service_account_impersonation_url}`); + } + const targetPrincipal = /(?[^/]+):(generateAccessToken|generateIdToken)$/.exec(json.service_account_impersonation_url)?.groups?.target; + if (!targetPrincipal) { + throw new RangeError(`Cannot extract target principal from ${json.service_account_impersonation_url}`); + } + const targetScopes = (this.scopes || json.scopes || this.defaultScopes) ?? []; + return new impersonated_1.Impersonated({ + ...json, + sourceClient, + targetPrincipal, + targetScopes: Array.isArray(targetScopes) ? targetScopes : [targetScopes] + }); + } + /** + * Create a credentials instance using the given input options. + * This client is not cached. + * + * **Important**: If you accept a credential configuration (credential JSON/File/Stream) from an external source for authentication to Google Cloud, you must validate it before providing it to any Google API or library. Providing an unvalidated credential configuration to Google APIs can compromise the security of your systems and data. For more information, refer to {@link https://cloud.google.com/docs/authentication/external/externally-sourced-credentials Validate credential configurations from external sources}. + * + * @deprecated This method is being deprecated because of a potential security risk. + * + * This method does not validate the credential configuration. The security + * risk occurs when a credential configuration is accepted from a source that + * is not under your control and used without validation on your side. + * + * If you know that you will be loading credential configurations of a + * specific type, it is recommended to use a credential-type-specific + * constructor. This will ensure that an unexpected credential type with + * potential for malicious intent is not loaded unintentionally. You might + * still have to do validation for certain credential types. Please follow + * the recommendation for that method. For example, if you want to load only + * service accounts, you can use the `JWT` constructor: + * ``` + * const {JWT} = require('google-auth-library'); + * const keys = require('/path/to/key.json'); + * const client = new JWT({ + * email: keys.client_email, + * key: keys.private_key, + * scopes: ['https://www.googleapis.com/auth/cloud-platform'], + * }); + * ``` + * + * If you are loading your credential configuration from an untrusted source and have + * not mitigated the risks (e.g. by validating the configuration yourself), make + * these changes as soon as possible to prevent security risks to your environment. + * + * Regardless of the method used, it is always your responsibility to validate + * configurations received from external sources. + * + * For more details, see https://cloud.google.com/docs/authentication/external/externally-sourced-credentials. + * + * @param json The input object. + * @param options The JWT or UserRefresh options for the client + * @returns JWT or UserRefresh Client with data + */ + fromJSON(json, options = {}) { + let client; + const preferredUniverseDomain = (0, util_1.originalOrCamelOptions)(options).get("universe_domain"); + if (json.type === refreshclient_1.USER_REFRESH_ACCOUNT_TYPE) { + client = new refreshclient_1.UserRefreshClient(options); + client.fromJSON(json); + } else if (json.type === impersonated_1.IMPERSONATED_ACCOUNT_TYPE) { + client = this.fromImpersonatedJSON(json); + } else if (json.type === baseexternalclient_1.EXTERNAL_ACCOUNT_TYPE) { + client = externalclient_1.ExternalAccountClient.fromJSON({ + ...json, + ...options + }); + client.scopes = this.getAnyScopes(); + } else if (json.type === externalAccountAuthorizedUserClient_1.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE) { + client = new externalAccountAuthorizedUserClient_1.ExternalAccountAuthorizedUserClient({ + ...json, + ...options + }); + } else { + options.scopes = this.scopes; + client = new jwtclient_1.JWT(options); + this.setGapicJWTValues(client); + client.fromJSON(json); + } + if (preferredUniverseDomain) { + client.universeDomain = preferredUniverseDomain; + } + return client; + } + /** + * Return a JWT or UserRefreshClient from JavaScript object, caching both the + * object used to instantiate and the client. + * @param json The input object. + * @param options The JWT or UserRefresh options for the client + * @returns JWT or UserRefresh Client with data + */ + _cacheClientFromJSON(json, options) { + const client = this.fromJSON(json, options); + this.jsonContent = json; + this.cachedCredential = client; + return client; + } + fromStream(inputStream, optionsOrCallback = {}, callback) { + let options = {}; + if (typeof optionsOrCallback === "function") { + callback = optionsOrCallback; + } else { + options = optionsOrCallback; + } + if (callback) { + this.fromStreamAsync(inputStream, options).then((r2) => callback(null, r2), callback); + } else { + return this.fromStreamAsync(inputStream, options); + } + } + fromStreamAsync(inputStream, options) { + return new Promise((resolve2, reject) => { + if (!inputStream) { + throw new Error("Must pass in a stream containing the Google auth settings."); + } + const chunks = []; + inputStream.setEncoding("utf8").on("error", reject).on("data", (chunk) => chunks.push(chunk)).on("end", () => { + try { + try { + const data = JSON.parse(chunks.join("")); + const r2 = this._cacheClientFromJSON(data, options); + return resolve2(r2); + } catch (err) { + if (!this.keyFilename) + throw err; + const client = new jwtclient_1.JWT({ + ...this.clientOptions, + keyFile: this.keyFilename + }); + this.cachedCredential = client; + this.setGapicJWTValues(client); + return resolve2(client); + } + } catch (err) { + return reject(err); + } + }); + }); + } + /** + * Create a credentials instance using the given API key string. + * The created client is not cached. In order to create and cache it use the {@link GoogleAuth.getClient `getClient`} method after first providing an {@link GoogleAuth.apiKey `apiKey`}. + * + * @param apiKey The API key string + * @param options An optional options object. + * @returns A JWT loaded from the key + */ + fromAPIKey(apiKey, options = {}) { + return new jwtclient_1.JWT({ ...options, apiKey }); + } + /** + * Determines whether the current operating system is Windows. + * @api private + */ + _isWindows() { + const sys = os7.platform(); + if (sys && sys.length >= 3) { + if (sys.substring(0, 3).toLowerCase() === "win") { + return true; + } + } + return false; + } + /** + * Run the Google Cloud SDK command that prints the default project ID + */ + async getDefaultServiceProjectId() { + return new Promise((resolve2) => { + (0, child_process_1.exec)("gcloud config config-helper --format json", (err, stdout) => { + if (!err && stdout) { + try { + const projectId = JSON.parse(stdout).configuration.properties.core.project; + resolve2(projectId); + return; + } catch (e2) { + } + } + resolve2(null); + }); + }); + } + /** + * Loads the project id from environment variables. + * @api private + */ + getProductionProjectId() { + return process.env["GCLOUD_PROJECT"] || process.env["GOOGLE_CLOUD_PROJECT"] || process.env["gcloud_project"] || process.env["google_cloud_project"]; + } + /** + * Loads the project id from the GOOGLE_APPLICATION_CREDENTIALS json file. + * @api private + */ + async getFileProjectId() { + if (this.cachedCredential) { + return this.cachedCredential.projectId; + } + if (this.keyFilename) { + const creds = await this.getClient(); + if (creds && creds.projectId) { + return creds.projectId; + } + } + const r2 = await this._tryGetApplicationCredentialsFromEnvironmentVariable(); + if (r2) { + return r2.projectId; + } else { + return null; + } + } + /** + * Gets the project ID from external account client if available. + */ + async getExternalAccountClientProjectId() { + if (!this.jsonContent || this.jsonContent.type !== baseexternalclient_1.EXTERNAL_ACCOUNT_TYPE) { + return null; + } + const creds = await this.getClient(); + return await creds.getProjectId(); + } + /** + * Gets the Compute Engine project ID if it can be inferred. + */ + async getGCEProjectId() { + try { + const r2 = await gcpMetadata.project("project-id"); + return r2; + } catch (e2) { + return null; + } + } + getCredentials(callback) { + if (callback) { + this.getCredentialsAsync().then((r2) => callback(null, r2), callback); + } else { + return this.getCredentialsAsync(); + } + } + async getCredentialsAsync() { + const client = await this.getClient(); + if (client instanceof impersonated_1.Impersonated) { + return { client_email: client.getTargetPrincipal() }; + } + if (client instanceof baseexternalclient_1.BaseExternalAccountClient) { + const serviceAccountEmail = client.getServiceAccountEmail(); + if (serviceAccountEmail) { + return { + client_email: serviceAccountEmail, + universe_domain: client.universeDomain + }; + } + } + if (this.jsonContent) { + return { + client_email: this.jsonContent.client_email, + private_key: this.jsonContent.private_key, + universe_domain: this.jsonContent.universe_domain + }; + } + if (await this._checkIsGCE()) { + const [client_email, universe_domain] = await Promise.all([ + gcpMetadata.instance("service-accounts/default/email"), + this.getUniverseDomain() + ]); + return { client_email, universe_domain }; + } + throw new Error(exports.GoogleAuthExceptionMessages.NO_CREDENTIALS_FOUND); + } + /** + * Automatically obtain an {@link AuthClient `AuthClient`} based on the + * provided configuration. If no options were passed, use Application + * Default Credentials. + */ + async getClient() { + if (this.cachedCredential) { + return this.cachedCredential; + } + this.#pendingAuthClient = this.#pendingAuthClient || this.#determineClient(); + try { + return await this.#pendingAuthClient; + } finally { + this.#pendingAuthClient = null; + } + } + async #determineClient() { + if (this.jsonContent) { + return this._cacheClientFromJSON(this.jsonContent, this.clientOptions); + } else if (this.keyFilename) { + const filePath = path7.resolve(this.keyFilename); + const stream = fs5.createReadStream(filePath); + return await this.fromStreamAsync(stream, this.clientOptions); + } else if (this.apiKey) { + const client = await this.fromAPIKey(this.apiKey, this.clientOptions); + client.scopes = this.scopes; + const { credential } = await this.#prepareAndCacheClient(client); + return credential; + } else { + const { credential } = await this.getApplicationDefaultAsync(this.clientOptions); + return credential; + } + } + /** + * Creates a client which will fetch an ID token for authorization. + * @param targetAudience the audience for the fetched ID token. + * @returns IdTokenClient for making HTTP calls authenticated with ID tokens. + */ + async getIdTokenClient(targetAudience) { + const client = await this.getClient(); + if (!("fetchIdToken" in client)) { + throw new Error("Cannot fetch ID token in this environment, use GCE or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to a service account credentials JSON file."); + } + return new idtokenclient_1.IdTokenClient({ targetAudience, idTokenProvider: client }); + } + /** + * Automatically obtain application default credentials, and return + * an access token for making requests. + */ + async getAccessToken() { + const client = await this.getClient(); + return (await client.getAccessToken()).token; + } + /** + * Obtain the HTTP headers that will provide authorization for a given + * request. + */ + async getRequestHeaders(url) { + const client = await this.getClient(); + return client.getRequestHeaders(url); + } + /** + * Obtain credentials for a request, then attach the appropriate headers to + * the request options. + * @param opts Axios or Request options on which to attach the headers + */ + async authorizeRequest(opts = {}) { + const url = opts.url; + const client = await this.getClient(); + const headers = await client.getRequestHeaders(url); + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers, headers); + return opts; + } + /** + * A {@link fetch `fetch`} compliant API for {@link GoogleAuth}. + * + * @see {@link GoogleAuth.request} for the classic method. + * + * @remarks + * + * This is useful as a drop-in replacement for `fetch` API usage. + * + * @example + * + * ```ts + * const auth = new GoogleAuth(); + * const fetchWithAuth: typeof fetch = (...args) => auth.fetch(...args); + * await fetchWithAuth('https://example.com'); + * ``` + * + * @param args `fetch` API or {@link Gaxios.fetch `Gaxios#fetch`} parameters + * @returns the {@link GaxiosResponse} with Gaxios-added properties + */ + async fetch(...args) { + const client = await this.getClient(); + return client.fetch(...args); + } + /** + * Automatically obtain application default credentials, and make an + * HTTP request using the given options. + * + * @see {@link GoogleAuth.fetch} for the modern method. + * + * @param opts Axios request options for the HTTP request. + */ + async request(opts) { + const client = await this.getClient(); + return client.request(opts); + } + /** + * Determine the compute environment in which the code is running. + */ + getEnv() { + return (0, envDetect_1.getEnv)(); + } + /** + * Sign the given data with the current private key, or go out + * to the IAM API to sign it. + * @param data The data to be signed. + * @param endpoint A custom endpoint to use. + * + * @example + * ``` + * sign('data', 'https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/'); + * ``` + */ + async sign(data, endpoint2) { + const client = await this.getClient(); + const universe = await this.getUniverseDomain(); + endpoint2 = endpoint2 || `https://iamcredentials.${universe}/v1/projects/-/serviceAccounts/`; + if (client instanceof impersonated_1.Impersonated) { + const signed = await client.sign(data); + return signed.signedBlob; + } + const crypto3 = (0, crypto_1.createCrypto)(); + if (client instanceof jwtclient_1.JWT && client.key) { + const sign = await crypto3.sign(client.key, data); + return sign; + } + const creds = await this.getCredentials(); + if (!creds.client_email) { + throw new Error("Cannot sign data without `client_email`."); + } + return this.signBlob(crypto3, creds.client_email, data, endpoint2); + } + async signBlob(crypto3, emailOrUniqueId, data, endpoint2) { + const url = new URL(endpoint2 + `${emailOrUniqueId}:signBlob`); + const res = await this.request({ + method: "POST", + url: url.href, + data: { + payload: crypto3.encodeBase64StringUtf8(data) + }, + retry: true, + retryConfig: { + httpMethodsToRetry: ["POST"] + } + }); + return res.data.signedBlob; + } + }; + exports.GoogleAuth = GoogleAuth2; + } +}); + +// +var require_iam = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.IAMAuth = void 0; + var IAMAuth = class { + selector; + token; + /** + * IAM credentials. + * + * @param selector the iam authority selector + * @param token the token + * @constructor + */ + constructor(selector, token) { + this.selector = selector; + this.token = token; + this.selector = selector; + this.token = token; + } + /** + * Acquire the HTTP headers required to make an authenticated request. + */ + getRequestHeaders() { + return { + "x-goog-iam-authority-selector": this.selector, + "x-goog-iam-authorization-token": this.token + }; + } + }; + exports.IAMAuth = IAMAuth; + } +}); + +// +var require_downscopedclient = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.DownscopedClient = exports.EXPIRATION_TIME_OFFSET = exports.MAX_ACCESS_BOUNDARY_RULES_COUNT = void 0; + var gaxios_1 = require_src2(); + var stream = __require("stream"); + var authclient_1 = require_authclient(); + var sts = require_stscredentials(); + var STS_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange"; + var STS_REQUEST_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token"; + var STS_SUBJECT_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token"; + exports.MAX_ACCESS_BOUNDARY_RULES_COUNT = 10; + exports.EXPIRATION_TIME_OFFSET = 5 * 60 * 1e3; + var DownscopedClient = class extends authclient_1.AuthClient { + authClient; + credentialAccessBoundary; + cachedDownscopedAccessToken; + stsCredential; + /** + * Instantiates a downscoped client object using the provided source + * AuthClient and credential access boundary rules. + * To downscope permissions of a source AuthClient, a Credential Access + * Boundary that specifies which resources the new credential can access, as + * well as an upper bound on the permissions that are available on each + * resource, has to be defined. A downscoped client can then be instantiated + * using the source AuthClient and the Credential Access Boundary. + * @param options the {@link DownscopedClientOptions `DownscopedClientOptions`} to use. Passing an `AuthClient` directly is **@DEPRECATED**. + * @param credentialAccessBoundary **@DEPRECATED**. Provide a {@link DownscopedClientOptions `DownscopedClientOptions`} object in the first parameter instead. + */ + constructor(options, credentialAccessBoundary = { + accessBoundary: { + accessBoundaryRules: [] + } + }) { + super(options instanceof authclient_1.AuthClient ? {} : options); + if (options instanceof authclient_1.AuthClient) { + this.authClient = options; + this.credentialAccessBoundary = credentialAccessBoundary; + } else { + this.authClient = options.authClient; + this.credentialAccessBoundary = options.credentialAccessBoundary; + } + if (this.credentialAccessBoundary.accessBoundary.accessBoundaryRules.length === 0) { + throw new Error("At least one access boundary rule needs to be defined."); + } else if (this.credentialAccessBoundary.accessBoundary.accessBoundaryRules.length > exports.MAX_ACCESS_BOUNDARY_RULES_COUNT) { + throw new Error(`The provided access boundary has more than ${exports.MAX_ACCESS_BOUNDARY_RULES_COUNT} access boundary rules.`); + } + for (const rule of this.credentialAccessBoundary.accessBoundary.accessBoundaryRules) { + if (rule.availablePermissions.length === 0) { + throw new Error("At least one permission should be defined in access boundary rules."); + } + } + this.stsCredential = new sts.StsCredentials({ + tokenExchangeEndpoint: `https://sts.${this.universeDomain}/v1/token` + }); + this.cachedDownscopedAccessToken = null; + } + /** + * Provides a mechanism to inject Downscoped access tokens directly. + * The expiry_date field is required to facilitate determination of the token + * expiration which would make it easier for the token consumer to handle. + * @param credentials The Credentials object to set on the current client. + */ + setCredentials(credentials) { + if (!credentials.expiry_date) { + throw new Error("The access token expiry_date field is missing in the provided credentials."); + } + super.setCredentials(credentials); + this.cachedDownscopedAccessToken = credentials; + } + async getAccessToken() { + if (!this.cachedDownscopedAccessToken || this.isExpired(this.cachedDownscopedAccessToken)) { + await this.refreshAccessTokenAsync(); + } + return { + token: this.cachedDownscopedAccessToken.access_token, + expirationTime: this.cachedDownscopedAccessToken.expiry_date, + res: this.cachedDownscopedAccessToken.res + }; + } + /** + * The main authentication interface. It takes an optional url which when + * present is the endpoint being accessed, and returns a Promise which + * resolves with authorization header fields. + * + * The result has the form: + * { authorization: 'Bearer ' } + */ + async getRequestHeaders() { + const accessTokenResponse = await this.getAccessToken(); + const headers = new Headers({ + authorization: `Bearer ${accessTokenResponse.token}` + }); + return this.addSharedMetadataHeaders(headers); + } + request(opts, callback) { + if (callback) { + this.requestAsync(opts).then((r2) => callback(null, r2), (e2) => { + return callback(e2, e2.response); + }); + } else { + return this.requestAsync(opts); + } + } + /** + * Authenticates the provided HTTP request, processes it and resolves with the + * returned response. + * @param opts The HTTP request options. + * @param reAuthRetried Whether the current attempt is a retry after a failed attempt due to an auth failure + * @return A promise that resolves with the successful response. + */ + async requestAsync(opts, reAuthRetried = false) { + let response; + try { + const requestHeaders = await this.getRequestHeaders(); + opts.headers = gaxios_1.Gaxios.mergeHeaders(opts.headers); + this.addUserProjectAndAuthHeaders(opts.headers, requestHeaders); + response = await this.transporter.request(opts); + } catch (e2) { + const res = e2.response; + if (res) { + const statusCode = res.status; + const isReadableStream = res.config.data instanceof stream.Readable; + const isAuthErr = statusCode === 401 || statusCode === 403; + if (!reAuthRetried && isAuthErr && !isReadableStream && this.forceRefreshOnFailure) { + await this.refreshAccessTokenAsync(); + return await this.requestAsync(opts, true); + } + } + throw e2; + } + return response; + } + /** + * Forces token refresh, even if unexpired tokens are currently cached. + * GCP access tokens are retrieved from authclient object/source credential. + * Then GCP access tokens are exchanged for downscoped access tokens via the + * token exchange endpoint. + * @return A promise that resolves with the fresh downscoped access token. + */ + async refreshAccessTokenAsync() { + const subjectToken = (await this.authClient.getAccessToken()).token; + const stsCredentialsOptions = { + grantType: STS_GRANT_TYPE, + requestedTokenType: STS_REQUEST_TOKEN_TYPE, + subjectToken, + subjectTokenType: STS_SUBJECT_TOKEN_TYPE + }; + const stsResponse = await this.stsCredential.exchangeToken(stsCredentialsOptions, void 0, this.credentialAccessBoundary); + const sourceCredExpireDate = this.authClient.credentials?.expiry_date || null; + const expiryDate = stsResponse.expires_in ? (/* @__PURE__ */ new Date()).getTime() + stsResponse.expires_in * 1e3 : sourceCredExpireDate; + this.cachedDownscopedAccessToken = { + access_token: stsResponse.access_token, + expiry_date: expiryDate, + res: stsResponse.res + }; + this.credentials = {}; + Object.assign(this.credentials, this.cachedDownscopedAccessToken); + delete this.credentials.res; + this.emit("tokens", { + refresh_token: null, + expiry_date: this.cachedDownscopedAccessToken.expiry_date, + access_token: this.cachedDownscopedAccessToken.access_token, + token_type: "Bearer", + id_token: null + }); + return this.cachedDownscopedAccessToken; + } + /** + * Returns whether the provided credentials are expired or not. + * If there is no expiry time, assumes the token is not expired or expiring. + * @param downscopedAccessToken The credentials to check for expiration. + * @return Whether the credentials are expired or not. + */ + isExpired(downscopedAccessToken) { + const now = (/* @__PURE__ */ new Date()).getTime(); + return downscopedAccessToken.expiry_date ? now >= downscopedAccessToken.expiry_date - this.eagerRefreshThresholdMillis : false; + } + }; + exports.DownscopedClient = DownscopedClient; + } +}); + +// +var require_passthrough = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.PassThroughClient = void 0; + var authclient_1 = require_authclient(); + var PassThroughClient = class extends authclient_1.AuthClient { + /** + * Creates a request without any authentication headers or checks. + * + * @remarks + * + * In testing environments it may be useful to change the provided + * {@link AuthClient.transporter} for any desired request overrides/handling. + * + * @param opts + * @returns The response of the request. + */ + async request(opts) { + return this.transporter.request(opts); + } + /** + * A required method of the base class. + * Always will return an empty object. + * + * @returns {} + */ + async getAccessToken() { + return {}; + } + /** + * A required method of the base class. + * Always will return an empty object. + * + * @returns {} + */ + async getRequestHeaders() { + return new Headers(); + } + }; + exports.PassThroughClient = PassThroughClient; + } +}); + +// +var require_src6 = __commonJS({ + ""(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.GoogleAuth = exports.auth = exports.PassThroughClient = exports.ExternalAccountAuthorizedUserClient = exports.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE = exports.ExecutableError = exports.PluggableAuthClient = exports.DownscopedClient = exports.BaseExternalAccountClient = exports.ExternalAccountClient = exports.IdentityPoolClient = exports.AwsRequestSigner = exports.AwsClient = exports.UserRefreshClient = exports.LoginTicket = exports.ClientAuthentication = exports.OAuth2Client = exports.CodeChallengeMethod = exports.Impersonated = exports.JWT = exports.JWTAccess = exports.IdTokenClient = exports.IAMAuth = exports.GCPEnv = exports.Compute = exports.DEFAULT_UNIVERSE = exports.AuthClient = exports.gaxios = exports.gcpMetadata = void 0; + var googleauth_1 = require_googleauth(); + Object.defineProperty(exports, "GoogleAuth", { enumerable: true, get: function() { + return googleauth_1.GoogleAuth; + } }); + exports.gcpMetadata = require_src4(); + exports.gaxios = require_src2(); + var authclient_1 = require_authclient(); + Object.defineProperty(exports, "AuthClient", { enumerable: true, get: function() { + return authclient_1.AuthClient; + } }); + Object.defineProperty(exports, "DEFAULT_UNIVERSE", { enumerable: true, get: function() { + return authclient_1.DEFAULT_UNIVERSE; + } }); + var computeclient_1 = require_computeclient(); + Object.defineProperty(exports, "Compute", { enumerable: true, get: function() { + return computeclient_1.Compute; + } }); + var envDetect_1 = require_envDetect(); + Object.defineProperty(exports, "GCPEnv", { enumerable: true, get: function() { + return envDetect_1.GCPEnv; + } }); + var iam_1 = require_iam(); + Object.defineProperty(exports, "IAMAuth", { enumerable: true, get: function() { + return iam_1.IAMAuth; + } }); + var idtokenclient_1 = require_idtokenclient(); + Object.defineProperty(exports, "IdTokenClient", { enumerable: true, get: function() { + return idtokenclient_1.IdTokenClient; + } }); + var jwtaccess_1 = require_jwtaccess(); + Object.defineProperty(exports, "JWTAccess", { enumerable: true, get: function() { + return jwtaccess_1.JWTAccess; + } }); + var jwtclient_1 = require_jwtclient(); + Object.defineProperty(exports, "JWT", { enumerable: true, get: function() { + return jwtclient_1.JWT; + } }); + var impersonated_1 = require_impersonated(); + Object.defineProperty(exports, "Impersonated", { enumerable: true, get: function() { + return impersonated_1.Impersonated; + } }); + var oauth2client_1 = require_oauth2client(); + Object.defineProperty(exports, "CodeChallengeMethod", { enumerable: true, get: function() { + return oauth2client_1.CodeChallengeMethod; + } }); + Object.defineProperty(exports, "OAuth2Client", { enumerable: true, get: function() { + return oauth2client_1.OAuth2Client; + } }); + Object.defineProperty(exports, "ClientAuthentication", { enumerable: true, get: function() { + return oauth2client_1.ClientAuthentication; + } }); + var loginticket_1 = require_loginticket(); + Object.defineProperty(exports, "LoginTicket", { enumerable: true, get: function() { + return loginticket_1.LoginTicket; + } }); + var refreshclient_1 = require_refreshclient(); + Object.defineProperty(exports, "UserRefreshClient", { enumerable: true, get: function() { + return refreshclient_1.UserRefreshClient; + } }); + var awsclient_1 = require_awsclient(); + Object.defineProperty(exports, "AwsClient", { enumerable: true, get: function() { + return awsclient_1.AwsClient; + } }); + var awsrequestsigner_1 = require_awsrequestsigner(); + Object.defineProperty(exports, "AwsRequestSigner", { enumerable: true, get: function() { + return awsrequestsigner_1.AwsRequestSigner; + } }); + var identitypoolclient_1 = require_identitypoolclient(); + Object.defineProperty(exports, "IdentityPoolClient", { enumerable: true, get: function() { + return identitypoolclient_1.IdentityPoolClient; + } }); + var externalclient_1 = require_externalclient(); + Object.defineProperty(exports, "ExternalAccountClient", { enumerable: true, get: function() { + return externalclient_1.ExternalAccountClient; + } }); + var baseexternalclient_1 = require_baseexternalclient(); + Object.defineProperty(exports, "BaseExternalAccountClient", { enumerable: true, get: function() { + return baseexternalclient_1.BaseExternalAccountClient; + } }); + var downscopedclient_1 = require_downscopedclient(); + Object.defineProperty(exports, "DownscopedClient", { enumerable: true, get: function() { + return downscopedclient_1.DownscopedClient; + } }); + var pluggable_auth_client_1 = require_pluggable_auth_client(); + Object.defineProperty(exports, "PluggableAuthClient", { enumerable: true, get: function() { + return pluggable_auth_client_1.PluggableAuthClient; + } }); + Object.defineProperty(exports, "ExecutableError", { enumerable: true, get: function() { + return pluggable_auth_client_1.ExecutableError; + } }); + var externalAccountAuthorizedUserClient_1 = require_externalAccountAuthorizedUserClient(); + Object.defineProperty(exports, "EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE", { enumerable: true, get: function() { + return externalAccountAuthorizedUserClient_1.EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE; + } }); + Object.defineProperty(exports, "ExternalAccountAuthorizedUserClient", { enumerable: true, get: function() { + return externalAccountAuthorizedUserClient_1.ExternalAccountAuthorizedUserClient; + } }); + var passthrough_1 = require_passthrough(); + Object.defineProperty(exports, "PassThroughClient", { enumerable: true, get: function() { + return passthrough_1.PassThroughClient; + } }); + var auth6 = new googleauth_1.GoogleAuth(); + exports.auth = auth6; + } +}); + +// +var require_constants6 = __commonJS({ + ""(exports, module) { + "use strict"; + var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"]; + var hasBlob = typeof Blob !== "undefined"; + if (hasBlob) + BINARY_TYPES.push("blob"); + module.exports = { + BINARY_TYPES, + CLOSE_TIMEOUT: 3e4, + EMPTY_BUFFER: Buffer.alloc(0), + GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", + hasBlob, + kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), + kListener: Symbol("kListener"), + kStatusCode: Symbol("status-code"), + kWebSocket: Symbol("websocket"), + NOOP: () => { + } + }; + } +}); + +// +var require_node_gyp_build = __commonJS({ + ""(exports, module) { + var fs5 = __require("fs"); + var path7 = __require("path"); + var os7 = __require("os"); + var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : __require; + var vars = process.config && process.config.variables || {}; + var prebuildsOnly = !!process.env.PREBUILDS_ONLY; + var abi = process.versions.modules; + var runtime = isElectron() ? "electron" : isNwjs() ? "node-webkit" : "node"; + var arch2 = process.env.npm_config_arch || os7.arch(); + var platform2 = process.env.npm_config_platform || os7.platform(); + var libc = process.env.LIBC || (isAlpine(platform2) ? "musl" : "glibc"); + var armv = process.env.ARM_VERSION || (arch2 === "arm64" ? "8" : vars.arm_version) || ""; + var uv = (process.versions.uv || "").split(".")[0]; + module.exports = load; + function load(dir) { + return runtimeRequire(load.resolve(dir)); + } + load.resolve = load.path = function(dir) { + dir = path7.resolve(dir || "."); + try { + var name = runtimeRequire(path7.join(dir, "package.json")).name.toUpperCase().replace(/-/g, "_"); + if (process.env[name + "_PREBUILD"]) + dir = process.env[name + "_PREBUILD"]; + } catch (err) { + } + if (!prebuildsOnly) { + var release = getFirst(path7.join(dir, "build/Release"), matchBuild); + if (release) + return release; + var debug2 = getFirst(path7.join(dir, "build/Debug"), matchBuild); + if (debug2) + return debug2; + } + var prebuild = resolve2(dir); + if (prebuild) + return prebuild; + var nearby = resolve2(path7.dirname(process.execPath)); + if (nearby) + return nearby; + var target = [ + "platform=" + platform2, + "arch=" + arch2, + "runtime=" + runtime, + "abi=" + abi, + "uv=" + uv, + armv ? "armv=" + armv : "", + "libc=" + libc, + "node=" + process.versions.node, + process.versions.electron ? "electron=" + process.versions.electron : "", + typeof __webpack_require__ === "function" ? "webpack=true" : "" + // eslint-disable-line + ].filter(Boolean).join(" "); + throw new Error("No native build was found for " + target + "\n loaded from: " + dir + "\n"); + function resolve2(dir2) { + var tuples = readdirSync(path7.join(dir2, "prebuilds")).map(parseTuple); + var tuple = tuples.filter(matchTuple(platform2, arch2)).sort(compareTuples)[0]; + if (!tuple) + return; + var prebuilds = path7.join(dir2, "prebuilds", tuple.name); + var parsed = readdirSync(prebuilds).map(parseTags); + var candidates = parsed.filter(matchTags(runtime, abi)); + var winner = candidates.sort(compareTags(runtime))[0]; + if (winner) + return path7.join(prebuilds, winner.file); + } + }; + function readdirSync(dir) { + try { + return fs5.readdirSync(dir); + } catch (err) { + return []; + } + } + function getFirst(dir, filter) { + var files = readdirSync(dir).filter(filter); + return files[0] && path7.join(dir, files[0]); + } + function matchBuild(name) { + return /\.node$/.test(name); + } + function parseTuple(name) { + var arr = name.split("-"); + if (arr.length !== 2) + return; + var platform3 = arr[0]; + var architectures = arr[1].split("+"); + if (!platform3) + return; + if (!architectures.length) + return; + if (!architectures.every(Boolean)) + return; + return { name, platform: platform3, architectures }; + } + function matchTuple(platform3, arch3) { + return function(tuple) { + if (tuple == null) + return false; + if (tuple.platform !== platform3) + return false; + return tuple.architectures.includes(arch3); + }; + } + function compareTuples(a, b) { + return a.architectures.length - b.architectures.length; + } + function parseTags(file) { + var arr = file.split("."); + var extension = arr.pop(); + var tags = { file, specificity: 0 }; + if (extension !== "node") + return; + for (var i2 = 0; i2 < arr.length; i2++) { + var tag = arr[i2]; + if (tag === "node" || tag === "electron" || tag === "node-webkit") { + tags.runtime = tag; + } else if (tag === "napi") { + tags.napi = true; + } else if (tag.slice(0, 3) === "abi") { + tags.abi = tag.slice(3); + } else if (tag.slice(0, 2) === "uv") { + tags.uv = tag.slice(2); + } else if (tag.slice(0, 4) === "armv") { + tags.armv = tag.slice(4); + } else if (tag === "glibc" || tag === "musl") { + tags.libc = tag; + } else { + continue; + } + tags.specificity++; + } + return tags; + } + function matchTags(runtime2, abi2) { + return function(tags) { + if (tags == null) + return false; + if (tags.runtime && tags.runtime !== runtime2 && !runtimeAgnostic(tags)) + return false; + if (tags.abi && tags.abi !== abi2 && !tags.napi) + return false; + if (tags.uv && tags.uv !== uv) + return false; + if (tags.armv && tags.armv !== armv) + return false; + if (tags.libc && tags.libc !== libc) + return false; + return true; + }; + } + function runtimeAgnostic(tags) { + return tags.runtime === "node" && tags.napi; + } + function compareTags(runtime2) { + return function(a, b) { + if (a.runtime !== b.runtime) { + return a.runtime === runtime2 ? -1 : 1; + } else if (a.abi !== b.abi) { + return a.abi ? -1 : 1; + } else if (a.specificity !== b.specificity) { + return a.specificity > b.specificity ? -1 : 1; + } else { + return 0; + } + }; + } + function isNwjs() { + return !!(process.versions && process.versions.nw); + } + function isElectron() { + if (process.versions && process.versions.electron) + return true; + if (process.env.ELECTRON_RUN_AS_NODE) + return true; + return typeof window !== "undefined" && window.process && window.process.type === "renderer"; + } + function isAlpine(platform3) { + return platform3 === "linux" && fs5.existsSync("/etc/alpine-release"); + } + load.parseTags = parseTags; + load.matchTags = matchTags; + load.compareTags = compareTags; + load.parseTuple = parseTuple; + load.matchTuple = matchTuple; + load.compareTuples = compareTuples; + } +}); + +// +var require_node_gyp_build2 = __commonJS({ + ""(exports, module) { + var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : __require; + if (typeof runtimeRequire.addon === "function") { + module.exports = runtimeRequire.addon.bind(runtimeRequire); + } else { + module.exports = require_node_gyp_build(); + } + } +}); + +// +var require_fallback = __commonJS({ + ""(exports, module) { + "use strict"; + var mask = (source, mask2, output, offset, length) => { + for (var i2 = 0; i2 < length; i2++) { + output[offset + i2] = source[i2] ^ mask2[i2 & 3]; + } + }; + var unmask = (buffer, mask2) => { + const length = buffer.length; + for (var i2 = 0; i2 < length; i2++) { + buffer[i2] ^= mask2[i2 & 3]; + } + }; + module.exports = { mask, unmask }; + } +}); + +// +var require_bufferutil = __commonJS({ + ""(exports, module) { + "use strict"; + try { + module.exports = require_node_gyp_build2()(__dirname); + } catch (e2) { + module.exports = require_fallback(); + } + } +}); + +// +var require_buffer_util = __commonJS({ + ""(exports, module) { + "use strict"; + var { EMPTY_BUFFER } = require_constants6(); + var FastBuffer = Buffer[Symbol.species]; + function concat(list, totalLength) { + if (list.length === 0) + return EMPTY_BUFFER; + if (list.length === 1) + return list[0]; + const target = Buffer.allocUnsafe(totalLength); + let offset = 0; + for (let i2 = 0; i2 < list.length; i2++) { + const buf = list[i2]; + target.set(buf, offset); + offset += buf.length; + } + if (offset < totalLength) { + return new FastBuffer(target.buffer, target.byteOffset, offset); + } + return target; + } + function _mask(source, mask, output, offset, length) { + for (let i2 = 0; i2 < length; i2++) { + output[offset + i2] = source[i2] ^ mask[i2 & 3]; + } + } + function _unmask(buffer, mask) { + for (let i2 = 0; i2 < buffer.length; i2++) { + buffer[i2] ^= mask[i2 & 3]; + } + } + function toArrayBuffer(buf) { + if (buf.length === buf.buffer.byteLength) { + return buf.buffer; + } + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length); + } + function toBuffer(data) { + toBuffer.readOnly = true; + if (Buffer.isBuffer(data)) + return data; + let buf; + if (data instanceof ArrayBuffer) { + buf = new FastBuffer(data); + } else if (ArrayBuffer.isView(data)) { + buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength); + } else { + buf = Buffer.from(data); + toBuffer.readOnly = false; + } + return buf; + } + module.exports = { + concat, + mask: _mask, + toArrayBuffer, + toBuffer, + unmask: _unmask + }; + if (!process.env.WS_NO_BUFFER_UTIL) { + try { + const bufferUtil = require_bufferutil(); + module.exports.mask = function(source, mask, output, offset, length) { + if (length < 48) + _mask(source, mask, output, offset, length); + else + bufferUtil.mask(source, mask, output, offset, length); + }; + module.exports.unmask = function(buffer, mask) { + if (buffer.length < 32) + _unmask(buffer, mask); + else + bufferUtil.unmask(buffer, mask); + }; + } catch (e2) { + } + } + } +}); + +// +var require_limiter = __commonJS({ + ""(exports, module) { + "use strict"; + var kDone = Symbol("kDone"); + var kRun = Symbol("kRun"); + var Limiter = class { + /** + * Creates a new `Limiter`. + * + * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed + * to run concurrently + */ + constructor(concurrency) { + this[kDone] = () => { + this.pending--; + this[kRun](); + }; + this.concurrency = concurrency || Infinity; + this.jobs = []; + this.pending = 0; + } + /** + * Adds a job to the queue. + * + * @param {Function} job The job to run + * @public + */ + add(job) { + this.jobs.push(job); + this[kRun](); + } + /** + * Removes a job from the queue and runs it if possible. + * + * @private + */ + [kRun]() { + if (this.pending === this.concurrency) + return; + if (this.jobs.length) { + const job = this.jobs.shift(); + this.pending++; + job(this[kDone]); + } + } + }; + module.exports = Limiter; + } +}); + +// +var require_permessage_deflate2 = __commonJS({ + ""(exports, module) { + "use strict"; + var zlib2 = __require("zlib"); + var bufferUtil = require_buffer_util(); + var Limiter = require_limiter(); + var { kStatusCode } = require_constants6(); + var FastBuffer = Buffer[Symbol.species]; + var TRAILER = Buffer.from([0, 0, 255, 255]); + var kPerMessageDeflate = Symbol("permessage-deflate"); + var kTotalLength = Symbol("total-length"); + var kCallback = Symbol("callback"); + var kBuffers = Symbol("buffers"); + var kError = Symbol("error"); + var zlibLimiter; + var PerMessageDeflate = class { + /** + * Creates a PerMessageDeflate instance. + * + * @param {Object} [options] Configuration options + * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support + * for, or request, a custom client window size + * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ + * acknowledge disabling of client context takeover + * @param {Number} [options.concurrencyLimit=10] The number of concurrent + * calls to zlib + * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the + * use of a custom server window size + * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept + * disabling of server context takeover + * @param {Number} [options.threshold=1024] Size (in bytes) below which + * messages should not be compressed if context takeover is disabled + * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on + * deflate + * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on + * inflate + * @param {Boolean} [isServer=false] Create the instance in either server or + * client mode + * @param {Number} [maxPayload=0] The maximum allowed message length + */ + constructor(options, isServer, maxPayload) { + this._maxPayload = maxPayload | 0; + this._options = options || {}; + this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024; + this._isServer = !!isServer; + this._deflate = null; + this._inflate = null; + this.params = null; + if (!zlibLimiter) { + const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10; + zlibLimiter = new Limiter(concurrency); + } + } + /** + * @type {String} + */ + static get extensionName() { + return "permessage-deflate"; + } + /** + * Create an extension negotiation offer. + * + * @return {Object} Extension parameters + * @public + */ + offer() { + const params = {}; + if (this._options.serverNoContextTakeover) { + params.server_no_context_takeover = true; + } + if (this._options.clientNoContextTakeover) { + params.client_no_context_takeover = true; + } + if (this._options.serverMaxWindowBits) { + params.server_max_window_bits = this._options.serverMaxWindowBits; + } + if (this._options.clientMaxWindowBits) { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } else if (this._options.clientMaxWindowBits == null) { + params.client_max_window_bits = true; + } + return params; + } + /** + * Accept an extension negotiation offer/response. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Object} Accepted configuration + * @public + */ + accept(configurations) { + configurations = this.normalizeParams(configurations); + this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations); + return this.params; + } + /** + * Releases all resources used by the extension. + * + * @public + */ + cleanup() { + if (this._inflate) { + this._inflate.close(); + this._inflate = null; + } + if (this._deflate) { + const callback = this._deflate[kCallback]; + this._deflate.close(); + this._deflate = null; + if (callback) { + callback( + new Error( + "The deflate stream was closed while data was being processed" + ) + ); + } + } + } + /** + * Accept an extension negotiation offer. + * + * @param {Array} offers The extension negotiation offers + * @return {Object} Accepted configuration + * @private + */ + acceptAsServer(offers) { + const opts = this._options; + const accepted = offers.find((params) => { + if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) { + return false; + } + return true; + }); + if (!accepted) { + throw new Error("None of the extension offers can be accepted"); + } + if (opts.serverNoContextTakeover) { + accepted.server_no_context_takeover = true; + } + if (opts.clientNoContextTakeover) { + accepted.client_no_context_takeover = true; + } + if (typeof opts.serverMaxWindowBits === "number") { + accepted.server_max_window_bits = opts.serverMaxWindowBits; + } + if (typeof opts.clientMaxWindowBits === "number") { + accepted.client_max_window_bits = opts.clientMaxWindowBits; + } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) { + delete accepted.client_max_window_bits; + } + return accepted; + } + /** + * Accept the extension negotiation response. + * + * @param {Array} response The extension negotiation response + * @return {Object} Accepted configuration + * @private + */ + acceptAsClient(response) { + const params = response[0]; + if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) { + throw new Error('Unexpected parameter "client_no_context_takeover"'); + } + if (!params.client_max_window_bits) { + if (typeof this._options.clientMaxWindowBits === "number") { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } + } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); + } + return params; + } + /** + * Normalize parameters. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Array} The offers/response with normalized parameters + * @private + */ + normalizeParams(configurations) { + configurations.forEach((params) => { + Object.keys(params).forEach((key) => { + let value = params[key]; + if (value.length > 1) { + throw new Error(`Parameter "${key}" must have only a single value`); + } + value = value[0]; + if (key === "client_max_window_bits") { + if (value !== true) { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (!this._isServer) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else if (key === "server_max_window_bits") { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { + if (value !== true) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else { + throw new Error(`Unknown parameter "${key}"`); + } + params[key] = value; + }); + }); + return configurations; + } + /** + * Decompress data. Concurrency limited. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + decompress(data, fin, callback) { + zlibLimiter.add((done) => { + this._decompress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + /** + * Compress data. Concurrency limited. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + compress(data, fin, callback) { + zlibLimiter.add((done) => { + this._compress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + /** + * Decompress data. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _decompress(data, fin, callback) { + const endpoint2 = this._isServer ? "client" : "server"; + if (!this._inflate) { + const key = `${endpoint2}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib2.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._inflate = zlib2.createInflateRaw({ + ...this._options.zlibInflateOptions, + windowBits + }); + this._inflate[kPerMessageDeflate] = this; + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + this._inflate.on("error", inflateOnError); + this._inflate.on("data", inflateOnData); + } + this._inflate[kCallback] = callback; + this._inflate.write(data); + if (fin) + this._inflate.write(TRAILER); + this._inflate.flush(() => { + const err = this._inflate[kError]; + if (err) { + this._inflate.close(); + this._inflate = null; + callback(err); + return; + } + const data2 = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); + if (this._inflate._readableState.endEmitted) { + this._inflate.close(); + this._inflate = null; + } else { + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + if (fin && this.params[`${endpoint2}_no_context_takeover`]) { + this._inflate.reset(); + } + } + callback(null, data2); + }); + } + /** + * Compress data. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _compress(data, fin, callback) { + const endpoint2 = this._isServer ? "server" : "client"; + if (!this._deflate) { + const key = `${endpoint2}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib2.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._deflate = zlib2.createDeflateRaw({ + ...this._options.zlibDeflateOptions, + windowBits + }); + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + this._deflate.on("data", deflateOnData); + } + this._deflate[kCallback] = callback; + this._deflate.write(data); + this._deflate.flush(zlib2.Z_SYNC_FLUSH, () => { + if (!this._deflate) { + return; + } + let data2 = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); + if (fin) { + data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4); + } + this._deflate[kCallback] = null; + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + if (fin && this.params[`${endpoint2}_no_context_takeover`]) { + this._deflate.reset(); + } + callback(null, data2); + }); + } + }; + module.exports = PerMessageDeflate; + function deflateOnData(chunk) { + this[kBuffers].push(chunk); + this[kTotalLength] += chunk.length; + } + function inflateOnData(chunk) { + this[kTotalLength] += chunk.length; + if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) { + this[kBuffers].push(chunk); + return; + } + this[kError] = new RangeError("Max payload size exceeded"); + this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"; + this[kError][kStatusCode] = 1009; + this.removeListener("data", inflateOnData); + this.reset(); + } + function inflateOnError(err) { + this[kPerMessageDeflate]._inflate = null; + if (this[kError]) { + this[kCallback](this[kError]); + return; + } + err[kStatusCode] = 1007; + this[kCallback](err); + } + } +}); + +// +var require_fallback2 = __commonJS({ + ""(exports, module) { + "use strict"; + function isValidUTF8(buf) { + const len = buf.length; + let i2 = 0; + while (i2 < len) { + if ((buf[i2] & 128) === 0) { + i2++; + } else if ((buf[i2] & 224) === 192) { + if (i2 + 1 === len || (buf[i2 + 1] & 192) !== 128 || (buf[i2] & 254) === 192) { + return false; + } + i2 += 2; + } else if ((buf[i2] & 240) === 224) { + if (i2 + 2 >= len || (buf[i2 + 1] & 192) !== 128 || (buf[i2 + 2] & 192) !== 128 || buf[i2] === 224 && (buf[i2 + 1] & 224) === 128 || // overlong + buf[i2] === 237 && (buf[i2 + 1] & 224) === 160) { + return false; + } + i2 += 3; + } else if ((buf[i2] & 248) === 240) { + if (i2 + 3 >= len || (buf[i2 + 1] & 192) !== 128 || (buf[i2 + 2] & 192) !== 128 || (buf[i2 + 3] & 192) !== 128 || buf[i2] === 240 && (buf[i2 + 1] & 240) === 128 || // overlong + buf[i2] === 244 && buf[i2 + 1] > 143 || buf[i2] > 244) { + return false; + } + i2 += 4; + } else { + return false; + } + } + return true; + } + module.exports = isValidUTF8; + } +}); + +// +var require_utf_8_validate = __commonJS({ + ""(exports, module) { + "use strict"; + try { + module.exports = require_node_gyp_build2()(__dirname); + } catch (e2) { + module.exports = require_fallback2(); + } + } +}); + +// +var require_validation = __commonJS({ + ""(exports, module) { + "use strict"; + var { isUtf8 } = __require("buffer"); + var { hasBlob } = require_constants6(); + var tokenChars = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 0 - 15 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 16 - 31 + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + // 32 - 47 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + // 48 - 63 + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 64 - 79 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + // 80 - 95 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 96 - 111 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0 + // 112 - 127 + ]; + function isValidStatusCode(code) { + return code >= 1e3 && code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006 || code >= 3e3 && code <= 4999; + } + function _isValidUTF8(buf) { + const len = buf.length; + let i2 = 0; + while (i2 < len) { + if ((buf[i2] & 128) === 0) { + i2++; + } else if ((buf[i2] & 224) === 192) { + if (i2 + 1 === len || (buf[i2 + 1] & 192) !== 128 || (buf[i2] & 254) === 192) { + return false; + } + i2 += 2; + } else if ((buf[i2] & 240) === 224) { + if (i2 + 2 >= len || (buf[i2 + 1] & 192) !== 128 || (buf[i2 + 2] & 192) !== 128 || buf[i2] === 224 && (buf[i2 + 1] & 224) === 128 || // Overlong + buf[i2] === 237 && (buf[i2 + 1] & 224) === 160) { + return false; + } + i2 += 3; + } else if ((buf[i2] & 248) === 240) { + if (i2 + 3 >= len || (buf[i2 + 1] & 192) !== 128 || (buf[i2 + 2] & 192) !== 128 || (buf[i2 + 3] & 192) !== 128 || buf[i2] === 240 && (buf[i2 + 1] & 240) === 128 || // Overlong + buf[i2] === 244 && buf[i2 + 1] > 143 || buf[i2] > 244) { + return false; + } + i2 += 4; + } else { + return false; + } + } + return true; + } + function isBlob2(value) { + return hasBlob && typeof value === "object" && typeof value.arrayBuffer === "function" && typeof value.type === "string" && typeof value.stream === "function" && (value[Symbol.toStringTag] === "Blob" || value[Symbol.toStringTag] === "File"); + } + module.exports = { + isBlob: isBlob2, + isValidStatusCode, + isValidUTF8: _isValidUTF8, + tokenChars + }; + if (isUtf8) { + module.exports.isValidUTF8 = function(buf) { + return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf); + }; + } else if (!process.env.WS_NO_UTF_8_VALIDATE) { + try { + const isValidUTF8 = require_utf_8_validate(); + module.exports.isValidUTF8 = function(buf) { + return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf); + }; + } catch (e2) { + } + } + } +}); + +// +var require_receiver2 = __commonJS({ + ""(exports, module) { + "use strict"; + var { Writable } = __require("stream"); + var PerMessageDeflate = require_permessage_deflate2(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + kStatusCode, + kWebSocket + } = require_constants6(); + var { concat, toArrayBuffer, unmask } = require_buffer_util(); + var { isValidStatusCode, isValidUTF8 } = require_validation(); + var FastBuffer = Buffer[Symbol.species]; + var GET_INFO = 0; + var GET_PAYLOAD_LENGTH_16 = 1; + var GET_PAYLOAD_LENGTH_64 = 2; + var GET_MASK = 3; + var GET_DATA = 4; + var INFLATING = 5; + var DEFER_EVENT = 6; + var Receiver2 = class extends Writable { + /** + * Creates a Receiver instance. + * + * @param {Object} [options] Options object + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {String} [options.binaryType=nodebuffer] The type for binary data + * @param {Object} [options.extensions] An object containing the negotiated + * extensions + * @param {Boolean} [options.isServer=false] Specifies whether to operate in + * client or server mode + * @param {Number} [options.maxPayload=0] The maximum allowed message length + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + */ + constructor(options = {}) { + super(); + this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true; + this._binaryType = options.binaryType || BINARY_TYPES[0]; + this._extensions = options.extensions || {}; + this._isServer = !!options.isServer; + this._maxPayload = options.maxPayload | 0; + this._skipUTF8Validation = !!options.skipUTF8Validation; + this[kWebSocket] = void 0; + this._bufferedBytes = 0; + this._buffers = []; + this._compressed = false; + this._payloadLength = 0; + this._mask = void 0; + this._fragmented = 0; + this._masked = false; + this._fin = false; + this._opcode = 0; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragments = []; + this._errored = false; + this._loop = false; + this._state = GET_INFO; + } + /** + * Implements `Writable.prototype._write()`. + * + * @param {Buffer} chunk The chunk of data to write + * @param {String} encoding The character encoding of `chunk` + * @param {Function} cb Callback + * @private + */ + _write(chunk, encoding, cb) { + if (this._opcode === 8 && this._state == GET_INFO) + return cb(); + this._bufferedBytes += chunk.length; + this._buffers.push(chunk); + this.startLoop(cb); + } + /** + * Consumes `n` bytes from the buffered data. + * + * @param {Number} n The number of bytes to consume + * @return {Buffer} The consumed bytes + * @private + */ + consume(n) { + this._bufferedBytes -= n; + if (n === this._buffers[0].length) + return this._buffers.shift(); + if (n < this._buffers[0].length) { + const buf = this._buffers[0]; + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + return new FastBuffer(buf.buffer, buf.byteOffset, n); + } + const dst = Buffer.allocUnsafe(n); + do { + const buf = this._buffers[0]; + const offset = dst.length - n; + if (n >= buf.length) { + dst.set(this._buffers.shift(), offset); + } else { + dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + } + n -= buf.length; + } while (n > 0); + return dst; + } + /** + * Starts the parsing loop. + * + * @param {Function} cb Callback + * @private + */ + startLoop(cb) { + this._loop = true; + do { + switch (this._state) { + case GET_INFO: + this.getInfo(cb); + break; + case GET_PAYLOAD_LENGTH_16: + this.getPayloadLength16(cb); + break; + case GET_PAYLOAD_LENGTH_64: + this.getPayloadLength64(cb); + break; + case GET_MASK: + this.getMask(); + break; + case GET_DATA: + this.getData(cb); + break; + case INFLATING: + case DEFER_EVENT: + this._loop = false; + return; + } + } while (this._loop); + if (!this._errored) + cb(); + } + /** + * Reads the first two bytes of a frame. + * + * @param {Function} cb Callback + * @private + */ + getInfo(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + const buf = this.consume(2); + if ((buf[0] & 48) !== 0) { + const error2 = this.createError( + RangeError, + "RSV2 and RSV3 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_2_3" + ); + cb(error2); + return; + } + const compressed = (buf[0] & 64) === 64; + if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { + const error2 = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error2); + return; + } + this._fin = (buf[0] & 128) === 128; + this._opcode = buf[0] & 15; + this._payloadLength = buf[1] & 127; + if (this._opcode === 0) { + if (compressed) { + const error2 = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error2); + return; + } + if (!this._fragmented) { + const error2 = this.createError( + RangeError, + "invalid opcode 0", + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error2); + return; + } + this._opcode = this._fragmented; + } else if (this._opcode === 1 || this._opcode === 2) { + if (this._fragmented) { + const error2 = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error2); + return; + } + this._compressed = compressed; + } else if (this._opcode > 7 && this._opcode < 11) { + if (!this._fin) { + const error2 = this.createError( + RangeError, + "FIN must be set", + true, + 1002, + "WS_ERR_EXPECTED_FIN" + ); + cb(error2); + return; + } + if (compressed) { + const error2 = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error2); + return; + } + if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) { + const error2 = this.createError( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); + cb(error2); + return; + } + } else { + const error2 = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error2); + return; + } + if (!this._fin && !this._fragmented) + this._fragmented = this._opcode; + this._masked = (buf[1] & 128) === 128; + if (this._isServer) { + if (!this._masked) { + const error2 = this.createError( + RangeError, + "MASK must be set", + true, + 1002, + "WS_ERR_EXPECTED_MASK" + ); + cb(error2); + return; + } + } else if (this._masked) { + const error2 = this.createError( + RangeError, + "MASK must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_MASK" + ); + cb(error2); + return; + } + if (this._payloadLength === 126) + this._state = GET_PAYLOAD_LENGTH_16; + else if (this._payloadLength === 127) + this._state = GET_PAYLOAD_LENGTH_64; + else + this.haveLength(cb); + } + /** + * Gets extended payload length (7+16). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength16(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + this._payloadLength = this.consume(2).readUInt16BE(0); + this.haveLength(cb); + } + /** + * Gets extended payload length (7+64). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength64(cb) { + if (this._bufferedBytes < 8) { + this._loop = false; + return; + } + const buf = this.consume(8); + const num = buf.readUInt32BE(0); + if (num > Math.pow(2, 53 - 32) - 1) { + const error2 = this.createError( + RangeError, + "Unsupported WebSocket frame: payload length > 2^53 - 1", + false, + 1009, + "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" + ); + cb(error2); + return; + } + this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); + this.haveLength(cb); + } + /** + * Payload length has been read. + * + * @param {Function} cb Callback + * @private + */ + haveLength(cb) { + if (this._payloadLength && this._opcode < 8) { + this._totalPayloadLength += this._payloadLength; + if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { + const error2 = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error2); + return; + } + } + if (this._masked) + this._state = GET_MASK; + else + this._state = GET_DATA; + } + /** + * Reads mask bytes. + * + * @private + */ + getMask() { + if (this._bufferedBytes < 4) { + this._loop = false; + return; + } + this._mask = this.consume(4); + this._state = GET_DATA; + } + /** + * Reads data bytes. + * + * @param {Function} cb Callback + * @private + */ + getData(cb) { + let data = EMPTY_BUFFER; + if (this._payloadLength) { + if (this._bufferedBytes < this._payloadLength) { + this._loop = false; + return; + } + data = this.consume(this._payloadLength); + if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) { + unmask(data, this._mask); + } + } + if (this._opcode > 7) { + this.controlMessage(data, cb); + return; + } + if (this._compressed) { + this._state = INFLATING; + this.decompress(data, cb); + return; + } + if (data.length) { + this._messageLength = this._totalPayloadLength; + this._fragments.push(data); + } + this.dataMessage(cb); + } + /** + * Decompresses data. + * + * @param {Buffer} data Compressed data + * @param {Function} cb Callback + * @private + */ + decompress(data, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + perMessageDeflate.decompress(data, this._fin, (err, buf) => { + if (err) + return cb(err); + if (buf.length) { + this._messageLength += buf.length; + if (this._messageLength > this._maxPayload && this._maxPayload > 0) { + const error2 = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error2); + return; + } + this._fragments.push(buf); + } + this.dataMessage(cb); + if (this._state === GET_INFO) + this.startLoop(cb); + }); + } + /** + * Handles a data message. + * + * @param {Function} cb Callback + * @private + */ + dataMessage(cb) { + if (!this._fin) { + this._state = GET_INFO; + return; + } + const messageLength = this._messageLength; + const fragments = this._fragments; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragmented = 0; + this._fragments = []; + if (this._opcode === 2) { + let data; + if (this._binaryType === "nodebuffer") { + data = concat(fragments, messageLength); + } else if (this._binaryType === "arraybuffer") { + data = toArrayBuffer(concat(fragments, messageLength)); + } else if (this._binaryType === "blob") { + data = new Blob(fragments); + } else { + data = fragments; + } + if (this._allowSynchronousEvents) { + this.emit("message", data, true); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", data, true); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } else { + const buf = concat(fragments, messageLength); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error2 = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error2); + return; + } + if (this._state === INFLATING || this._allowSynchronousEvents) { + this.emit("message", buf, false); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", buf, false); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + } + /** + * Handles a control message. + * + * @param {Buffer} data Data to handle + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + controlMessage(data, cb) { + if (this._opcode === 8) { + if (data.length === 0) { + this._loop = false; + this.emit("conclude", 1005, EMPTY_BUFFER); + this.end(); + } else { + const code = data.readUInt16BE(0); + if (!isValidStatusCode(code)) { + const error2 = this.createError( + RangeError, + `invalid status code ${code}`, + true, + 1002, + "WS_ERR_INVALID_CLOSE_CODE" + ); + cb(error2); + return; + } + const buf = new FastBuffer( + data.buffer, + data.byteOffset + 2, + data.length - 2 + ); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error2 = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error2); + return; + } + this._loop = false; + this.emit("conclude", code, buf); + this.end(); + } + this._state = GET_INFO; + return; + } + if (this._allowSynchronousEvents) { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + /** + * Builds an error object. + * + * @param {function(new:Error|RangeError)} ErrorCtor The error constructor + * @param {String} message The error message + * @param {Boolean} prefix Specifies whether or not to add a default prefix to + * `message` + * @param {Number} statusCode The status code + * @param {String} errorCode The exposed error code + * @return {(Error|RangeError)} The error + * @private + */ + createError(ErrorCtor, message, prefix, statusCode, errorCode) { + this._loop = false; + this._errored = true; + const err = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); + Error.captureStackTrace(err, this.createError); + err.code = errorCode; + err[kStatusCode] = statusCode; + return err; + } + }; + module.exports = Receiver2; + } +}); + +// +var require_sender2 = __commonJS({ + ""(exports, module) { + "use strict"; + var { Duplex } = __require("stream"); + var { randomFillSync } = __require("crypto"); + var PerMessageDeflate = require_permessage_deflate2(); + var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants6(); + var { isBlob: isBlob2, isValidStatusCode } = require_validation(); + var { mask: applyMask, toBuffer } = require_buffer_util(); + var kByteLength = Symbol("kByteLength"); + var maskBuffer = Buffer.alloc(4); + var RANDOM_POOL_SIZE = 8 * 1024; + var randomPool; + var randomPoolPointer = RANDOM_POOL_SIZE; + var DEFAULT = 0; + var DEFLATING = 1; + var GET_BLOB_DATA = 2; + var Sender2 = class _Sender { + /** + * Creates a Sender instance. + * + * @param {Duplex} socket The connection socket + * @param {Object} [extensions] An object containing the negotiated extensions + * @param {Function} [generateMask] The function used to generate the masking + * key + */ + constructor(socket, extensions, generateMask) { + this._extensions = extensions || {}; + if (generateMask) { + this._generateMask = generateMask; + this._maskBuffer = Buffer.alloc(4); + } + this._socket = socket; + this._firstFragment = true; + this._compress = false; + this._bufferedBytes = 0; + this._queue = []; + this._state = DEFAULT; + this.onerror = NOOP; + this[kWebSocket] = void 0; + } + /** + * Frames a piece of data according to the HyBi WebSocket protocol. + * + * @param {(Buffer|String)} data The data to frame + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @return {(Buffer|String)[]} The framed data + * @public + */ + static frame(data, options) { + let mask; + let merge2 = false; + let offset = 2; + let skipMasking = false; + if (options.mask) { + mask = options.maskBuffer || maskBuffer; + if (options.generateMask) { + options.generateMask(mask); + } else { + if (randomPoolPointer === RANDOM_POOL_SIZE) { + if (randomPool === void 0) { + randomPool = Buffer.alloc(RANDOM_POOL_SIZE); + } + randomFillSync(randomPool, 0, RANDOM_POOL_SIZE); + randomPoolPointer = 0; + } + mask[0] = randomPool[randomPoolPointer++]; + mask[1] = randomPool[randomPoolPointer++]; + mask[2] = randomPool[randomPoolPointer++]; + mask[3] = randomPool[randomPoolPointer++]; + } + skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; + offset = 6; + } + let dataLength; + if (typeof data === "string") { + if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) { + dataLength = options[kByteLength]; + } else { + data = Buffer.from(data); + dataLength = data.length; + } + } else { + dataLength = data.length; + merge2 = options.mask && options.readOnly && !skipMasking; + } + let payloadLength = dataLength; + if (dataLength >= 65536) { + offset += 8; + payloadLength = 127; + } else if (dataLength > 125) { + offset += 2; + payloadLength = 126; + } + const target = Buffer.allocUnsafe(merge2 ? dataLength + offset : offset); + target[0] = options.fin ? options.opcode | 128 : options.opcode; + if (options.rsv1) + target[0] |= 64; + target[1] = payloadLength; + if (payloadLength === 126) { + target.writeUInt16BE(dataLength, 2); + } else if (payloadLength === 127) { + target[2] = target[3] = 0; + target.writeUIntBE(dataLength, 4, 6); + } + if (!options.mask) + return [target, data]; + target[1] |= 128; + target[offset - 4] = mask[0]; + target[offset - 3] = mask[1]; + target[offset - 2] = mask[2]; + target[offset - 1] = mask[3]; + if (skipMasking) + return [target, data]; + if (merge2) { + applyMask(data, mask, target, offset, dataLength); + return [target]; + } + applyMask(data, mask, data, 0, dataLength); + return [target, data]; + } + /** + * Sends a close message to the other peer. + * + * @param {Number} [code] The status code component of the body + * @param {(String|Buffer)} [data] The message component of the body + * @param {Boolean} [mask=false] Specifies whether or not to mask the message + * @param {Function} [cb] Callback + * @public + */ + close(code, data, mask, cb) { + let buf; + if (code === void 0) { + buf = EMPTY_BUFFER; + } else if (typeof code !== "number" || !isValidStatusCode(code)) { + throw new TypeError("First argument must be a valid error code number"); + } else if (data === void 0 || !data.length) { + buf = Buffer.allocUnsafe(2); + buf.writeUInt16BE(code, 0); + } else { + const length = Buffer.byteLength(data); + if (length > 123) { + throw new RangeError("The message must not be greater than 123 bytes"); + } + buf = Buffer.allocUnsafe(2 + length); + buf.writeUInt16BE(code, 0); + if (typeof data === "string") { + buf.write(data, 2); + } else { + buf.set(data, 2); + } + } + const options = { + [kByteLength]: buf.length, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 8, + readOnly: false, + rsv1: false + }; + if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, buf, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(buf, options), cb); + } + } + /** + * Sends a ping message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + ping(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob2(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 9, + readOnly, + rsv1: false + }; + if (isBlob2(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a pong message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + pong(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob2(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 10, + readOnly, + rsv1: false + }; + if (isBlob2(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a data message to the other peer. + * + * @param {*} data The message to send + * @param {Object} options Options object + * @param {Boolean} [options.binary=false] Specifies whether `data` is binary + * or text + * @param {Boolean} [options.compress=false] Specifies whether or not to + * compress `data` + * @param {Boolean} [options.fin=false] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Function} [cb] Callback + * @public + */ + send(data, options, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + let opcode = options.binary ? 2 : 1; + let rsv1 = options.compress; + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob2(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (this._firstFragment) { + this._firstFragment = false; + if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) { + rsv1 = byteLength >= perMessageDeflate._threshold; + } + this._compress = rsv1; + } else { + rsv1 = false; + opcode = 0; + } + if (options.fin) + this._firstFragment = true; + const opts = { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1 + }; + if (isBlob2(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, this._compress, opts, cb]); + } else { + this.getBlobData(data, this._compress, opts, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, this._compress, opts, cb]); + } else { + this.dispatch(data, this._compress, opts, cb); + } + } + /** + * Gets the contents of a blob as binary data. + * + * @param {Blob} blob The blob + * @param {Boolean} [compress=false] Specifies whether or not to compress + * the data + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + getBlobData(blob, compress, options, cb) { + this._bufferedBytes += options[kByteLength]; + this._state = GET_BLOB_DATA; + blob.arrayBuffer().then((arrayBuffer) => { + if (this._socket.destroyed) { + const err = new Error( + "The socket was closed while the blob was being read" + ); + process.nextTick(callCallbacks, this, err, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + const data = toBuffer(arrayBuffer); + if (!compress) { + this._state = DEFAULT; + this.sendFrame(_Sender.frame(data, options), cb); + this.dequeue(); + } else { + this.dispatch(data, compress, options, cb); + } + }).catch((err) => { + process.nextTick(onError, this, err, cb); + }); + } + /** + * Dispatches a message. + * + * @param {(Buffer|String)} data The message to send + * @param {Boolean} [compress=false] Specifies whether or not to compress + * `data` + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + dispatch(data, compress, options, cb) { + if (!compress) { + this.sendFrame(_Sender.frame(data, options), cb); + return; + } + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + this._bufferedBytes += options[kByteLength]; + this._state = DEFLATING; + perMessageDeflate.compress(data, options.fin, (_, buf) => { + if (this._socket.destroyed) { + const err = new Error( + "The socket was closed while data was being compressed" + ); + callCallbacks(this, err, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + this._state = DEFAULT; + options.readOnly = false; + this.sendFrame(_Sender.frame(buf, options), cb); + this.dequeue(); + }); + } + /** + * Executes queued send operations. + * + * @private + */ + dequeue() { + while (this._state === DEFAULT && this._queue.length) { + const params = this._queue.shift(); + this._bufferedBytes -= params[3][kByteLength]; + Reflect.apply(params[0], this, params.slice(1)); + } + } + /** + * Enqueues a send operation. + * + * @param {Array} params Send operation parameters. + * @private + */ + enqueue(params) { + this._bufferedBytes += params[3][kByteLength]; + this._queue.push(params); + } + /** + * Sends a frame. + * + * @param {(Buffer | String)[]} list The frame to send + * @param {Function} [cb] Callback + * @private + */ + sendFrame(list, cb) { + if (list.length === 2) { + this._socket.cork(); + this._socket.write(list[0]); + this._socket.write(list[1], cb); + this._socket.uncork(); + } else { + this._socket.write(list[0], cb); + } + } + }; + module.exports = Sender2; + function callCallbacks(sender, err, cb) { + if (typeof cb === "function") + cb(err); + for (let i2 = 0; i2 < sender._queue.length; i2++) { + const params = sender._queue[i2]; + const callback = params[params.length - 1]; + if (typeof callback === "function") + callback(err); + } + } + function onError(sender, err, cb) { + callCallbacks(sender, err, cb); + sender.onerror(err); + } + } +}); + +// +var require_event_target = __commonJS({ + ""(exports, module) { + "use strict"; + var { kForOnEventAttribute, kListener } = require_constants6(); + var kCode = Symbol("kCode"); + var kData = Symbol("kData"); + var kError = Symbol("kError"); + var kMessage = Symbol("kMessage"); + var kReason = Symbol("kReason"); + var kTarget = Symbol("kTarget"); + var kType = Symbol("kType"); + var kWasClean = Symbol("kWasClean"); + var Event2 = class { + /** + * Create a new `Event`. + * + * @param {String} type The name of the event + * @throws {TypeError} If the `type` argument is not specified + */ + constructor(type) { + this[kTarget] = null; + this[kType] = type; + } + /** + * @type {*} + */ + get target() { + return this[kTarget]; + } + /** + * @type {String} + */ + get type() { + return this[kType]; + } + }; + Object.defineProperty(Event2.prototype, "target", { enumerable: true }); + Object.defineProperty(Event2.prototype, "type", { enumerable: true }); + var CloseEvent = class extends Event2 { + /** + * Create a new `CloseEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {Number} [options.code=0] The status code explaining why the + * connection was closed + * @param {String} [options.reason=''] A human-readable string explaining why + * the connection was closed + * @param {Boolean} [options.wasClean=false] Indicates whether or not the + * connection was cleanly closed + */ + constructor(type, options = {}) { + super(type); + this[kCode] = options.code === void 0 ? 0 : options.code; + this[kReason] = options.reason === void 0 ? "" : options.reason; + this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean; + } + /** + * @type {Number} + */ + get code() { + return this[kCode]; + } + /** + * @type {String} + */ + get reason() { + return this[kReason]; + } + /** + * @type {Boolean} + */ + get wasClean() { + return this[kWasClean]; + } + }; + Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true }); + var ErrorEvent = class extends Event2 { + /** + * Create a new `ErrorEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.error=null] The error that generated this event + * @param {String} [options.message=''] The error message + */ + constructor(type, options = {}) { + super(type); + this[kError] = options.error === void 0 ? null : options.error; + this[kMessage] = options.message === void 0 ? "" : options.message; + } + /** + * @type {*} + */ + get error() { + return this[kError]; + } + /** + * @type {String} + */ + get message() { + return this[kMessage]; + } + }; + Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true }); + Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true }); + var MessageEvent = class extends Event2 { + /** + * Create a new `MessageEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.data=null] The message content + */ + constructor(type, options = {}) { + super(type); + this[kData] = options.data === void 0 ? null : options.data; + } + /** + * @type {*} + */ + get data() { + return this[kData]; + } + }; + Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true }); + var EventTarget2 = { + /** + * Register an event listener. + * + * @param {String} type A string representing the event type to listen for + * @param {(Function|Object)} handler The listener to add + * @param {Object} [options] An options object specifies characteristics about + * the event listener + * @param {Boolean} [options.once=false] A `Boolean` indicating that the + * listener should be invoked at most once after being added. If `true`, + * the listener would be automatically removed when invoked. + * @public + */ + addEventListener(type, handler2, options = {}) { + for (const listener of this.listeners(type)) { + if (!options[kForOnEventAttribute] && listener[kListener] === handler2 && !listener[kForOnEventAttribute]) { + return; + } + } + let wrapper; + if (type === "message") { + wrapper = function onMessage(data, isBinary) { + const event = new MessageEvent("message", { + data: isBinary ? data : data.toString() + }); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else if (type === "close") { + wrapper = function onClose(code, message) { + const event = new CloseEvent("close", { + code, + reason: message.toString(), + wasClean: this._closeFrameReceived && this._closeFrameSent + }); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else if (type === "error") { + wrapper = function onError(error2) { + const event = new ErrorEvent("error", { + error: error2, + message: error2.message + }); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else if (type === "open") { + wrapper = function onOpen() { + const event = new Event2("open"); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else { + return; + } + wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute]; + wrapper[kListener] = handler2; + if (options.once) { + this.once(type, wrapper); + } else { + this.on(type, wrapper); + } + }, + /** + * Remove an event listener. + * + * @param {String} type A string representing the event type to remove + * @param {(Function|Object)} handler The listener to remove + * @public + */ + removeEventListener(type, handler2) { + for (const listener of this.listeners(type)) { + if (listener[kListener] === handler2 && !listener[kForOnEventAttribute]) { + this.removeListener(type, listener); + break; + } + } + } + }; + module.exports = { + CloseEvent, + ErrorEvent, + Event: Event2, + EventTarget: EventTarget2, + MessageEvent + }; + function callListener(listener, thisArg, event) { + if (typeof listener === "object" && listener.handleEvent) { + listener.handleEvent.call(listener, event); + } else { + listener.call(thisArg, event); + } + } + } +}); + +// +var require_extension = __commonJS({ + ""(exports, module) { + "use strict"; + var { tokenChars } = require_validation(); + function push(dest, name, elem) { + if (dest[name] === void 0) + dest[name] = [elem]; + else + dest[name].push(elem); + } + function parse2(header) { + const offers = /* @__PURE__ */ Object.create(null); + let params = /* @__PURE__ */ Object.create(null); + let mustUnescape = false; + let isEscaping = false; + let inQuotes = false; + let extensionName; + let paramName; + let start = -1; + let code = -1; + let end = -1; + let i2 = 0; + for (; i2 < header.length; i2++) { + code = header.charCodeAt(i2); + if (extensionName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i2; + } else if (i2 !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) + end = i2; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + if (end === -1) + end = i2; + const name = header.slice(start, end); + if (code === 44) { + push(offers, name, params); + params = /* @__PURE__ */ Object.create(null); + } else { + extensionName = name; + } + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + } else if (paramName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i2; + } else if (code === 32 || code === 9) { + if (end === -1 && start !== -1) + end = i2; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + if (end === -1) + end = i2; + push(params, header.slice(start, end), true); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + start = end = -1; + } else if (code === 61 && start !== -1 && end === -1) { + paramName = header.slice(start, i2); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + } else { + if (isEscaping) { + if (tokenChars[code] !== 1) { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + if (start === -1) + start = i2; + else if (!mustUnescape) + mustUnescape = true; + isEscaping = false; + } else if (inQuotes) { + if (tokenChars[code] === 1) { + if (start === -1) + start = i2; + } else if (code === 34 && start !== -1) { + inQuotes = false; + end = i2; + } else if (code === 92) { + isEscaping = true; + } else { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + } else if (code === 34 && header.charCodeAt(i2 - 1) === 61) { + inQuotes = true; + } else if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i2; + } else if (start !== -1 && (code === 32 || code === 9)) { + if (end === -1) + end = i2; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + if (end === -1) + end = i2; + let value = header.slice(start, end); + if (mustUnescape) { + value = value.replace(/\\/g, ""); + mustUnescape = false; + } + push(params, paramName, value); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + paramName = void 0; + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + } + } + if (start === -1 || inQuotes || code === 32 || code === 9) { + throw new SyntaxError("Unexpected end of input"); + } + if (end === -1) + end = i2; + const token = header.slice(start, end); + if (extensionName === void 0) { + push(offers, token, params); + } else { + if (paramName === void 0) { + push(params, token, true); + } else if (mustUnescape) { + push(params, paramName, token.replace(/\\/g, "")); + } else { + push(params, paramName, token); + } + push(offers, extensionName, params); + } + return offers; + } + function format(extensions) { + return Object.keys(extensions).map((extension) => { + let configurations = extensions[extension]; + if (!Array.isArray(configurations)) + configurations = [configurations]; + return configurations.map((params) => { + return [extension].concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) + values = [values]; + return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); + }) + ).join("; "); + }).join(", "); + }).join(", "); + } + module.exports = { format, parse: parse2 }; + } +}); + +// +var require_websocket2 = __commonJS({ + ""(exports, module) { + "use strict"; + var EventEmitter2 = __require("events"); + var https3 = __require("https"); + var http4 = __require("http"); + var net = __require("net"); + var tls = __require("tls"); + var { randomBytes, createHash } = __require("crypto"); + var { Duplex, Readable: Readable2 } = __require("stream"); + var { URL: URL2 } = __require("url"); + var PerMessageDeflate = require_permessage_deflate2(); + var Receiver2 = require_receiver2(); + var Sender2 = require_sender2(); + var { isBlob: isBlob2 } = require_validation(); + var { + BINARY_TYPES, + CLOSE_TIMEOUT, + EMPTY_BUFFER, + GUID, + kForOnEventAttribute, + kListener, + kStatusCode, + kWebSocket, + NOOP + } = require_constants6(); + var { + EventTarget: { addEventListener, removeEventListener } + } = require_event_target(); + var { format, parse: parse2 } = require_extension(); + var { toBuffer } = require_buffer_util(); + var kAborted = Symbol("kAborted"); + var protocolVersions = [8, 13]; + var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; + var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; + var WebSocket2 = class _WebSocket extends EventEmitter2 { + /** + * Create a new `WebSocket`. + * + * @param {(String|URL)} address The URL to which to connect + * @param {(String|String[])} [protocols] The subprotocols + * @param {Object} [options] Connection options + */ + constructor(address, protocols, options) { + super(); + this._binaryType = BINARY_TYPES[0]; + this._closeCode = 1006; + this._closeFrameReceived = false; + this._closeFrameSent = false; + this._closeMessage = EMPTY_BUFFER; + this._closeTimer = null; + this._errorEmitted = false; + this._extensions = {}; + this._paused = false; + this._protocol = ""; + this._readyState = _WebSocket.CONNECTING; + this._receiver = null; + this._sender = null; + this._socket = null; + if (address !== null) { + this._bufferedAmount = 0; + this._isServer = false; + this._redirects = 0; + if (protocols === void 0) { + protocols = []; + } else if (!Array.isArray(protocols)) { + if (typeof protocols === "object" && protocols !== null) { + options = protocols; + protocols = []; + } else { + protocols = [protocols]; + } + } + initAsClient(this, address, protocols, options); + } else { + this._autoPong = options.autoPong; + this._closeTimeout = options.closeTimeout; + this._isServer = true; + } + } + /** + * For historical reasons, the custom "nodebuffer" type is used by the default + * instead of "blob". + * + * @type {String} + */ + get binaryType() { + return this._binaryType; + } + set binaryType(type) { + if (!BINARY_TYPES.includes(type)) + return; + this._binaryType = type; + if (this._receiver) + this._receiver._binaryType = type; + } + /** + * @type {Number} + */ + get bufferedAmount() { + if (!this._socket) + return this._bufferedAmount; + return this._socket._writableState.length + this._sender._bufferedBytes; + } + /** + * @type {String} + */ + get extensions() { + return Object.keys(this._extensions).join(); + } + /** + * @type {Boolean} + */ + get isPaused() { + return this._paused; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onclose() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onerror() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onopen() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onmessage() { + return null; + } + /** + * @type {String} + */ + get protocol() { + return this._protocol; + } + /** + * @type {Number} + */ + get readyState() { + return this._readyState; + } + /** + * @type {String} + */ + get url() { + return this._url; + } + /** + * Set up the socket and the internal resources. + * + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Object} options Options object + * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.maxPayload=0] The maximum allowed message size + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ + setSocket(socket, head, options) { + const receiver = new Receiver2({ + allowSynchronousEvents: options.allowSynchronousEvents, + binaryType: this.binaryType, + extensions: this._extensions, + isServer: this._isServer, + maxPayload: options.maxPayload, + skipUTF8Validation: options.skipUTF8Validation + }); + const sender = new Sender2(socket, this._extensions, options.generateMask); + this._receiver = receiver; + this._sender = sender; + this._socket = socket; + receiver[kWebSocket] = this; + sender[kWebSocket] = this; + socket[kWebSocket] = this; + receiver.on("conclude", receiverOnConclude); + receiver.on("drain", receiverOnDrain); + receiver.on("error", receiverOnError); + receiver.on("message", receiverOnMessage); + receiver.on("ping", receiverOnPing); + receiver.on("pong", receiverOnPong); + sender.onerror = senderOnError; + if (socket.setTimeout) + socket.setTimeout(0); + if (socket.setNoDelay) + socket.setNoDelay(); + if (head.length > 0) + socket.unshift(head); + socket.on("close", socketOnClose); + socket.on("data", socketOnData); + socket.on("end", socketOnEnd); + socket.on("error", socketOnError); + this._readyState = _WebSocket.OPEN; + this.emit("open"); + } + /** + * Emit the `'close'` event. + * + * @private + */ + emitClose() { + if (!this._socket) { + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + return; + } + if (this._extensions[PerMessageDeflate.extensionName]) { + this._extensions[PerMessageDeflate.extensionName].cleanup(); + } + this._receiver.removeAllListeners(); + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + } + /** + * Start a closing handshake. + * + * +----------+ +-----------+ +----------+ + * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - + * | +----------+ +-----------+ +----------+ | + * +----------+ +-----------+ | + * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING + * +----------+ +-----------+ | + * | | | +---+ | + * +------------------------+-->|fin| - - - - + * | +---+ | +---+ + * - - - - -|fin|<---------------------+ + * +---+ + * + * @param {Number} [code] Status code explaining why the connection is closing + * @param {(String|Buffer)} [data] The reason why the connection is + * closing + * @public + */ + close(code, data) { + if (this.readyState === _WebSocket.CLOSED) + return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this.readyState === _WebSocket.CLOSING) { + if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) { + this._socket.end(); + } + return; + } + this._readyState = _WebSocket.CLOSING; + this._sender.close(code, data, !this._isServer, (err) => { + if (err) + return; + this._closeFrameSent = true; + if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) { + this._socket.end(); + } + }); + setCloseTimer(this); + } + /** + * Pause the socket. + * + * @public + */ + pause() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = true; + this._socket.pause(); + } + /** + * Send a ping. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the ping is sent + * @public + */ + ping(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") + data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) + mask = !this._isServer; + this._sender.ping(data || EMPTY_BUFFER, mask, cb); + } + /** + * Send a pong. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the pong is sent + * @public + */ + pong(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") + data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) + mask = !this._isServer; + this._sender.pong(data || EMPTY_BUFFER, mask, cb); + } + /** + * Resume the socket. + * + * @public + */ + resume() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = false; + if (!this._receiver._writableState.needDrain) + this._socket.resume(); + } + /** + * Send a data message. + * + * @param {*} data The message to send + * @param {Object} [options] Options object + * @param {Boolean} [options.binary] Specifies whether `data` is binary or + * text + * @param {Boolean} [options.compress] Specifies whether or not to compress + * `data` + * @param {Boolean} [options.fin=true] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when data is written out + * @public + */ + send(data, options, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof options === "function") { + cb = options; + options = {}; + } + if (typeof data === "number") + data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + const opts = { + binary: typeof data !== "string", + mask: !this._isServer, + compress: true, + fin: true, + ...options + }; + if (!this._extensions[PerMessageDeflate.extensionName]) { + opts.compress = false; + } + this._sender.send(data || EMPTY_BUFFER, opts, cb); + } + /** + * Forcibly close the connection. + * + * @public + */ + terminate() { + if (this.readyState === _WebSocket.CLOSED) + return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this._socket) { + this._readyState = _WebSocket.CLOSING; + this._socket.destroy(); + } + } + }; + Object.defineProperty(WebSocket2, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket2.prototype, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket2, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket2.prototype, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket2, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket2.prototype, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket2, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + Object.defineProperty(WebSocket2.prototype, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + [ + "binaryType", + "bufferedAmount", + "extensions", + "isPaused", + "protocol", + "readyState", + "url" + ].forEach((property) => { + Object.defineProperty(WebSocket2.prototype, property, { enumerable: true }); + }); + ["open", "error", "close", "message"].forEach((method) => { + Object.defineProperty(WebSocket2.prototype, `on${method}`, { + enumerable: true, + get() { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) + return listener[kListener]; + } + return null; + }, + set(handler2) { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) { + this.removeListener(method, listener); + break; + } + } + if (typeof handler2 !== "function") + return; + this.addEventListener(method, handler2, { + [kForOnEventAttribute]: true + }); + } + }); + }); + WebSocket2.prototype.addEventListener = addEventListener; + WebSocket2.prototype.removeEventListener = removeEventListener; + module.exports = WebSocket2; + function initAsClient(websocket, address, protocols, options) { + const opts = { + allowSynchronousEvents: true, + autoPong: true, + closeTimeout: CLOSE_TIMEOUT, + protocolVersion: protocolVersions[1], + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: true, + followRedirects: false, + maxRedirects: 10, + ...options, + socketPath: void 0, + hostname: void 0, + protocol: void 0, + timeout: void 0, + method: "GET", + host: void 0, + path: void 0, + port: void 0 + }; + websocket._autoPong = opts.autoPong; + websocket._closeTimeout = opts.closeTimeout; + if (!protocolVersions.includes(opts.protocolVersion)) { + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` + ); + } + let parsedUrl; + if (address instanceof URL2) { + parsedUrl = address; + } else { + try { + parsedUrl = new URL2(address); + } catch (e2) { + throw new SyntaxError(`Invalid URL: ${address}`); + } + } + if (parsedUrl.protocol === "http:") { + parsedUrl.protocol = "ws:"; + } else if (parsedUrl.protocol === "https:") { + parsedUrl.protocol = "wss:"; + } + websocket._url = parsedUrl.href; + const isSecure = parsedUrl.protocol === "wss:"; + const isIpcUrl = parsedUrl.protocol === "ws+unix:"; + let invalidUrlMessage; + if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) { + invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`; + } else if (isIpcUrl && !parsedUrl.pathname) { + invalidUrlMessage = "The URL's pathname is empty"; + } else if (parsedUrl.hash) { + invalidUrlMessage = "The URL contains a fragment identifier"; + } + if (invalidUrlMessage) { + const err = new SyntaxError(invalidUrlMessage); + if (websocket._redirects === 0) { + throw err; + } else { + emitErrorAndClose(websocket, err); + return; + } + } + const defaultPort = isSecure ? 443 : 80; + const key = randomBytes(16).toString("base64"); + const request2 = isSecure ? https3.request : http4.request; + const protocolSet = /* @__PURE__ */ new Set(); + let perMessageDeflate; + opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect); + opts.defaultPort = opts.defaultPort || defaultPort; + opts.port = parsedUrl.port || defaultPort; + opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname; + opts.headers = { + ...opts.headers, + "Sec-WebSocket-Version": opts.protocolVersion, + "Sec-WebSocket-Key": key, + Connection: "Upgrade", + Upgrade: "websocket" + }; + opts.path = parsedUrl.pathname + parsedUrl.search; + opts.timeout = opts.handshakeTimeout; + if (opts.perMessageDeflate) { + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); + opts.headers["Sec-WebSocket-Extensions"] = format({ + [PerMessageDeflate.extensionName]: perMessageDeflate.offer() + }); + } + if (protocols.length) { + for (const protocol of protocols) { + if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) { + throw new SyntaxError( + "An invalid or duplicated subprotocol was specified" + ); + } + protocolSet.add(protocol); + } + opts.headers["Sec-WebSocket-Protocol"] = protocols.join(","); + } + if (opts.origin) { + if (opts.protocolVersion < 13) { + opts.headers["Sec-WebSocket-Origin"] = opts.origin; + } else { + opts.headers.Origin = opts.origin; + } + } + if (parsedUrl.username || parsedUrl.password) { + opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; + } + if (isIpcUrl) { + const parts = opts.path.split(":"); + opts.socketPath = parts[0]; + opts.path = parts[1]; + } + let req; + if (opts.followRedirects) { + if (websocket._redirects === 0) { + websocket._originalIpc = isIpcUrl; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host; + const headers = options && options.headers; + options = { ...options, headers: {} }; + if (headers) { + for (const [key2, value] of Object.entries(headers)) { + options.headers[key2.toLowerCase()] = value; + } + } + } else if (websocket.listenerCount("redirect") === 0) { + const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath; + if (!isSameHost || websocket._originalSecure && !isSecure) { + delete opts.headers.authorization; + delete opts.headers.cookie; + if (!isSameHost) + delete opts.headers.host; + opts.auth = void 0; + } + } + if (opts.auth && !options.headers.authorization) { + options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); + } + req = websocket._req = request2(opts); + if (websocket._redirects) { + websocket.emit("redirect", websocket.url, req); + } + } else { + req = websocket._req = request2(opts); + } + if (opts.timeout) { + req.on("timeout", () => { + abortHandshake(websocket, req, "Opening handshake has timed out"); + }); + } + req.on("error", (err) => { + if (req === null || req[kAborted]) + return; + req = websocket._req = null; + emitErrorAndClose(websocket, err); + }); + req.on("response", (res) => { + const location = res.headers.location; + const statusCode = res.statusCode; + if (location && opts.followRedirects && statusCode >= 300 && statusCode < 400) { + if (++websocket._redirects > opts.maxRedirects) { + abortHandshake(websocket, req, "Maximum redirects exceeded"); + return; + } + req.abort(); + let addr; + try { + addr = new URL2(location, address); + } catch (e2) { + const err = new SyntaxError(`Invalid URL: ${location}`); + emitErrorAndClose(websocket, err); + return; + } + initAsClient(websocket, addr, protocols, options); + } else if (!websocket.emit("unexpected-response", req, res)) { + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); + } + }); + req.on("upgrade", (res, socket, head) => { + websocket.emit("upgrade", res); + if (websocket.readyState !== WebSocket2.CONNECTING) + return; + req = websocket._req = null; + const upgrade = res.headers.upgrade; + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + abortHandshake(websocket, socket, "Invalid Upgrade header"); + return; + } + const digest = createHash("sha1").update(key + GUID).digest("base64"); + if (res.headers["sec-websocket-accept"] !== digest) { + abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); + return; + } + const serverProt = res.headers["sec-websocket-protocol"]; + let protError; + if (serverProt !== void 0) { + if (!protocolSet.size) { + protError = "Server sent a subprotocol but none was requested"; + } else if (!protocolSet.has(serverProt)) { + protError = "Server sent an invalid subprotocol"; + } + } else if (protocolSet.size) { + protError = "Server sent no subprotocol"; + } + if (protError) { + abortHandshake(websocket, socket, protError); + return; + } + if (serverProt) + websocket._protocol = serverProt; + const secWebSocketExtensions = res.headers["sec-websocket-extensions"]; + if (secWebSocketExtensions !== void 0) { + if (!perMessageDeflate) { + const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested"; + abortHandshake(websocket, socket, message); + return; + } + let extensions; + try { + extensions = parse2(secWebSocketExtensions); + } catch (err) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + const extensionNames = Object.keys(extensions); + if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) { + const message = "Server indicated an extension that was not requested"; + abortHandshake(websocket, socket, message); + return; + } + try { + perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); + } catch (err) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + websocket.setSocket(socket, head, { + allowSynchronousEvents: opts.allowSynchronousEvents, + generateMask: opts.generateMask, + maxPayload: opts.maxPayload, + skipUTF8Validation: opts.skipUTF8Validation + }); + }); + if (opts.finishRequest) { + opts.finishRequest(req, websocket); + } else { + req.end(); + } + } + function emitErrorAndClose(websocket, err) { + websocket._readyState = WebSocket2.CLOSING; + websocket._errorEmitted = true; + websocket.emit("error", err); + websocket.emitClose(); + } + function netConnect(options) { + options.path = options.socketPath; + return net.connect(options); + } + function tlsConnect(options) { + options.path = void 0; + if (!options.servername && options.servername !== "") { + options.servername = net.isIP(options.host) ? "" : options.host; + } + return tls.connect(options); + } + function abortHandshake(websocket, stream, message) { + websocket._readyState = WebSocket2.CLOSING; + const err = new Error(message); + Error.captureStackTrace(err, abortHandshake); + if (stream.setHeader) { + stream[kAborted] = true; + stream.abort(); + if (stream.socket && !stream.socket.destroyed) { + stream.socket.destroy(); + } + process.nextTick(emitErrorAndClose, websocket, err); + } else { + stream.destroy(err); + stream.once("error", websocket.emit.bind(websocket, "error")); + stream.once("close", websocket.emitClose.bind(websocket)); + } + } + function sendAfterClose(websocket, data, cb) { + if (data) { + const length = isBlob2(data) ? data.size : toBuffer(data).length; + if (websocket._socket) + websocket._sender._bufferedBytes += length; + else + websocket._bufferedAmount += length; + } + if (cb) { + const err = new Error( + `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` + ); + process.nextTick(cb, err); + } + } + function receiverOnConclude(code, reason) { + const websocket = this[kWebSocket]; + websocket._closeFrameReceived = true; + websocket._closeMessage = reason; + websocket._closeCode = code; + if (websocket._socket[kWebSocket] === void 0) + return; + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + if (code === 1005) + websocket.close(); + else + websocket.close(code, reason); + } + function receiverOnDrain() { + const websocket = this[kWebSocket]; + if (!websocket.isPaused) + websocket._socket.resume(); + } + function receiverOnError(err) { + const websocket = this[kWebSocket]; + if (websocket._socket[kWebSocket] !== void 0) { + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + websocket.close(err[kStatusCode]); + } + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err); + } + } + function receiverOnFinish() { + this[kWebSocket].emitClose(); + } + function receiverOnMessage(data, isBinary) { + this[kWebSocket].emit("message", data, isBinary); + } + function receiverOnPing(data) { + const websocket = this[kWebSocket]; + if (websocket._autoPong) + websocket.pong(data, !this._isServer, NOOP); + websocket.emit("ping", data); + } + function receiverOnPong(data) { + this[kWebSocket].emit("pong", data); + } + function resume(stream) { + stream.resume(); + } + function senderOnError(err) { + const websocket = this[kWebSocket]; + if (websocket.readyState === WebSocket2.CLOSED) + return; + if (websocket.readyState === WebSocket2.OPEN) { + websocket._readyState = WebSocket2.CLOSING; + setCloseTimer(websocket); + } + this._socket.end(); + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err); + } + } + function setCloseTimer(websocket) { + websocket._closeTimer = setTimeout( + websocket._socket.destroy.bind(websocket._socket), + websocket._closeTimeout + ); + } + function socketOnClose() { + const websocket = this[kWebSocket]; + this.removeListener("close", socketOnClose); + this.removeListener("data", socketOnData); + this.removeListener("end", socketOnEnd); + websocket._readyState = WebSocket2.CLOSING; + if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && this._readableState.length !== 0) { + const chunk = this.read(this._readableState.length); + websocket._receiver.write(chunk); + } + websocket._receiver.end(); + this[kWebSocket] = void 0; + clearTimeout(websocket._closeTimer); + if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) { + websocket.emitClose(); + } else { + websocket._receiver.on("error", receiverOnFinish); + websocket._receiver.on("finish", receiverOnFinish); + } + } + function socketOnData(chunk) { + if (!this[kWebSocket]._receiver.write(chunk)) { + this.pause(); + } + } + function socketOnEnd() { + const websocket = this[kWebSocket]; + websocket._readyState = WebSocket2.CLOSING; + websocket._receiver.end(); + this.end(); + } + function socketOnError() { + const websocket = this[kWebSocket]; + this.removeListener("error", socketOnError); + this.on("error", NOOP); + if (websocket) { + websocket._readyState = WebSocket2.CLOSING; + this.destroy(); + } + } + } +}); + +// +var require_stream = __commonJS({ + ""(exports, module) { + "use strict"; + var WebSocket2 = require_websocket2(); + var { Duplex } = __require("stream"); + function emitClose(stream) { + stream.emit("close"); + } + function duplexOnEnd() { + if (!this.destroyed && this._writableState.finished) { + this.destroy(); + } + } + function duplexOnError(err) { + this.removeListener("error", duplexOnError); + this.destroy(); + if (this.listenerCount("error") === 0) { + this.emit("error", err); + } + } + function createWebSocketStream2(ws, options) { + let terminateOnDestroy = true; + const duplex = new Duplex({ + ...options, + autoDestroy: false, + emitClose: false, + objectMode: false, + writableObjectMode: false + }); + ws.on("message", function message(msg, isBinary) { + const data = !isBinary && duplex._readableState.objectMode ? msg.toString() : msg; + if (!duplex.push(data)) + ws.pause(); + }); + ws.once("error", function error2(err) { + if (duplex.destroyed) + return; + terminateOnDestroy = false; + duplex.destroy(err); + }); + ws.once("close", function close() { + if (duplex.destroyed) + return; + duplex.push(null); + }); + duplex._destroy = function(err, callback) { + if (ws.readyState === ws.CLOSED) { + callback(err); + process.nextTick(emitClose, duplex); + return; + } + let called = false; + ws.once("error", function error2(err2) { + called = true; + callback(err2); + }); + ws.once("close", function close() { + if (!called) + callback(err); + process.nextTick(emitClose, duplex); + }); + if (terminateOnDestroy) + ws.terminate(); + }; + duplex._final = function(callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open3() { + duplex._final(callback); + }); + return; + } + if (ws._socket === null) + return; + if (ws._socket._writableState.finished) { + callback(); + if (duplex._readableState.endEmitted) + duplex.destroy(); + } else { + ws._socket.once("finish", function finish() { + callback(); + }); + ws.close(); + } + }; + duplex._read = function() { + if (ws.isPaused) + ws.resume(); + }; + duplex._write = function(chunk, encoding, callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open3() { + duplex._write(chunk, encoding, callback); + }); + return; + } + ws.send(chunk, callback); + }; + duplex.on("end", duplexOnEnd); + duplex.on("error", duplexOnError); + return duplex; + } + module.exports = createWebSocketStream2; + } +}); + +// +var require_subprotocol = __commonJS({ + ""(exports, module) { + "use strict"; + var { tokenChars } = require_validation(); + function parse2(header) { + const protocols = /* @__PURE__ */ new Set(); + let start = -1; + let end = -1; + let i2 = 0; + for (i2; i2 < header.length; i2++) { + const code = header.charCodeAt(i2); + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) + start = i2; + } else if (i2 !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) + end = i2; + } else if (code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + if (end === -1) + end = i2; + const protocol2 = header.slice(start, end); + if (protocols.has(protocol2)) { + throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`); + } + protocols.add(protocol2); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i2}`); + } + } + if (start === -1 || end !== -1) { + throw new SyntaxError("Unexpected end of input"); + } + const protocol = header.slice(start, i2); + if (protocols.has(protocol)) { + throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); + } + protocols.add(protocol); + return protocols; + } + module.exports = { parse: parse2 }; + } +}); + +// +var require_websocket_server = __commonJS({ + ""(exports, module) { + "use strict"; + var EventEmitter2 = __require("events"); + var http4 = __require("http"); + var { Duplex } = __require("stream"); + var { createHash } = __require("crypto"); + var extension = require_extension(); + var PerMessageDeflate = require_permessage_deflate2(); + var subprotocol = require_subprotocol(); + var WebSocket2 = require_websocket2(); + var { CLOSE_TIMEOUT, GUID, kWebSocket } = require_constants6(); + var keyRegex = /^[+/0-9A-Za-z]{22}==$/; + var RUNNING = 0; + var CLOSING = 1; + var CLOSED = 2; + var WebSocketServer2 = class extends EventEmitter2 { + /** + * Create a `WebSocketServer` instance. + * + * @param {Object} options Configuration options + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Boolean} [options.autoPong=true] Specifies whether or not to + * automatically send a pong in response to a ping + * @param {Number} [options.backlog=511] The maximum length of the queue of + * pending connections + * @param {Boolean} [options.clientTracking=true] Specifies whether or not to + * track clients + * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to + * wait for the closing handshake to finish after `websocket.close()` is + * called + * @param {Function} [options.handleProtocols] A hook to handle protocols + * @param {String} [options.host] The hostname where to bind the server + * @param {Number} [options.maxPayload=104857600] The maximum allowed message + * size + * @param {Boolean} [options.noServer=false] Enable no server mode + * @param {String} [options.path] Accept only connections matching this path + * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable + * permessage-deflate + * @param {Number} [options.port] The port where to bind the server + * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S + * server to use + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @param {Function} [options.verifyClient] A hook to reject connections + * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket` + * class to use. It must be the `WebSocket` class or class that extends it + * @param {Function} [callback] A listener for the `listening` event + */ + constructor(options, callback) { + super(); + options = { + allowSynchronousEvents: true, + autoPong: true, + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: false, + handleProtocols: null, + clientTracking: true, + closeTimeout: CLOSE_TIMEOUT, + verifyClient: null, + noServer: false, + backlog: null, + // use default (511 as implemented in net.js) + server: null, + host: null, + path: null, + port: null, + WebSocket: WebSocket2, + ...options + }; + if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { + throw new TypeError( + 'One and only one of the "port", "server", or "noServer" options must be specified' + ); + } + if (options.port != null) { + this._server = http4.createServer((req, res) => { + const body = http4.STATUS_CODES[426]; + res.writeHead(426, { + "Content-Length": body.length, + "Content-Type": "text/plain" + }); + res.end(body); + }); + this._server.listen( + options.port, + options.host, + options.backlog, + callback + ); + } else if (options.server) { + this._server = options.server; + } + if (this._server) { + const emitConnection = this.emit.bind(this, "connection"); + this._removeListeners = addListeners(this._server, { + listening: this.emit.bind(this, "listening"), + error: this.emit.bind(this, "error"), + upgrade: (req, socket, head) => { + this.handleUpgrade(req, socket, head, emitConnection); + } + }); + } + if (options.perMessageDeflate === true) + options.perMessageDeflate = {}; + if (options.clientTracking) { + this.clients = /* @__PURE__ */ new Set(); + this._shouldEmitClose = false; + } + this.options = options; + this._state = RUNNING; + } + /** + * Returns the bound address, the address family name, and port of the server + * as reported by the operating system if listening on an IP socket. + * If the server is listening on a pipe or UNIX domain socket, the name is + * returned as a string. + * + * @return {(Object|String|null)} The address of the server + * @public + */ + address() { + if (this.options.noServer) { + throw new Error('The server is operating in "noServer" mode'); + } + if (!this._server) + return null; + return this._server.address(); + } + /** + * Stop the server from accepting new connections and emit the `'close'` event + * when all existing connections are closed. + * + * @param {Function} [cb] A one-time listener for the `'close'` event + * @public + */ + close(cb) { + if (this._state === CLOSED) { + if (cb) { + this.once("close", () => { + cb(new Error("The server is not running")); + }); + } + process.nextTick(emitClose, this); + return; + } + if (cb) + this.once("close", cb); + if (this._state === CLOSING) + return; + this._state = CLOSING; + if (this.options.noServer || this.options.server) { + if (this._server) { + this._removeListeners(); + this._removeListeners = this._server = null; + } + if (this.clients) { + if (!this.clients.size) { + process.nextTick(emitClose, this); + } else { + this._shouldEmitClose = true; + } + } else { + process.nextTick(emitClose, this); + } + } else { + const server = this._server; + this._removeListeners(); + this._removeListeners = this._server = null; + server.close(() => { + emitClose(this); + }); + } + } + /** + * See if a given request should be handled by this server instance. + * + * @param {http.IncomingMessage} req Request object to inspect + * @return {Boolean} `true` if the request is valid, else `false` + * @public + */ + shouldHandle(req) { + if (this.options.path) { + const index = req.url.indexOf("?"); + const pathname = index !== -1 ? req.url.slice(0, index) : req.url; + if (pathname !== this.options.path) + return false; + } + return true; + } + /** + * Handle a HTTP Upgrade request. + * + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @public + */ + handleUpgrade(req, socket, head, cb) { + socket.on("error", socketOnError); + const key = req.headers["sec-websocket-key"]; + const upgrade = req.headers.upgrade; + const version = +req.headers["sec-websocket-version"]; + if (req.method !== "GET") { + const message = "Invalid HTTP method"; + abortHandshakeOrEmitwsClientError(this, req, socket, 405, message); + return; + } + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + const message = "Invalid Upgrade header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (key === void 0 || !keyRegex.test(key)) { + const message = "Missing or invalid Sec-WebSocket-Key header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (version !== 13 && version !== 8) { + const message = "Missing or invalid Sec-WebSocket-Version header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, { + "Sec-WebSocket-Version": "13, 8" + }); + return; + } + if (!this.shouldHandle(req)) { + abortHandshake(socket, 400); + return; + } + const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; + let protocols = /* @__PURE__ */ new Set(); + if (secWebSocketProtocol !== void 0) { + try { + protocols = subprotocol.parse(secWebSocketProtocol); + } catch (err) { + const message = "Invalid Sec-WebSocket-Protocol header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; + const extensions = {}; + if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) { + const perMessageDeflate = new PerMessageDeflate( + this.options.perMessageDeflate, + true, + this.options.maxPayload + ); + try { + const offers = extension.parse(secWebSocketExtensions); + if (offers[PerMessageDeflate.extensionName]) { + perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); + extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + } catch (err) { + const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + if (this.options.verifyClient) { + const info2 = { + origin: req.headers[`${version === 8 ? "sec-websocket-origin" : "origin"}`], + secure: !!(req.socket.authorized || req.socket.encrypted), + req + }; + if (this.options.verifyClient.length === 2) { + this.options.verifyClient(info2, (verified, code, message, headers) => { + if (!verified) { + return abortHandshake(socket, code || 401, message, headers); + } + this.completeUpgrade( + extensions, + key, + protocols, + req, + socket, + head, + cb + ); + }); + return; + } + if (!this.options.verifyClient(info2)) + return abortHandshake(socket, 401); + } + this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); + } + /** + * Upgrade the connection to WebSocket. + * + * @param {Object} extensions The accepted extensions + * @param {String} key The value of the `Sec-WebSocket-Key` header + * @param {Set} protocols The subprotocols + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @throws {Error} If called more than once with the same socket + * @private + */ + completeUpgrade(extensions, key, protocols, req, socket, head, cb) { + if (!socket.readable || !socket.writable) + return socket.destroy(); + if (socket[kWebSocket]) { + throw new Error( + "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" + ); + } + if (this._state > RUNNING) + return abortHandshake(socket, 503); + const digest = createHash("sha1").update(key + GUID).digest("base64"); + const headers = [ + "HTTP/1.1 101 Switching Protocols", + "Upgrade: websocket", + "Connection: Upgrade", + `Sec-WebSocket-Accept: ${digest}` + ]; + const ws = new this.options.WebSocket(null, void 0, this.options); + if (protocols.size) { + const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value; + if (protocol) { + headers.push(`Sec-WebSocket-Protocol: ${protocol}`); + ws._protocol = protocol; + } + } + if (extensions[PerMessageDeflate.extensionName]) { + const params = extensions[PerMessageDeflate.extensionName].params; + const value = extension.format({ + [PerMessageDeflate.extensionName]: [params] + }); + headers.push(`Sec-WebSocket-Extensions: ${value}`); + ws._extensions = extensions; + } + this.emit("headers", headers, req); + socket.write(headers.concat("\r\n").join("\r\n")); + socket.removeListener("error", socketOnError); + ws.setSocket(socket, head, { + allowSynchronousEvents: this.options.allowSynchronousEvents, + maxPayload: this.options.maxPayload, + skipUTF8Validation: this.options.skipUTF8Validation + }); + if (this.clients) { + this.clients.add(ws); + ws.on("close", () => { + this.clients.delete(ws); + if (this._shouldEmitClose && !this.clients.size) { + process.nextTick(emitClose, this); + } + }); + } + cb(ws, req); + } + }; + module.exports = WebSocketServer2; + function addListeners(server, map) { + for (const event of Object.keys(map)) + server.on(event, map[event]); + return function removeListeners() { + for (const event of Object.keys(map)) { + server.removeListener(event, map[event]); + } + }; + } + function emitClose(server) { + server._state = CLOSED; + server.emit("close"); + } + function socketOnError() { + this.destroy(); + } + function abortHandshake(socket, code, message, headers) { + message = message || http4.STATUS_CODES[code]; + headers = { + Connection: "close", + "Content-Type": "text/html", + "Content-Length": Buffer.byteLength(message), + ...headers + }; + socket.once("finish", socket.destroy); + socket.end( + `HTTP/1.1 ${code} ${http4.STATUS_CODES[code]}\r +` + Object.keys(headers).map((h2) => `${h2}: ${headers[h2]}`).join("\r\n") + "\r\n\r\n" + message + ); + } + function abortHandshakeOrEmitwsClientError(server, req, socket, code, message, headers) { + if (server.listenerCount("wsClientError")) { + const err = new Error(message); + Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError); + server.emit("wsClientError", err, socket, req); + } else { + abortHandshake(socket, code, message, headers); + } + } + } +}); + +// +var core_exports = {}; +__export(core_exports, { + ExitCode: () => ExitCode, + addPath: () => addPath, + debug: () => debug, + endGroup: () => endGroup, + error: () => error, + exportVariable: () => exportVariable, + getBooleanInput: () => getBooleanInput, + getIDToken: () => getIDToken, + getInput: () => getInput, + getMultilineInput: () => getMultilineInput, + getState: () => getState, + group: () => group, + info: () => info, + isDebug: () => isDebug, + markdownSummary: () => markdownSummary, + notice: () => notice, + platform: () => platform_exports, + saveState: () => saveState, + setCommandEcho: () => setCommandEcho, + setFailed: () => setFailed, + setOutput: () => setOutput, + setSecret: () => setSecret, + startGroup: () => startGroup, + summary: () => summary, + toPlatformPath: () => toPlatformPath, + toPosixPath: () => toPosixPath, + toWin32Path: () => toWin32Path, + warning: () => warning +}); + +// +import * as os from "os"; + +// +function toCommandValue(input) { + if (input === null || input === void 0) { + return ""; + } else if (typeof input === "string" || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} + +// +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +function issue(name, message = "") { + issueCommand(name, {}, message); +} +var CMD_STRING = "::"; +var Command = class { + constructor(command, properties, message) { + if (!command) { + command = "missing.command"; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += " "; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } else { + cmdStr += ","; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +}; +function escapeData(s2) { + return toCommandValue(s2).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); +} +function escapeProperty(s2) { + return toCommandValue(s2).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C"); +} + +// +import * as crypto2 from "crypto"; +import * as fs from "fs"; +import * as os2 from "os"; +function issueFileCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${toCommandValue(message)}${os2.EOL}`, { + encoding: "utf8" + }); +} +function prepareKeyValueMessage(key, value) { + const delimiter3 = `ghadelimiter_${crypto2.randomUUID()}`; + const convertedValue = toCommandValue(value); + if (key.includes(delimiter3)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter3}"`); + } + if (convertedValue.includes(delimiter3)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter3}"`); + } + return `${key}<<${delimiter3}${os2.EOL}${convertedValue}${os2.EOL}${delimiter3}`; +} + +// +import * as os5 from "os"; +import * as path5 from "path"; + +// +import * as http from "http"; +import * as https from "https"; + +// +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === "https:"; + if (checkBypass(reqUrl)) { + return void 0; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env["https_proxy"] || process.env["HTTPS_PROXY"]; + } else { + return process.env["http_proxy"] || process.env["HTTP_PROXY"]; + } + })(); + if (proxyVar) { + try { + return new DecodedURL(proxyVar); + } catch (_a3) { + if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://")) + return new DecodedURL(`http://${proxyVar}`); + } + } else { + return void 0; + } +} +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } + const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ""; + if (!noProxy) { + return false; + } + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } else if (reqUrl.protocol === "http:") { + reqPort = 80; + } else if (reqUrl.protocol === "https:") { + reqPort = 443; + } + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === "number") { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + for (const upperNoProxyItem of noProxy.split(",").map((x2) => x2.trim().toUpperCase()).filter((x2) => x2)) { + if (upperNoProxyItem === "*" || upperReqHosts.some((x2) => x2 === upperNoProxyItem || x2.endsWith(`.${upperNoProxyItem}`) || upperNoProxyItem.startsWith(".") && x2.endsWith(`${upperNoProxyItem}`))) { + return true; + } + } + return false; +} +function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return hostLower === "localhost" || hostLower.startsWith("127.") || hostLower.startsWith("[::1]") || hostLower.startsWith("[0:0:0:0:0:0:0:1]"); +} +var DecodedURL = class extends URL { + constructor(url, base) { + super(url, base); + this._decodedUsername = decodeURIComponent(super.username); + this._decodedPassword = decodeURIComponent(super.password); + } + get username() { + return this._decodedUsername; + } + get password() { + return this._decodedPassword; + } +}; + +// +var tunnel = __toESM(require_tunnel2()); +var import_undici = __toESM(require_undici()); +var __awaiter = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var HttpCodes; +(function(HttpCodes2) { + HttpCodes2[HttpCodes2["OK"] = 200] = "OK"; + HttpCodes2[HttpCodes2["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes2[HttpCodes2["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes2[HttpCodes2["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes2[HttpCodes2["SeeOther"] = 303] = "SeeOther"; + HttpCodes2[HttpCodes2["NotModified"] = 304] = "NotModified"; + HttpCodes2[HttpCodes2["UseProxy"] = 305] = "UseProxy"; + HttpCodes2[HttpCodes2["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes2[HttpCodes2["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes2[HttpCodes2["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes2[HttpCodes2["BadRequest"] = 400] = "BadRequest"; + HttpCodes2[HttpCodes2["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes2[HttpCodes2["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes2[HttpCodes2["Forbidden"] = 403] = "Forbidden"; + HttpCodes2[HttpCodes2["NotFound"] = 404] = "NotFound"; + HttpCodes2[HttpCodes2["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes2[HttpCodes2["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes2[HttpCodes2["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes2[HttpCodes2["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes2[HttpCodes2["Conflict"] = 409] = "Conflict"; + HttpCodes2[HttpCodes2["Gone"] = 410] = "Gone"; + HttpCodes2[HttpCodes2["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes2[HttpCodes2["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes2[HttpCodes2["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes2[HttpCodes2["BadGateway"] = 502] = "BadGateway"; + HttpCodes2[HttpCodes2["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes2[HttpCodes2["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes || (HttpCodes = {})); +var Headers2; +(function(Headers4) { + Headers4["Accept"] = "accept"; + Headers4["ContentType"] = "content-type"; +})(Headers2 || (Headers2 = {})); +var MediaTypes; +(function(MediaTypes2) { + MediaTypes2["ApplicationJson"] = "application/json"; +})(MediaTypes || (MediaTypes = {})); +var HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +var HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +var RetryableHttpVerbs = ["OPTIONS", "GET", "DELETE", "HEAD"]; +var ExponentialBackoffCeiling = 10; +var ExponentialBackoffTimeSlice = 5; +var HttpClientError = class _HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = "HttpClientError"; + this.statusCode = statusCode; + Object.setPrototypeOf(this, _HttpClientError.prototype); + } +}; +var HttpClientResponse = class { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve2) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on("data", (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on("end", () => { + resolve2(output.toString()); + }); + })); + }); + } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve2) => __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on("data", (chunk) => { + chunks.push(chunk); + }); + this.message.on("end", () => { + resolve2(Buffer.concat(chunks)); + }); + })); + }); + } +}; +var HttpClient = class { + constructor(userAgent2, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = this._getUserAgentWithOrchestrationId(userAgent2); + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("OPTIONS", requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("GET", requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("DELETE", requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("POST", requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("PATCH", requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("PUT", requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request("HEAD", requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, additionalHeaders = {}) { + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers2.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers2.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers2.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error("Client has already been disposed."); + } + const parsedUrl = new URL(requestUrl); + let info2 = this._prepareRequest(verb, parsedUrl, headers); + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info2, data); + if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler2 of this.handlers) { + if (handler2.canHandleAuthentication(response)) { + authenticationHandler = handler2; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info2, data); + } else { + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && HttpRedirectCodes.includes(response.message.statusCode) && this._allowRedirects && redirectsRemaining > 0) { + const redirectUrl = response.message.headers["location"]; + if (!redirectUrl) { + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === "https:" && parsedUrl.protocol !== parsedRedirectUrl.protocol && !this._allowRedirectDowngrade) { + throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true."); + } + yield response.readBody(); + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + if (header.toLowerCase() === "authorization") { + delete headers[header]; + } + } + } + info2 = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info2, data); + redirectsRemaining--; + } + if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) { + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info2, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve2, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } else if (!res) { + reject(new Error("Unknown error")); + } else { + resolve2(res); + } + } + this.requestRawWithCallback(info2, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info2, data, onResult) { + if (typeof data === "string") { + if (!info2.options.headers) { + info2.options.headers = {}; + } + info2.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8"); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info2.httpModule.request(info2.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(void 0, res); + }); + let socket; + req.on("socket", (sock) => { + socket = sock; + }); + req.setTimeout(this._socketTimeout || 3 * 6e4, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info2.options.path}`)); + }); + req.on("error", function(err) { + handleResult(err); + }); + if (data && typeof data === "string") { + req.write(data, "utf8"); + } + if (data && typeof data !== "string") { + data.on("close", function() { + req.end(); + }); + data.pipe(req); + } else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info2 = {}; + info2.parsedUrl = requestUrl; + const usingSsl = info2.parsedUrl.protocol === "https:"; + info2.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info2.options = {}; + info2.options.host = info2.parsedUrl.hostname; + info2.options.port = info2.parsedUrl.port ? parseInt(info2.parsedUrl.port) : defaultPort; + info2.options.path = (info2.parsedUrl.pathname || "") + (info2.parsedUrl.search || ""); + info2.options.method = method; + info2.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info2.options.headers["user-agent"] = this.userAgent; + } + info2.options.agent = this._getAgent(info2.parsedUrl); + if (this.handlers) { + for (const handler2 of this.handlers) { + handler2.prepareRequest(info2.options); + } + } + return info2; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + /** + * Gets an existing header value or returns a default. + * Handles converting number header values to strings since HTTP headers must be strings. + * Note: This returns string | string[] since some headers can have multiple values. + * For headers that must always be a single string (like Content-Type), use the + * specialized _getExistingOrDefaultContentTypeHeader method instead. + */ + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + const headerValue = lowercaseKeys(this.requestOptions.headers)[header]; + if (headerValue) { + clientHeader = typeof headerValue === "number" ? headerValue.toString() : headerValue; + } + } + const additionalValue = additionalHeaders[header]; + if (additionalValue !== void 0) { + return typeof additionalValue === "number" ? additionalValue.toString() : additionalValue; + } + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; + } + /** + * Specialized version of _getExistingOrDefaultHeader for Content-Type header. + * Always returns a single string (not an array) since Content-Type should be a single value. + * Converts arrays to comma-separated strings and numbers to strings to ensure type safety. + * This was split from _getExistingOrDefaultHeader to provide stricter typing for callers + * that assign the result to places expecting a string (e.g., additionalHeaders[Headers.ContentType]). + */ + _getExistingOrDefaultContentTypeHeader(additionalHeaders, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + const headerValue = lowercaseKeys(this.requestOptions.headers)[Headers2.ContentType]; + if (headerValue) { + if (typeof headerValue === "number") { + clientHeader = String(headerValue); + } else if (Array.isArray(headerValue)) { + clientHeader = headerValue.join(", "); + } else { + clientHeader = headerValue; + } + } + } + const additionalValue = additionalHeaders[Headers2.ContentType]; + if (additionalValue !== void 0) { + if (typeof additionalValue === "number") { + return String(additionalValue); + } else if (Array.isArray(additionalValue)) { + return additionalValue.join(", "); + } else { + return additionalValue; + } + } + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (!useProxy) { + agent = this._agent; + } + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === "https:"; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, (proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + }), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === "https:"; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + if (!agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + if (usingSsl && this._ignoreSslError) { + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === "https:"; + proxyAgent = new import_undici.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, (proxyUrl.username || proxyUrl.password) && { + token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString("base64")}` + })); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + _getUserAgentWithOrchestrationId(userAgent2) { + const baseUserAgent = userAgent2 || "actions/http-client"; + const orchId = process.env["ACTIONS_ORCHESTRATION_ID"]; + if (orchId) { + const sanitizedId = orchId.replace(/[^a-z0-9_.-]/gi, "_"); + return `${baseUserAgent} actions_orchestration_id/${sanitizedId}`; + } + return baseUserAgent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise((resolve2) => setTimeout(() => resolve2(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve2, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + if (statusCode === HttpCodes.NotFound) { + resolve2(response); + } + function dateTimeDeserializer(key, value) { + if (typeof value === "string") { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } catch (err) { + } + if (statusCode > 299) { + let msg; + if (obj && obj.message) { + msg = obj.message; + } else if (contents && contents.length > 0) { + msg = contents; + } else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } else { + resolve2(response); + } + })); + }); + } +}; +var lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); + +// +var __awaiter2 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var BearerCredentialHandler = class { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error("The request has no headers"); + } + options.headers["Authorization"] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter2(this, void 0, void 0, function* () { + throw new Error("not implemented"); + }); + } +}; + +// +var __awaiter3 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var OidcClient = class _OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new HttpClient("actions/oidc-client", [new BearerCredentialHandler(_OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]; + if (!token) { + throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable"); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env["ACTIONS_ID_TOKEN_REQUEST_URL"]; + if (!runtimeUrl) { + throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable"); + } + return runtimeUrl; + } + static getCall(id_token_url) { + return __awaiter3(this, void 0, void 0, function* () { + var _a3; + const httpclient = _OidcClient.createHttpClient(); + const res = yield httpclient.getJson(id_token_url).catch((error2) => { + throw new Error(`Failed to get ID Token. + + Error Code : ${error2.statusCode} + + Error Message: ${error2.message}`); + }); + const id_token = (_a3 = res.result) === null || _a3 === void 0 ? void 0 : _a3.value; + if (!id_token) { + throw new Error("Response json body do not have ID Token field"); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter3(this, void 0, void 0, function* () { + try { + let id_token_url = _OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + debug(`ID token url is ${id_token_url}`); + const id_token = yield _OidcClient.getCall(id_token_url); + setSecret(id_token); + return id_token; + } catch (error2) { + throw new Error(`Error message: ${error2.message}`); + } + }); + } +}; + +// +import { EOL as EOL3 } from "os"; +import { constants, promises } from "fs"; +var __awaiter4 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var { access, appendFile, writeFile } = promises; +var SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; +var Summary = class { + constructor() { + this._buffer = ""; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter4(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, constants.R_OK | constants.W_OK); + } catch (_a3) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs).map(([key, value]) => ` ${key}="${value}"`).join(""); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { + return __awaiter4(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: "utf8" }); + return this.emptyBuffer(); + }); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter4(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ""; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(EOL3); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, lang && { lang }); + const element = this.wrap("pre", this.wrap("code", code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? "ol" : "ul"; + const listItems = items.map((item) => this.wrap("li", item)).join(""); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows.map((row) => { + const cells = row.map((cell) => { + if (typeof cell === "string") { + return this.wrap("td", cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? "th" : "td"; + const attrs = Object.assign(Object.assign({}, colspan && { colspan }), rowspan && { rowspan }); + return this.wrap(tag, data, attrs); + }).join(""); + return this.wrap("tr", cells); + }).join(""); + const element = this.wrap("table", tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap("details", this.wrap("summary", label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); + const element = this.wrap("img", null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ["h1", "h2", "h3", "h4", "h5", "h6"].includes(tag) ? tag : "h1"; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap("hr", null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap("br", null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, cite && { cite }); + const element = this.wrap("blockquote", text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap("a", text, { href }); + return this.addRaw(element).addEOL(); + } +}; +var _summary = new Summary(); +var markdownSummary = _summary; +var summary = _summary; + +// +import * as path from "path"; +function toPosixPath(pth) { + return pth.replace(/[\\]/g, "/"); +} +function toWin32Path(pth) { + return pth.replace(/[/]/g, "\\"); +} +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} + +// +var platform_exports = {}; +__export(platform_exports, { + arch: () => arch, + getDetails: () => getDetails, + isLinux: () => isLinux, + isMacOS: () => isMacOS, + isWindows: () => isWindows, + platform: () => platform +}); +import os4 from "os"; + +// +import { StringDecoder } from "string_decoder"; + +// +import * as os3 from "os"; +import * as events from "events"; +import * as child from "child_process"; +import * as path4 from "path"; + +// +import * as path3 from "path"; + +// +import * as fs2 from "fs"; +import * as path2 from "path"; +var __awaiter5 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var { chmod, copyFile, lstat, mkdir, open, readdir, rename, rm, rmdir, stat, symlink, unlink } = fs2.promises; +var IS_WINDOWS = process.platform === "win32"; +var READONLY = fs2.constants.O_RDONLY; +function exists(fsPath) { + return __awaiter5(this, void 0, void 0, function* () { + try { + yield stat(fsPath); + } catch (err) { + if (err.code === "ENOENT") { + return false; + } + throw err; + } + return true; + }); +} +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (IS_WINDOWS) { + return p.startsWith("\\") || /^[A-Z]:/i.test(p); + } + return p.startsWith("/"); +} +function tryGetExecutablePath(filePath, extensions) { + return __awaiter5(this, void 0, void 0, function* () { + let stats = void 0; + try { + stats = yield stat(filePath); + } catch (err) { + if (err.code !== "ENOENT") { + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (IS_WINDOWS) { + const upperExt = path2.extname(filePath).toUpperCase(); + if (extensions.some((validExt) => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = void 0; + try { + stats = yield stat(filePath); + } catch (err) { + if (err.code !== "ENOENT") { + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (IS_WINDOWS) { + try { + const directory = path2.dirname(filePath); + const upperName = path2.basename(filePath).toUpperCase(); + for (const actualName of yield readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path2.join(directory, actualName); + break; + } + } + } catch (err) { + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ""; + }); +} +function normalizeSeparators(p) { + p = p || ""; + if (IS_WINDOWS) { + p = p.replace(/\//g, "\\"); + return p.replace(/\\\\+/g, "\\"); + } + return p.replace(/\/\/+/g, "/"); +} +function isUnixExecutable(stats) { + return (stats.mode & 1) > 0 || (stats.mode & 8) > 0 && process.getgid !== void 0 && stats.gid === process.getgid() || (stats.mode & 64) > 0 && process.getuid !== void 0 && stats.uid === process.getuid(); +} + +// +var __awaiter6 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +function which(tool, check) { + return __awaiter6(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + if (check) { + const result = yield which(tool, false); + if (!result) { + if (IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ""; + }); +} +function findInPath(tool) { + return __awaiter6(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + const extensions = []; + if (IS_WINDOWS && process.env["PATHEXT"]) { + for (const extension of process.env["PATHEXT"].split(path3.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + if (isRooted(tool)) { + const filePath = yield tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + if (tool.includes(path3.sep)) { + return []; + } + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path3.delimiter)) { + if (p) { + directories.push(p); + } + } + } + const matches = []; + for (const directory of directories) { + const filePath = yield tryGetExecutablePath(path3.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} + +// +import { setTimeout as setTimeout2 } from "timers"; +var __awaiter7 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var IS_WINDOWS2 = process.platform === "win32"; +var ToolRunner = class extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? "" : "[command]"; + if (IS_WINDOWS2) { + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } else { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s2 = strBuffer + data.toString(); + let n = s2.indexOf(os3.EOL); + while (n > -1) { + const line = s2.substring(0, n); + onLine(line); + s2 = s2.substring(n + os3.EOL.length); + n = s2.indexOf(os3.EOL); + } + return s2; + } catch (err) { + this._debug(`error processing line. Failed with error ${err}`); + return ""; + } + } + _getSpawnFileName() { + if (IS_WINDOWS2) { + if (this._isCmdFile()) { + return process.env["COMSPEC"] || "cmd.exe"; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS2) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += " "; + argline += options.windowsVerbatimArguments ? a : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return this._endsWith(upperToolPath, ".CMD") || this._endsWith(upperToolPath, ".BAT"); + } + _windowsQuoteCmdArg(arg) { + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + if (!arg) { + return '""'; + } + const cmdSpecialChars = [ + " ", + " ", + "&", + "(", + ")", + "[", + "]", + "{", + "}", + "^", + "=", + ";", + "!", + "'", + "+", + ",", + "`", + "~", + "|", + "<", + ">", + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some((x2) => x2 === char)) { + needsQuotes = true; + break; + } + } + if (!needsQuotes) { + return arg; + } + let reverse = '"'; + let quoteHit = true; + for (let i2 = arg.length; i2 > 0; i2--) { + reverse += arg[i2 - 1]; + if (quoteHit && arg[i2 - 1] === "\\") { + reverse += "\\"; + } else if (arg[i2 - 1] === '"') { + quoteHit = true; + reverse += '"'; + } else { + quoteHit = false; + } + } + reverse += '"'; + return reverse.split("").reverse().join(""); + } + _uvQuoteCmdArg(arg) { + if (!arg) { + return '""'; + } + if (!arg.includes(" ") && !arg.includes(" ") && !arg.includes('"')) { + return arg; + } + if (!arg.includes('"') && !arg.includes("\\")) { + return `"${arg}"`; + } + let reverse = '"'; + let quoteHit = true; + for (let i2 = arg.length; i2 > 0; i2--) { + reverse += arg[i2 - 1]; + if (quoteHit && arg[i2 - 1] === "\\") { + reverse += "\\"; + } else if (arg[i2 - 1] === '"') { + quoteHit = true; + reverse += "\\"; + } else { + quoteHit = false; + } + } + reverse += '"'; + return reverse.split("").reverse().join(""); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 1e4 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result["windowsVerbatimArguments"] = options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter7(this, void 0, void 0, function* () { + if (!isRooted(this.toolPath) && (this.toolPath.includes("/") || IS_WINDOWS2 && this.toolPath.includes("\\"))) { + this.toolPath = path4.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + this.toolPath = yield which(this.toolPath, true); + return new Promise((resolve2, reject) => __awaiter7(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug("arguments:"); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os3.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on("debug", (message) => { + this._debug(message); + }); + if (this.options.cwd && !(yield exists(this.options.cwd))) { + return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + let stdbuffer = ""; + if (cp.stdout) { + cp.stdout.on("data", (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + let errbuffer = ""; + if (cp.stderr) { + cp.stderr.on("data", (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && optionsNonNull.errStream && optionsNonNull.outStream) { + const s2 = optionsNonNull.failOnStdErr ? optionsNonNull.errStream : optionsNonNull.outStream; + s2.write(data); + } + errbuffer = this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on("error", (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on("exit", (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on("close", (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on("done", (error2, exitCode) => { + if (stdbuffer.length > 0) { + this.emit("stdline", stdbuffer); + } + if (errbuffer.length > 0) { + this.emit("errline", errbuffer); + } + cp.removeAllListeners(); + if (error2) { + reject(error2); + } else { + resolve2(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error("child process missing stdin"); + } + cp.stdin.end(this.options.input); + } + })); + }); + } +}; +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ""; + function append(c) { + if (escaped && c !== '"') { + arg += "\\"; + } + arg += c; + escaped = false; + } + for (let i2 = 0; i2 < argString.length; i2++) { + const c = argString.charAt(i2); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } else { + append(c); + } + continue; + } + if (c === "\\" && escaped) { + append(c); + continue; + } + if (c === "\\" && inQuotes) { + escaped = true; + continue; + } + if (c === " " && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ""; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +var ExecState = class _ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; + this.processError = ""; + this.processExitCode = 0; + this.processExited = false; + this.processStderr = false; + this.delay = 1e4; + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error("toolPath must not be empty"); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } else if (this.processExited) { + this.timeout = setTimeout2(_ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit("debug", message); + } + _setResult() { + let error2; + if (this.processExited) { + if (this.processError) { + error2 = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error2 = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } else if (this.processStderr && this.options.failOnStdErr) { + error2 = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit("done", error2, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / 1e3} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +}; + +// +var __awaiter8 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +function exec(commandLine, args, options) { + return __awaiter8(this, void 0, void 0, function* () { + const commandArgs = argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +function getExecOutput(commandLine, args, options) { + return __awaiter8(this, void 0, void 0, function* () { + var _a3, _b; + let stdout = ""; + let stderr = ""; + const stdoutDecoder = new StringDecoder("utf8"); + const stderrDecoder = new StringDecoder("utf8"); + const originalStdoutListener = (_a3 = options === null || options === void 0 ? void 0 : options.listeners) === null || _a3 === void 0 ? void 0 : _a3.stdout; + const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); +} + +// +var __awaiter9 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var getWindowsInfo = () => __awaiter9(void 0, void 0, void 0, function* () { + const { stdout: version } = yield getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', void 0, { + silent: true + }); + const { stdout: name } = yield getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', void 0, { + silent: true + }); + return { + name: name.trim(), + version: version.trim() + }; +}); +var getMacOsInfo = () => __awaiter9(void 0, void 0, void 0, function* () { + var _a3, _b, _c, _d; + const { stdout } = yield getExecOutput("sw_vers", void 0, { + silent: true + }); + const version = (_b = (_a3 = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a3 === void 0 ? void 0 : _a3[1]) !== null && _b !== void 0 ? _b : ""; + const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ""; + return { + name, + version + }; +}); +var getLinuxInfo = () => __awaiter9(void 0, void 0, void 0, function* () { + const { stdout } = yield getExecOutput("lsb_release", ["-i", "-r", "-s"], { + silent: true + }); + const [name, version] = stdout.trim().split("\n"); + return { + name, + version + }; +}); +var platform = os4.platform(); +var arch = os4.arch(); +var isWindows = platform === "win32"; +var isMacOS = platform === "darwin"; +var isLinux = platform === "linux"; +function getDetails() { + return __awaiter9(this, void 0, void 0, function* () { + return Object.assign(Object.assign({}, yield isWindows ? getWindowsInfo() : isMacOS ? getMacOsInfo() : getLinuxInfo()), { + platform, + arch, + isWindows, + isMacOS, + isLinux + }); + }); +} + +// +var __awaiter10 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var ExitCode; +(function(ExitCode2) { + ExitCode2[ExitCode2["Success"] = 0] = "Success"; + ExitCode2[ExitCode2["Failure"] = 1] = "Failure"; +})(ExitCode || (ExitCode = {})); +function exportVariable(name, val) { + const convertedVal = toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env["GITHUB_ENV"] || ""; + if (filePath) { + return issueFileCommand("ENV", prepareKeyValueMessage(name, val)); + } + issueCommand("set-env", { name }, convertedVal); +} +function setSecret(secret) { + issueCommand("add-mask", {}, secret); +} +function addPath(inputPath) { + const filePath = process.env["GITHUB_PATH"] || ""; + if (filePath) { + issueFileCommand("PATH", inputPath); + } else { + issueCommand("add-path", {}, inputPath); + } + process.env["PATH"] = `${inputPath}${path5.delimiter}${process.env["PATH"]}`; +} +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +function getMultilineInput(name, options) { + const inputs = getInput(name, options).split("\n").filter((x2) => x2 !== ""); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map((input) => input.trim()); +} +function getBooleanInput(name, options) { + const trueValue = ["true", "True", "TRUE"]; + const falseValue = ["false", "False", "FALSE"]; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +function setOutput(name, value) { + const filePath = process.env["GITHUB_OUTPUT"] || ""; + if (filePath) { + return issueFileCommand("OUTPUT", prepareKeyValueMessage(name, value)); + } + process.stdout.write(os5.EOL); + issueCommand("set-output", { name }, toCommandValue(value)); +} +function setCommandEcho(enabled) { + issue("echo", enabled ? "on" : "off"); +} +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +function isDebug() { + return process.env["RUNNER_DEBUG"] === "1"; +} +function debug(message) { + issueCommand("debug", {}, message); +} +function error(message, properties = {}) { + issueCommand("error", toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +function warning(message, properties = {}) { + issueCommand("warning", toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +function notice(message, properties = {}) { + issueCommand("notice", toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +function info(message) { + process.stdout.write(message + os5.EOL); +} +function startGroup(name) { + issue("group", name); +} +function endGroup() { + issue("endgroup"); +} +function group(name, fn) { + return __awaiter10(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } finally { + endGroup(); + } + return result; + }); +} +function saveState(name, value) { + const filePath = process.env["GITHUB_STATE"] || ""; + if (filePath) { + return issueFileCommand("STATE", prepareKeyValueMessage(name, value)); + } + issueCommand("save-state", { name }, toCommandValue(value)); +} +function getState(name) { + return process.env[`STATE_${name}`] || ""; +} +function getIDToken(aud) { + return __awaiter10(this, void 0, void 0, function* () { + return yield OidcClient.getIDToken(aud); + }); +} + +// +import { readFileSync, existsSync as existsSync2 } from "fs"; +import { EOL as EOL6 } from "os"; +var Context = class { + /** + * Hydrate the context from the environment + */ + constructor() { + var _a3, _b, _c; + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if (existsSync2(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse(readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: "utf8" })); + } else { + const path7 = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path7} does not exist${EOL6}`); + } + } + this.eventName = process.env.GITHUB_EVENT_NAME; + this.sha = process.env.GITHUB_SHA; + this.ref = process.env.GITHUB_REF; + this.workflow = process.env.GITHUB_WORKFLOW; + this.action = process.env.GITHUB_ACTION; + this.actor = process.env.GITHUB_ACTOR; + this.job = process.env.GITHUB_JOB; + this.runAttempt = parseInt(process.env.GITHUB_RUN_ATTEMPT, 10); + this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); + this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); + this.apiUrl = (_a3 = process.env.GITHUB_API_URL) !== null && _a3 !== void 0 ? _a3 : `https://api.github.com`; + this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; + this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; + } + get issue() { + const payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); + } + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); + return { owner, repo }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } +}; + +// +var httpClient = __toESM(require_lib()); +var import_undici2 = __toESM(require_undici()); +var __awaiter11 = function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); + }); + } + return new (P || (P = Promise))(function(resolve2, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +function getProxyAgent(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgent(destinationUrl); +} +function getProxyAgentDispatcher(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgentDispatcher(destinationUrl); +} +function getProxyFetch(destinationUrl) { + const httpDispatcher = getProxyAgentDispatcher(destinationUrl); + const proxyFetch = (url, opts) => __awaiter11(this, void 0, void 0, function* () { + return (0, import_undici2.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher })); + }); + return proxyFetch; +} +function getApiBaseUrl() { + return process.env["GITHUB_API_URL"] || "https://api.github.com"; +} + +// +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + if (typeof process === "object" && process.version !== void 0) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + return ""; +} + +// +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); + } + if (!options) { + options = {}; + } + if (Array.isArray(name)) { + return name.reverse().reduce((callback, name2) => { + return register.bind(null, state, name2, callback, options); + }, method)(); + } + return Promise.resolve().then(() => { + if (!state.registry[name]) { + return method(options); + } + return state.registry[name].reduce((method2, registered) => { + return registered.hook.bind(null, method2, options); + }, method)(); + }); +} + +// +function addHook(state, kind, name, hook6) { + const orig = hook6; + if (!state.registry[name]) { + state.registry[name] = []; + } + if (kind === "before") { + hook6 = (method, options) => { + return Promise.resolve().then(orig.bind(null, options)).then(method.bind(null, options)); + }; + } + if (kind === "after") { + hook6 = (method, options) => { + let result; + return Promise.resolve().then(method.bind(null, options)).then((result_) => { + result = result_; + return orig(result, options); + }).then(() => { + return result; + }); + }; + } + if (kind === "error") { + hook6 = (method, options) => { + return Promise.resolve().then(method.bind(null, options)).catch((error2) => { + return orig(error2, options); + }); + }; + } + state.registry[name].push({ + hook: hook6, + orig + }); +} + +// +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + const index = state.registry[name].map((registered) => { + return registered.orig; + }).indexOf(method); + if (index === -1) { + return; + } + state.registry[name].splice(index, 1); +} + +// +var bind = Function.bind; +var bindable = bind.bind(bind); +function bindApi(hook6, state, name) { + const removeHookRef = bindable(removeHook, null).apply( + null, + name ? [state, name] : [state] + ); + hook6.api = { remove: removeHookRef }; + hook6.remove = removeHookRef; + ["before", "error", "after", "wrap"].forEach((kind) => { + const args = name ? [state, kind, name] : [state, kind]; + hook6[kind] = hook6.api[kind] = bindable(addHook, null).apply(null, args); + }); +} +function Singular() { + const singularHookName = Symbol("Singular"); + const singularHookState = { + registry: {} + }; + const singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} +function Collection() { + const state = { + registry: {} + }; + const hook6 = register.bind(null, state); + bindApi(hook6, state); + return hook6; +} +var before_after_hook_default = { Singular, Collection }; + +// +var VERSION = "0.0.0-development"; +var userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`; +var DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "" + } +}; +function lowercaseKeys2(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} +function isPlainObject(value) { + if (typeof value !== "object" || value === null) + return false; + if (Object.prototype.toString.call(value) !== "[object Object]") + return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) + return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} +function mergeDeep(defaults2, options) { + const result = Object.assign({}, defaults2); + Object.keys(options).forEach((key) => { + if (isPlainObject(options[key])) { + if (!(key in defaults2)) + Object.assign(result, { [key]: options[key] }); + else + result[key] = mergeDeep(defaults2[key], options[key]); + } else { + Object.assign(result, { [key]: options[key] }); + } + }); + return result; +} +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === void 0) { + delete obj[key]; + } + } + return obj; +} +function merge(defaults2, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { method, url } : { url: method }, options); + } else { + options = Object.assign({}, route); + } + options.headers = lowercaseKeys2(options.headers); + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults2 || {}, options); + if (options.url === "/graphql") { + if (defaults2 && defaults2.mediaType.previews?.length) { + mergedOptions.mediaType.previews = defaults2.mediaType.previews.filter( + (preview) => !mergedOptions.mediaType.previews.includes(preview) + ).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); + } + return mergedOptions; +} +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + if (names.length === 0) { + return url; + } + return url + separator + names.map((name) => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} +var urlVariableRegex = /\{[^{}}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/(?:^\W+)|(?:(? a.concat(b), []); +} +function omit(object, keysToOmit) { + const result = { __proto__: null }; + for (const key of Object.keys(object)) { + if (keysToOmit.indexOf(key) === -1) { + result[key] = object[key]; + } + } + return result; +} +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + return part; + }).join(""); +} +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} +function isDefined(value) { + return value !== void 0 && value !== null; +} +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} +function getValues(context3, operator, key, modifier) { + var value = context3[key], result = []; + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") { + value = value.toString(); + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + result.push( + encodeValue(operator, value, isKeyOperator(operator) ? key : "") + ); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + result.push( + encodeValue(operator, value2, isKeyOperator(operator) ? key : "") + ); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function(value2) { + tmp.push(encodeValue(operator, value2)); + }); + } else { + Object.keys(value).forEach(function(k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + return result; +} +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} +function expand(template, context3) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + template = template.replace( + /\{([^\{\}]+)\}|([^\{\}]+)/g, + function(_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + expression.split(/,/g).forEach(function(variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context3, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== "+") { + var separator = ","; + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + } + ); + if (template === "/") { + return template; + } else { + return template.replace(/\/$/, ""); + } +} +function parse(options) { + let method = options.method.toUpperCase(); + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, [ + "method", + "baseUrl", + "url", + "headers", + "request", + "mediaType" + ]); + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + if (!isBinaryRequest) { + if (options.mediaType.format) { + headers.accept = headers.accept.split(/,/).map( + (format) => format.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${options.mediaType.format}` + ) + ).join(","); + } + if (url.endsWith("/graphql")) { + if (options.mediaType.previews?.length) { + const previewsFromAcceptHeader = headers.accept.match(/(? { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } + } + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } + return Object.assign( + { method, url, headers }, + typeof body !== "undefined" ? { body } : null, + options.request ? { request: options.request } : null + ); +} +function endpointWithDefaults(defaults2, route, options) { + return parse(merge(defaults2, route, options)); +} +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), + parse + }); +} +var endpoint = withDefaults(null, DEFAULTS); + +// +var import_fast_content_type_parse = __toESM(require_fast_content_type_parse()); + +// +var noiseValue = /^-?\d+n+$/; +var originalStringify = JSON.stringify; +var originalParse = JSON.parse; +var JSONStringify = (value, replacer, space) => { + if ("rawJSON" in JSON) { + return originalStringify( + value, + (key, value2) => { + if (typeof value2 === "bigint") + return JSON.rawJSON(value2.toString()); + if (typeof replacer === "function") + return replacer(key, value2); + if (Array.isArray(replacer) && replacer.includes(key)) + return value2; + return value2; + }, + space + ); + } + if (!value) + return originalStringify(value, replacer, space); + const bigInts = /([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; + const noise = /([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g; + const convertedToCustomJSON = originalStringify( + value, + (key, value2) => { + const isNoise = typeof value2 === "string" && Boolean(value2.match(noiseValue)); + if (isNoise) + return value2.toString() + "n"; + if (typeof value2 === "bigint") + return value2.toString() + "n"; + if (typeof replacer === "function") + return replacer(key, value2); + if (Array.isArray(replacer) && replacer.includes(key)) + return value2; + return value2; + }, + space + ); + const processedJSON = convertedToCustomJSON.replace(bigInts, "$1$2$3"); + const denoisedJSON = processedJSON.replace(noise, "$1$2$3"); + return denoisedJSON; +}; +var isContextSourceSupported = () => JSON.parse("1", (_, __, context3) => !!context3 && context3.source === "1"); +var JSONParseV2 = (text, reviver) => { + const intRegex = /^-?\d+$/; + return JSON.parse(text, (key, value, context3) => { + const isBigNumber = typeof value === "number" && (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER); + const isInt = intRegex.test(context3.source); + const isBigInt = isBigNumber && isInt; + if (isBigInt) + return BigInt(context3.source); + if (typeof reviver !== "function") + return value; + return reviver(key, value, context3); + }); +}; +var JSONParse = (text, reviver) => { + if (!text) + return originalParse(text, reviver); + if (isContextSourceSupported()) + return JSONParseV2(text, reviver); + const MAX_INT = Number.MAX_SAFE_INTEGER.toString(); + const MAX_DIGITS = MAX_INT.length; + const stringsOrLargeNumbers = /"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g; + const noiseValueWithQuotes = /^"-?\d+n+"$/; + const customFormat = /^-?\d+n$/; + const serializedData = text.replace( + stringsOrLargeNumbers, + (text2, digits, fractional, exponential) => { + const isString = text2[0] === '"'; + const isNoise = isString && Boolean(text2.match(noiseValueWithQuotes)); + if (isNoise) + return text2.substring(0, text2.length - 1) + 'n"'; + const isFractionalOrExponential = fractional || exponential; + const isLessThanMaxSafeInt = digits && (digits.length < MAX_DIGITS || digits.length === MAX_DIGITS && digits <= MAX_INT); + if (isString || isFractionalOrExponential || isLessThanMaxSafeInt) + return text2; + return '"' + text2 + 'n"'; + } + ); + return originalParse(serializedData, (key, value, context3) => { + const isCustomFormatBigInt = typeof value === "string" && Boolean(value.match(customFormat)); + if (isCustomFormatBigInt) + return BigInt(value.substring(0, value.length - 1)); + const isNoiseValue = typeof value === "string" && Boolean(value.match(noiseValue)); + if (isNoiseValue) + return value.substring(0, value.length - 1); + if (typeof reviver !== "function") + return value; + return reviver(key, value, context3); + }); +}; + +// +var RequestError = class extends Error { + name; + /** + * http status code + */ + status; + /** + * Request options that lead to the error. + */ + request; + /** + * Response object if a response was received + */ + response; + constructor(message, statusCode, options) { + super(message, { cause: options.cause }); + this.name = "HttpError"; + this.status = Number.parseInt(statusCode); + if (Number.isNaN(this.status)) { + this.status = 0; + } + if ("response" in options) { + this.response = options.response; + } + const requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace( + /(? ""; +async function fetchWrapper(requestOptions) { + const fetch4 = requestOptions.request?.fetch || globalThis.fetch; + if (!fetch4) { + throw new Error( + "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" + ); + } + const log = requestOptions.request?.log || console; + const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false; + const body = isPlainObject2(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body; + const requestHeaders = Object.fromEntries( + Object.entries(requestOptions.headers).map(([name, value]) => [ + name, + String(value) + ]) + ); + let fetchResponse; + try { + fetchResponse = await fetch4(requestOptions.url, { + method: requestOptions.method, + body, + redirect: requestOptions.request?.redirect, + headers: requestHeaders, + signal: requestOptions.request?.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...requestOptions.body && { duplex: "half" } + }); + } catch (error2) { + let message = "Unknown Error"; + if (error2 instanceof Error) { + if (error2.name === "AbortError") { + error2.status = 500; + throw error2; + } + message = error2.message; + if (error2.name === "TypeError" && "cause" in error2) { + if (error2.cause instanceof Error) { + message = error2.cause.message; + } else if (typeof error2.cause === "string") { + message = error2.cause; + } + } + } + const requestError = new RequestError(message, 500, { + request: requestOptions + }); + requestError.cause = error2; + throw requestError; + } + const status = fetchResponse.status; + const url = fetchResponse.url; + const responseHeaders = {}; + for (const [key, value] of fetchResponse.headers) { + responseHeaders[key] = value; + } + const octokitResponse = { + url, + status, + headers: responseHeaders, + data: "" + }; + if ("deprecation" in responseHeaders) { + const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` + ); + } + if (status === 204 || status === 205) { + return octokitResponse; + } + if (requestOptions.method === "HEAD") { + if (status < 400) { + return octokitResponse; + } + throw new RequestError(fetchResponse.statusText, status, { + response: octokitResponse, + request: requestOptions + }); + } + if (status === 304) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError("Not modified", status, { + response: octokitResponse, + request: requestOptions + }); + } + if (status >= 400) { + octokitResponse.data = await getResponseData(fetchResponse); + throw new RequestError(toErrorMessage(octokitResponse.data), status, { + response: octokitResponse, + request: requestOptions + }); + } + octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body; + return octokitResponse; +} +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + if (!contentType) { + return response.text().catch(noop); + } + const mimetype = (0, import_fast_content_type_parse.safeParse)(contentType); + if (isJSONResponse(mimetype)) { + let text = ""; + try { + text = await response.text(); + return JSONParse(text); + } catch (err) { + return text; + } + } else if (mimetype.type.startsWith("text/") || mimetype.parameters.charset?.toLowerCase() === "utf-8") { + return response.text().catch(noop); + } else { + return response.arrayBuffer().catch( + /* v8 ignore next -- @preserve */ + () => new ArrayBuffer(0) + ); + } +} +function isJSONResponse(mimetype) { + return mimetype.type === "application/json" || mimetype.type === "application/scim+json"; +} +function toErrorMessage(data) { + if (typeof data === "string") { + return data; + } + if (data instanceof ArrayBuffer) { + return "Unknown error"; + } + if ("message" in data) { + const suffix = "documentation_url" in data ? ` - ${data.documentation_url}` : ""; + return Array.isArray(data.errors) ? `${data.message}: ${data.errors.map((v) => JSON.stringify(v)).join(", ")}${suffix}` : `${data.message}${suffix}`; + } + return `Unknown error: ${JSON.stringify(data)}`; +} +function withDefaults2(oldEndpoint, newDefaults) { + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function(route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint2.parse(endpointOptions)); + } + const request2 = (route2, parameters2) => { + return fetchWrapper( + endpoint2.parse(endpoint2.merge(route2, parameters2)) + ); + }; + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); + return endpointOptions.request.hook(request2, endpointOptions); + }; + return Object.assign(newApi, { + endpoint: endpoint2, + defaults: withDefaults2.bind(null, endpoint2) + }); +} +var request = withDefaults2(endpoint, defaults_default); + +// +var VERSION3 = "0.0.0-development"; +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors: +` + data.errors.map((e2) => ` - ${e2.message}`).join("\n"); +} +var GraphqlResponseError = class extends Error { + constructor(request2, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request2; + this.headers = headers; + this.response = response; + this.errors = response.errors; + this.data = response.data; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + name = "GraphqlResponseError"; + errors; + data; +}; +var NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType", + "operationName" +]; +var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request2, query, options) { + if (options) { + if (typeof query === "string" && "query" in options) { + return Promise.reject( + new Error(`[@octokit/graphql] "query" cannot be used as variable name`) + ); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject( + new Error( + `[@octokit/graphql] "${key}" cannot be used as variable name` + ) + ); + } + } + const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; + const requestOptions = Object.keys( + parsedOptions + ).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + const baseUrl2 = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl2)) { + requestOptions.url = baseUrl2.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request2(requestOptions).then((response) => { + if (response.data.errors) { + const headers = {}; + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + throw new GraphqlResponseError( + requestOptions, + headers, + response.data + ); + } + return response.data.data; + }); +} +function withDefaults3(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + return Object.assign(newApi, { + defaults: withDefaults3.bind(null, newRequest), + endpoint: newRequest.endpoint + }); +} +var graphql2 = withDefaults3(request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION3} ${getUserAgent()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults3(customRequest, { + method: "POST", + url: "/graphql" + }); +} + +// +var b64url = "(?:[a-zA-Z0-9_-]+)"; +var sep3 = "\\."; +var jwtRE = new RegExp(`^${b64url}${sep3}${b64url}${sep3}${b64url}$`); +var isJWT = jwtRE.test.bind(jwtRE); +async function auth(token) { + const isApp = isJWT(token); + const isInstallation = token.startsWith("v1.") || token.startsWith("ghs_"); + const isUserToServer = token.startsWith("ghu_"); + const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return { + type: "token", + token, + tokenType + }; +} +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + return `token ${token}`; +} +async function hook(token, request2, route, parameters) { + const endpoint2 = request2.endpoint.merge( + route, + parameters + ); + endpoint2.headers.authorization = withAuthorizationPrefix(token); + return request2(endpoint2); +} +var createTokenAuth = function createTokenAuth2(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + if (typeof token !== "string") { + throw new Error( + "[@octokit/auth-token] Token passed to createTokenAuth is not a string" + ); + } + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; + +// +var VERSION4 = "7.0.6"; + +// +var noop2 = () => { +}; +var consoleWarn = console.warn.bind(console); +var consoleError = console.error.bind(console); +function createLogger(logger = {}) { + if (typeof logger.debug !== "function") { + logger.debug = noop2; + } + if (typeof logger.info !== "function") { + logger.info = noop2; + } + if (typeof logger.warn !== "function") { + logger.warn = consoleWarn; + } + if (typeof logger.error !== "function") { + logger.error = consoleError; + } + return logger; +} +var userAgentTrail = `octokit-core.js/${VERSION4} ${getUserAgent()}`; +var Octokit = class { + static VERSION = VERSION4; + static defaults(defaults2) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults2 === "function") { + super(defaults2(options)); + return; + } + super( + Object.assign( + {}, + defaults2, + options, + options.userAgent && defaults2.userAgent ? { + userAgent: `${options.userAgent} ${defaults2.userAgent}` + } : null + ) + ); + } + }; + return OctokitWithDefaults; + } + static plugins = []; + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + static plugin(...newPlugins) { + const currentPlugins = this.plugins; + const NewOctokit = class extends this { + static plugins = currentPlugins.concat( + newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) + ); + }; + return NewOctokit; + } + constructor(options = {}) { + const hook6 = new before_after_hook_default.Collection(); + const requestDefaults = { + baseUrl: request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook6.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; + requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } + this.request = request.defaults(requestDefaults); + this.graphql = withCustomRequest(this.request).defaults(requestDefaults); + this.log = createLogger(options.log); + this.hook = hook6; + if (!options.authStrategy) { + if (!options.auth) { + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + const auth6 = createTokenAuth(options.auth); + hook6.wrap("request", auth6.hook); + this.auth = auth6; + } + } else { + const { authStrategy, ...otherOptions } = options; + const auth6 = authStrategy( + Object.assign( + { + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, + options.auth + ) + ); + hook6.wrap("request", auth6.hook); + this.auth = auth6; + } + const classConstructor = this.constructor; + for (let i2 = 0; i2 < classConstructor.plugins.length; ++i2) { + Object.assign(this, classConstructor.plugins[i2](this, options)); + } + } + // assigned during constructor + request; + graphql; + log; + hook; + // TODO: type `octokit.auth` based on passed options.authStrategy + auth; +}; + +// +var VERSION5 = "17.0.0"; + +// +var Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: [ + "POST /orgs/{org}/actions/runners/{runner_id}/labels" + ], + addCustomLabelsToSelfHostedRunnerForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + addRepoAccessToSelfHostedRunnerGroupInOrg: [ + "PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + approveWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" + ], + cancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" + ], + createEnvironmentVariable: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/variables" + ], + createHostedRunnerForOrg: ["POST /orgs/{org}/actions/hosted-runners"], + createOrUpdateEnvironmentSecret: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + createOrgVariable: ["POST /orgs/{org}/actions/variables"], + createRegistrationTokenForOrg: [ + "POST /orgs/{org}/actions/runners/registration-token" + ], + createRegistrationTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/registration-token" + ], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/remove-token" + ], + createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], + createWorkflowDispatch: [ + "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" + ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" + ], + deleteArtifact: [ + "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" + ], + deleteCustomImageFromOrg: [ + "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}" + ], + deleteCustomImageVersionFromOrg: [ + "DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}" + ], + deleteEnvironmentSecret: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}" + ], + deleteEnvironmentVariable: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}" + ], + deleteHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + deleteRepoVariable: [ + "DELETE /repos/{owner}/{repo}/actions/variables/{name}" + ], + deleteSelfHostedRunnerFromOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}" + ], + deleteSelfHostedRunnerFromRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: [ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + disableSelectedRepositoryGithubActionsOrganization: [ + "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + disableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" + ], + downloadArtifact: [ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" + ], + downloadJobLogsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" + ], + downloadWorkflowRunAttemptLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" + ], + downloadWorkflowRunLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + enableSelectedRepositoryGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + enableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" + ], + forceCancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel" + ], + generateRunnerJitconfigForOrg: [ + "POST /orgs/{org}/actions/runners/generate-jitconfig" + ], + generateRunnerJitconfigForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" + ], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], getActionsCacheUsageByRepoForOrg: [ "GET /orgs/{org}/actions/cache/usage-by-repository" @@ -24889,1522 +47812,17719 @@ var Endpoints = { listOrgPatternConfigs: [ "GET /orgs/{org}/secret-scanning/pattern-configurations" ], - updateAlert: [ - "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + updateAlert: [ + "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ], + updateOrgPatternConfigs: [ + "PATCH /orgs/{org}/secret-scanning/pattern-configurations" + ] + }, + securityAdvisories: { + createFork: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks" + ], + createPrivateVulnerabilityReport: [ + "POST /repos/{owner}/{repo}/security-advisories/reports" + ], + createRepositoryAdvisory: [ + "POST /repos/{owner}/{repo}/security-advisories" + ], + createRepositoryAdvisoryCveRequest: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" + ], + getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], + getRepositoryAdvisory: [ + "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ], + listGlobalAdvisories: ["GET /advisories"], + listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], + listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], + updateRepositoryAdvisory: [ + "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ] + }, + teams: { + addOrUpdateMembershipForUserInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + addOrUpdateRepoPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + checkPermissionsForRepoInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + deleteDiscussionInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + getDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + getMembershipForUserInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/invitations" + ], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + removeRepoInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + updateDiscussionCommentInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + updateDiscussionInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: [ + "POST /user/emails", + {}, + { renamed: ["users", "addEmailForAuthenticatedUser"] } + ], + addEmailForAuthenticatedUser: ["POST /user/emails"], + addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: [ + "POST /user/gpg_keys", + {}, + { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } + ], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: [ + "POST /user/keys", + {}, + { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } + ], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteAttestationsBulk: [ + "POST /users/{username}/attestations/delete-request" + ], + deleteAttestationsById: [ + "DELETE /users/{username}/attestations/{attestation_id}" + ], + deleteAttestationsBySubjectDigest: [ + "DELETE /users/{username}/attestations/digest/{subject_digest}" + ], + deleteEmailForAuthenticated: [ + "DELETE /user/emails", + {}, + { renamed: ["users", "deleteEmailForAuthenticatedUser"] } + ], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: [ + "DELETE /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } + ], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: [ + "DELETE /user/keys/{key_id}", + {}, + { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } + ], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], + deleteSshSigningKeyForAuthenticatedUser: [ + "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getById: ["GET /user/{account_id}"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: [ + "GET /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } + ], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: [ + "GET /user/keys/{key_id}", + {}, + { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } + ], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: [ + "GET /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + list: ["GET /users"], + listAttestations: ["GET /users/{username}/attestations/{subject_digest}"], + listAttestationsBulk: [ + "POST /users/{username}/attestations/bulk-list{?per_page,before,after}" + ], + listBlockedByAuthenticated: [ + "GET /user/blocks", + {}, + { renamed: ["users", "listBlockedByAuthenticatedUser"] } + ], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: [ + "GET /user/emails", + {}, + { renamed: ["users", "listEmailsForAuthenticatedUser"] } + ], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: [ + "GET /user/following", + {}, + { renamed: ["users", "listFollowedByAuthenticatedUser"] } ], - updateOrgPatternConfigs: [ - "PATCH /orgs/{org}/secret-scanning/pattern-configurations" - ] - }, - securityAdvisories: { - createFork: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks" + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: [ + "GET /user/gpg_keys", + {}, + { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } ], - createPrivateVulnerabilityReport: [ - "POST /repos/{owner}/{repo}/security-advisories/reports" + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: [ + "GET /user/public_emails", + {}, + { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } ], - createRepositoryAdvisory: [ - "POST /repos/{owner}/{repo}/security-advisories" + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: [ + "GET /user/keys", + {}, + { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } ], - createRepositoryAdvisoryCveRequest: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: [ + "PATCH /user/email/visibility", + {}, + { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } ], - getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], - getRepositoryAdvisory: [ - "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + setPrimaryEmailVisibilityForAuthenticatedUser: [ + "PATCH /user/email/visibility" ], - listGlobalAdvisories: ["GET /advisories"], - listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], - listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], - updateRepositoryAdvisory: [ - "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; +var endpoints_default = Endpoints; + +// +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint2] of Object.entries(endpoints)) { + const [route, defaults2, decorations] = endpoint2; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults2 + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); + } +} +var handler = { + has({ scope }, methodName) { + return endpointMethodsMap.get(scope).has(methodName); + }, + getOwnPropertyDescriptor(target, methodName) { + return { + value: this.get(target, methodName), + // ensures method is in the cache + configurable: true, + writable: true, + enumerable: true + }; + }, + defineProperty(target, methodName, descriptor) { + Object.defineProperty(target.cache, methodName, descriptor); + return true; + }, + deleteProperty(target, methodName) { + delete target.cache[methodName]; + return true; + }, + ownKeys({ scope }) { + return [...endpointMethodsMap.get(scope).keys()]; + }, + set(target, methodName, value) { + return target.cache[methodName] = value; + }, + get({ octokit, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; + } + const method = endpointMethodsMap.get(scope).get(methodName); + if (!method) { + return void 0; + } + const { endpointDefaults, decorations } = method; + if (decorations) { + cache[methodName] = decorate( + octokit, + scope, + methodName, + endpointDefaults, + decorations + ); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); + } + return cache[methodName]; + } +}; +function endpointsToMethods(octokit) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults2, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults2); + function withDecorations(...args) { + let options = requestWithDefaults.endpoint.merge(...args); + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: void 0 + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn( + `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` + ); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries( + decorations.renamedParameters + )) { + if (name in options2) { + octokit.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} + +// +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION5; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION5; + +// +var VERSION6 = "0.0.0-development"; +function normalizePaginatedListResponse(response) { + if (!response.data) { + return { + ...response, + data: [] + }; + } + const responseNeedsNormalization = ("total_count" in response.data || "total_commits" in response.data) && !("url" in response.data); + if (!responseNeedsNormalization) + return response; + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + const totalCommits = response.data.total_commits; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + delete response.data.total_commits; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + response.data.total_count = totalCount; + response.data.total_commits = totalCommits; + return response; +} +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match( + /<([^<>]+)>;\s*rel="next"/ + ) || [])[1]; + if (!url && "total_commits" in normalizedResponse.data) { + const parsedUrl = new URL(normalizedResponse.url); + const params = parsedUrl.searchParams; + const page = parseInt(params.get("page") || "1", 10); + const per_page = parseInt(params.get("per_page") || "250", 10); + if (page * per_page < normalizedResponse.data.total_commits) { + params.set("page", String(page + 1)); + url = parsedUrl.toString(); + } + } + return { value: normalizedResponse }; + } catch (error2) { + if (error2.status !== 409) + throw error2; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + }) + }; +} +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = void 0; + } + return gather( + octokit, + [], + iterator(octokit, route, parameters)[Symbol.asyncIterator](), + mapFn + ); +} +function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat( + mapFn ? mapFn(result.value, done) : result.value.data + ); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator2, mapFn); + }); +} +var composePaginateRest = Object.assign(paginate, { + iterator +}); +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION6; + +// +var context = new Context(); +var baseUrl = getApiBaseUrl(); +var defaults = { + baseUrl, + request: { + agent: getProxyAgent(baseUrl), + fetch: getProxyFetch(baseUrl) + } +}; +var GitHub = Octokit.plugin(restEndpointMethods, paginateRest).defaults(defaults); + +// +var context2 = new Context(); + +// +var import_p_retry = __toESM(require_p_retry(), 1); +var import_google_auth_library = __toESM(require_src6(), 1); +import { createWriteStream } from "fs"; +import * as fs4 from "fs/promises"; +import { writeFile as writeFile2 } from "fs/promises"; +import { Readable } from "node:stream"; +import { finished } from "node:stream/promises"; + +// +var import_stream = __toESM(require_stream(), 1); +var import_receiver = __toESM(require_receiver2(), 1); +var import_sender = __toESM(require_sender2(), 1); +var import_websocket = __toESM(require_websocket2(), 1); +var import_websocket_server = __toESM(require_websocket_server(), 1); + +// +import * as path$1 from "path"; +var _defaultBaseGeminiUrl = void 0; +var _defaultBaseVertexUrl = void 0; +function getDefaultBaseUrls() { + return { + geminiUrl: _defaultBaseGeminiUrl, + vertexUrl: _defaultBaseVertexUrl + }; +} +function getBaseUrl(httpOptions, vertexai, vertexBaseUrlFromEnv, geminiBaseUrlFromEnv) { + var _a3, _b; + if (!(httpOptions === null || httpOptions === void 0 ? void 0 : httpOptions.baseUrl)) { + const defaultBaseUrls = getDefaultBaseUrls(); + if (vertexai) { + return (_a3 = defaultBaseUrls.vertexUrl) !== null && _a3 !== void 0 ? _a3 : vertexBaseUrlFromEnv; + } else { + return (_b = defaultBaseUrls.geminiUrl) !== null && _b !== void 0 ? _b : geminiBaseUrlFromEnv; + } + } + return httpOptions.baseUrl; +} +var BaseModule = class { +}; +function formatMap(templateString, valueMap) { + const regex = /\{([^}]+)\}/g; + return templateString.replace(regex, (match, key) => { + if (Object.prototype.hasOwnProperty.call(valueMap, key)) { + const value = valueMap[key]; + return value !== void 0 && value !== null ? String(value) : ""; + } else { + throw new Error(`Key '${key}' not found in valueMap.`); + } + }); +} +function setValueByPath(data, keys, value) { + for (let i2 = 0; i2 < keys.length - 1; i2++) { + const key = keys[i2]; + if (key.endsWith("[]")) { + const keyName = key.slice(0, -2); + if (!(keyName in data)) { + if (Array.isArray(value)) { + data[keyName] = Array.from({ length: value.length }, () => ({})); + } else { + throw new Error(`Value must be a list given an array path ${key}`); + } + } + if (Array.isArray(data[keyName])) { + const arrayData = data[keyName]; + if (Array.isArray(value)) { + for (let j = 0; j < arrayData.length; j++) { + const entry = arrayData[j]; + setValueByPath(entry, keys.slice(i2 + 1), value[j]); + } + } else { + for (const d of arrayData) { + setValueByPath(d, keys.slice(i2 + 1), value); + } + } + } + return; + } else if (key.endsWith("[0]")) { + const keyName = key.slice(0, -3); + if (!(keyName in data)) { + data[keyName] = [{}]; + } + const arrayData = data[keyName]; + setValueByPath(arrayData[0], keys.slice(i2 + 1), value); + return; + } + if (!data[key] || typeof data[key] !== "object") { + data[key] = {}; + } + data = data[key]; + } + const keyToSet = keys[keys.length - 1]; + const existingData = data[keyToSet]; + if (existingData !== void 0) { + if (!value || typeof value === "object" && Object.keys(value).length === 0) { + return; + } + if (value === existingData) { + return; + } + if (typeof existingData === "object" && typeof value === "object" && existingData !== null && value !== null) { + Object.assign(existingData, value); + } else { + throw new Error(`Cannot set value for an existing key. Key: ${keyToSet}`); + } + } else { + if (keyToSet === "_self" && typeof value === "object" && value !== null && !Array.isArray(value)) { + const valueAsRecord = value; + Object.assign(data, valueAsRecord); + } else { + data[keyToSet] = value; + } + } +} +function getValueByPath(data, keys, defaultValue = void 0) { + try { + if (keys.length === 1 && keys[0] === "_self") { + return data; + } + for (let i2 = 0; i2 < keys.length; i2++) { + if (typeof data !== "object" || data === null) { + return defaultValue; + } + const key = keys[i2]; + if (key.endsWith("[]")) { + const keyName = key.slice(0, -2); + if (keyName in data) { + const arrayData = data[keyName]; + if (!Array.isArray(arrayData)) { + return defaultValue; + } + return arrayData.map((d) => getValueByPath(d, keys.slice(i2 + 1), defaultValue)); + } else { + return defaultValue; + } + } else { + data = data[key]; + } + } + return data; + } catch (error2) { + if (error2 instanceof TypeError) { + return defaultValue; + } + throw error2; + } +} +function moveValueByPath(data, paths) { + for (const [sourcePath, destPath] of Object.entries(paths)) { + const sourceKeys = sourcePath.split("."); + const destKeys = destPath.split("."); + const excludeKeys = /* @__PURE__ */ new Set(); + let wildcardIdx = -1; + for (let i2 = 0; i2 < sourceKeys.length; i2++) { + if (sourceKeys[i2] === "*") { + wildcardIdx = i2; + break; + } + } + if (wildcardIdx !== -1 && destKeys.length > wildcardIdx) { + for (let i2 = wildcardIdx; i2 < destKeys.length; i2++) { + const key = destKeys[i2]; + if (key !== "*" && !key.endsWith("[]") && !key.endsWith("[0]")) { + excludeKeys.add(key); + } + } + } + _moveValueRecursive(data, sourceKeys, destKeys, 0, excludeKeys); + } +} +function _moveValueRecursive(data, sourceKeys, destKeys, keyIdx, excludeKeys) { + if (keyIdx >= sourceKeys.length) { + return; + } + if (typeof data !== "object" || data === null) { + return; + } + const key = sourceKeys[keyIdx]; + if (key.endsWith("[]")) { + const keyName = key.slice(0, -2); + const dataRecord = data; + if (keyName in dataRecord && Array.isArray(dataRecord[keyName])) { + for (const item of dataRecord[keyName]) { + _moveValueRecursive(item, sourceKeys, destKeys, keyIdx + 1, excludeKeys); + } + } + } else if (key === "*") { + if (typeof data === "object" && data !== null && !Array.isArray(data)) { + const dataRecord = data; + const keysToMove = Object.keys(dataRecord).filter((k) => !k.startsWith("_") && !excludeKeys.has(k)); + const valuesToMove = {}; + for (const k of keysToMove) { + valuesToMove[k] = dataRecord[k]; + } + for (const [k, v] of Object.entries(valuesToMove)) { + const newDestKeys = []; + for (const dk of destKeys.slice(keyIdx)) { + if (dk === "*") { + newDestKeys.push(k); + } else { + newDestKeys.push(dk); + } + } + setValueByPath(dataRecord, newDestKeys, v); + } + for (const k of keysToMove) { + delete dataRecord[k]; + } + } + } else { + const dataRecord = data; + if (key in dataRecord) { + _moveValueRecursive(dataRecord[key], sourceKeys, destKeys, keyIdx + 1, excludeKeys); + } + } +} +function tBytes$1(fromBytes) { + if (typeof fromBytes !== "string") { + throw new Error("fromImageBytes must be a string"); + } + return fromBytes; +} +function fetchPredictOperationParametersToVertex(fromObject) { + const toObject = {}; + const fromOperationName = getValueByPath(fromObject, [ + "operationName" + ]); + if (fromOperationName != null) { + setValueByPath(toObject, ["operationName"], fromOperationName); + } + const fromResourceName = getValueByPath(fromObject, ["resourceName"]); + if (fromResourceName != null) { + setValueByPath(toObject, ["_url", "resourceName"], fromResourceName); + } + return toObject; +} +function generateVideosOperationFromMldev$1(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromResponse = getValueByPath(fromObject, [ + "response", + "generateVideoResponse" + ]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], generateVideosResponseFromMldev$1(fromResponse)); + } + return toObject; +} +function generateVideosOperationFromVertex$1(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], generateVideosResponseFromVertex$1(fromResponse)); + } + return toObject; +} +function generateVideosResponseFromMldev$1(fromObject) { + const toObject = {}; + const fromGeneratedVideos = getValueByPath(fromObject, [ + "generatedSamples" + ]); + if (fromGeneratedVideos != null) { + let transformedList = fromGeneratedVideos; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedVideoFromMldev$1(item); + }); + } + setValueByPath(toObject, ["generatedVideos"], transformedList); + } + const fromRaiMediaFilteredCount = getValueByPath(fromObject, [ + "raiMediaFilteredCount" + ]); + if (fromRaiMediaFilteredCount != null) { + setValueByPath(toObject, ["raiMediaFilteredCount"], fromRaiMediaFilteredCount); + } + const fromRaiMediaFilteredReasons = getValueByPath(fromObject, [ + "raiMediaFilteredReasons" + ]); + if (fromRaiMediaFilteredReasons != null) { + setValueByPath(toObject, ["raiMediaFilteredReasons"], fromRaiMediaFilteredReasons); + } + return toObject; +} +function generateVideosResponseFromVertex$1(fromObject) { + const toObject = {}; + const fromGeneratedVideos = getValueByPath(fromObject, ["videos"]); + if (fromGeneratedVideos != null) { + let transformedList = fromGeneratedVideos; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedVideoFromVertex$1(item); + }); + } + setValueByPath(toObject, ["generatedVideos"], transformedList); + } + const fromRaiMediaFilteredCount = getValueByPath(fromObject, [ + "raiMediaFilteredCount" + ]); + if (fromRaiMediaFilteredCount != null) { + setValueByPath(toObject, ["raiMediaFilteredCount"], fromRaiMediaFilteredCount); + } + const fromRaiMediaFilteredReasons = getValueByPath(fromObject, [ + "raiMediaFilteredReasons" + ]); + if (fromRaiMediaFilteredReasons != null) { + setValueByPath(toObject, ["raiMediaFilteredReasons"], fromRaiMediaFilteredReasons); + } + return toObject; +} +function generatedVideoFromMldev$1(fromObject) { + const toObject = {}; + const fromVideo = getValueByPath(fromObject, ["video"]); + if (fromVideo != null) { + setValueByPath(toObject, ["video"], videoFromMldev$1(fromVideo)); + } + return toObject; +} +function generatedVideoFromVertex$1(fromObject) { + const toObject = {}; + const fromVideo = getValueByPath(fromObject, ["_self"]); + if (fromVideo != null) { + setValueByPath(toObject, ["video"], videoFromVertex$1(fromVideo)); + } + return toObject; +} +function getOperationParametersToMldev(fromObject) { + const toObject = {}; + const fromOperationName = getValueByPath(fromObject, [ + "operationName" + ]); + if (fromOperationName != null) { + setValueByPath(toObject, ["_url", "operationName"], fromOperationName); + } + return toObject; +} +function getOperationParametersToVertex(fromObject) { + const toObject = {}; + const fromOperationName = getValueByPath(fromObject, [ + "operationName" + ]); + if (fromOperationName != null) { + setValueByPath(toObject, ["_url", "operationName"], fromOperationName); + } + return toObject; +} +function importFileOperationFromMldev$1(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], importFileResponseFromMldev$1(fromResponse)); + } + return toObject; +} +function importFileResponseFromMldev$1(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromParent = getValueByPath(fromObject, ["parent"]); + if (fromParent != null) { + setValueByPath(toObject, ["parent"], fromParent); + } + const fromDocumentName = getValueByPath(fromObject, ["documentName"]); + if (fromDocumentName != null) { + setValueByPath(toObject, ["documentName"], fromDocumentName); + } + return toObject; +} +function uploadToFileSearchStoreOperationFromMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], uploadToFileSearchStoreResponseFromMldev(fromResponse)); + } + return toObject; +} +function uploadToFileSearchStoreResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromParent = getValueByPath(fromObject, ["parent"]); + if (fromParent != null) { + setValueByPath(toObject, ["parent"], fromParent); + } + const fromDocumentName = getValueByPath(fromObject, ["documentName"]); + if (fromDocumentName != null) { + setValueByPath(toObject, ["documentName"], fromDocumentName); + } + return toObject; +} +function videoFromMldev$1(fromObject) { + const toObject = {}; + const fromUri = getValueByPath(fromObject, ["uri"]); + if (fromUri != null) { + setValueByPath(toObject, ["uri"], fromUri); + } + const fromVideoBytes = getValueByPath(fromObject, ["encodedVideo"]); + if (fromVideoBytes != null) { + setValueByPath(toObject, ["videoBytes"], tBytes$1(fromVideoBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["encoding"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function videoFromVertex$1(fromObject) { + const toObject = {}; + const fromUri = getValueByPath(fromObject, ["gcsUri"]); + if (fromUri != null) { + setValueByPath(toObject, ["uri"], fromUri); + } + const fromVideoBytes = getValueByPath(fromObject, [ + "bytesBase64Encoded" + ]); + if (fromVideoBytes != null) { + setValueByPath(toObject, ["videoBytes"], tBytes$1(fromVideoBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +var Outcome; +(function(Outcome2) { + Outcome2["OUTCOME_UNSPECIFIED"] = "OUTCOME_UNSPECIFIED"; + Outcome2["OUTCOME_OK"] = "OUTCOME_OK"; + Outcome2["OUTCOME_FAILED"] = "OUTCOME_FAILED"; + Outcome2["OUTCOME_DEADLINE_EXCEEDED"] = "OUTCOME_DEADLINE_EXCEEDED"; +})(Outcome || (Outcome = {})); +var Language; +(function(Language2) { + Language2["LANGUAGE_UNSPECIFIED"] = "LANGUAGE_UNSPECIFIED"; + Language2["PYTHON"] = "PYTHON"; +})(Language || (Language = {})); +var FunctionResponseScheduling; +(function(FunctionResponseScheduling2) { + FunctionResponseScheduling2["SCHEDULING_UNSPECIFIED"] = "SCHEDULING_UNSPECIFIED"; + FunctionResponseScheduling2["SILENT"] = "SILENT"; + FunctionResponseScheduling2["WHEN_IDLE"] = "WHEN_IDLE"; + FunctionResponseScheduling2["INTERRUPT"] = "INTERRUPT"; +})(FunctionResponseScheduling || (FunctionResponseScheduling = {})); +var Type; +(function(Type2) { + Type2["TYPE_UNSPECIFIED"] = "TYPE_UNSPECIFIED"; + Type2["STRING"] = "STRING"; + Type2["NUMBER"] = "NUMBER"; + Type2["INTEGER"] = "INTEGER"; + Type2["BOOLEAN"] = "BOOLEAN"; + Type2["ARRAY"] = "ARRAY"; + Type2["OBJECT"] = "OBJECT"; + Type2["NULL"] = "NULL"; +})(Type || (Type = {})); +var PhishBlockThreshold; +(function(PhishBlockThreshold2) { + PhishBlockThreshold2["PHISH_BLOCK_THRESHOLD_UNSPECIFIED"] = "PHISH_BLOCK_THRESHOLD_UNSPECIFIED"; + PhishBlockThreshold2["BLOCK_LOW_AND_ABOVE"] = "BLOCK_LOW_AND_ABOVE"; + PhishBlockThreshold2["BLOCK_MEDIUM_AND_ABOVE"] = "BLOCK_MEDIUM_AND_ABOVE"; + PhishBlockThreshold2["BLOCK_HIGH_AND_ABOVE"] = "BLOCK_HIGH_AND_ABOVE"; + PhishBlockThreshold2["BLOCK_HIGHER_AND_ABOVE"] = "BLOCK_HIGHER_AND_ABOVE"; + PhishBlockThreshold2["BLOCK_VERY_HIGH_AND_ABOVE"] = "BLOCK_VERY_HIGH_AND_ABOVE"; + PhishBlockThreshold2["BLOCK_ONLY_EXTREMELY_HIGH"] = "BLOCK_ONLY_EXTREMELY_HIGH"; +})(PhishBlockThreshold || (PhishBlockThreshold = {})); +var ApiSpec; +(function(ApiSpec2) { + ApiSpec2["API_SPEC_UNSPECIFIED"] = "API_SPEC_UNSPECIFIED"; + ApiSpec2["SIMPLE_SEARCH"] = "SIMPLE_SEARCH"; + ApiSpec2["ELASTIC_SEARCH"] = "ELASTIC_SEARCH"; +})(ApiSpec || (ApiSpec = {})); +var AuthType; +(function(AuthType2) { + AuthType2["AUTH_TYPE_UNSPECIFIED"] = "AUTH_TYPE_UNSPECIFIED"; + AuthType2["NO_AUTH"] = "NO_AUTH"; + AuthType2["API_KEY_AUTH"] = "API_KEY_AUTH"; + AuthType2["HTTP_BASIC_AUTH"] = "HTTP_BASIC_AUTH"; + AuthType2["GOOGLE_SERVICE_ACCOUNT_AUTH"] = "GOOGLE_SERVICE_ACCOUNT_AUTH"; + AuthType2["OAUTH"] = "OAUTH"; + AuthType2["OIDC_AUTH"] = "OIDC_AUTH"; +})(AuthType || (AuthType = {})); +var HttpElementLocation; +(function(HttpElementLocation2) { + HttpElementLocation2["HTTP_IN_UNSPECIFIED"] = "HTTP_IN_UNSPECIFIED"; + HttpElementLocation2["HTTP_IN_QUERY"] = "HTTP_IN_QUERY"; + HttpElementLocation2["HTTP_IN_HEADER"] = "HTTP_IN_HEADER"; + HttpElementLocation2["HTTP_IN_PATH"] = "HTTP_IN_PATH"; + HttpElementLocation2["HTTP_IN_BODY"] = "HTTP_IN_BODY"; + HttpElementLocation2["HTTP_IN_COOKIE"] = "HTTP_IN_COOKIE"; +})(HttpElementLocation || (HttpElementLocation = {})); +var Behavior; +(function(Behavior2) { + Behavior2["UNSPECIFIED"] = "UNSPECIFIED"; + Behavior2["BLOCKING"] = "BLOCKING"; + Behavior2["NON_BLOCKING"] = "NON_BLOCKING"; +})(Behavior || (Behavior = {})); +var DynamicRetrievalConfigMode; +(function(DynamicRetrievalConfigMode2) { + DynamicRetrievalConfigMode2["MODE_UNSPECIFIED"] = "MODE_UNSPECIFIED"; + DynamicRetrievalConfigMode2["MODE_DYNAMIC"] = "MODE_DYNAMIC"; +})(DynamicRetrievalConfigMode || (DynamicRetrievalConfigMode = {})); +var FunctionCallingConfigMode; +(function(FunctionCallingConfigMode2) { + FunctionCallingConfigMode2["MODE_UNSPECIFIED"] = "MODE_UNSPECIFIED"; + FunctionCallingConfigMode2["AUTO"] = "AUTO"; + FunctionCallingConfigMode2["ANY"] = "ANY"; + FunctionCallingConfigMode2["NONE"] = "NONE"; + FunctionCallingConfigMode2["VALIDATED"] = "VALIDATED"; +})(FunctionCallingConfigMode || (FunctionCallingConfigMode = {})); +var ThinkingLevel; +(function(ThinkingLevel2) { + ThinkingLevel2["THINKING_LEVEL_UNSPECIFIED"] = "THINKING_LEVEL_UNSPECIFIED"; + ThinkingLevel2["LOW"] = "LOW"; + ThinkingLevel2["MEDIUM"] = "MEDIUM"; + ThinkingLevel2["HIGH"] = "HIGH"; + ThinkingLevel2["MINIMAL"] = "MINIMAL"; +})(ThinkingLevel || (ThinkingLevel = {})); +var HarmCategory; +(function(HarmCategory2) { + HarmCategory2["HARM_CATEGORY_UNSPECIFIED"] = "HARM_CATEGORY_UNSPECIFIED"; + HarmCategory2["HARM_CATEGORY_HARASSMENT"] = "HARM_CATEGORY_HARASSMENT"; + HarmCategory2["HARM_CATEGORY_HATE_SPEECH"] = "HARM_CATEGORY_HATE_SPEECH"; + HarmCategory2["HARM_CATEGORY_SEXUALLY_EXPLICIT"] = "HARM_CATEGORY_SEXUALLY_EXPLICIT"; + HarmCategory2["HARM_CATEGORY_DANGEROUS_CONTENT"] = "HARM_CATEGORY_DANGEROUS_CONTENT"; + HarmCategory2["HARM_CATEGORY_CIVIC_INTEGRITY"] = "HARM_CATEGORY_CIVIC_INTEGRITY"; + HarmCategory2["HARM_CATEGORY_IMAGE_HATE"] = "HARM_CATEGORY_IMAGE_HATE"; + HarmCategory2["HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT"] = "HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT"; + HarmCategory2["HARM_CATEGORY_IMAGE_HARASSMENT"] = "HARM_CATEGORY_IMAGE_HARASSMENT"; + HarmCategory2["HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT"] = "HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT"; + HarmCategory2["HARM_CATEGORY_JAILBREAK"] = "HARM_CATEGORY_JAILBREAK"; +})(HarmCategory || (HarmCategory = {})); +var HarmBlockMethod; +(function(HarmBlockMethod2) { + HarmBlockMethod2["HARM_BLOCK_METHOD_UNSPECIFIED"] = "HARM_BLOCK_METHOD_UNSPECIFIED"; + HarmBlockMethod2["SEVERITY"] = "SEVERITY"; + HarmBlockMethod2["PROBABILITY"] = "PROBABILITY"; +})(HarmBlockMethod || (HarmBlockMethod = {})); +var HarmBlockThreshold; +(function(HarmBlockThreshold2) { + HarmBlockThreshold2["HARM_BLOCK_THRESHOLD_UNSPECIFIED"] = "HARM_BLOCK_THRESHOLD_UNSPECIFIED"; + HarmBlockThreshold2["BLOCK_LOW_AND_ABOVE"] = "BLOCK_LOW_AND_ABOVE"; + HarmBlockThreshold2["BLOCK_MEDIUM_AND_ABOVE"] = "BLOCK_MEDIUM_AND_ABOVE"; + HarmBlockThreshold2["BLOCK_ONLY_HIGH"] = "BLOCK_ONLY_HIGH"; + HarmBlockThreshold2["BLOCK_NONE"] = "BLOCK_NONE"; + HarmBlockThreshold2["OFF"] = "OFF"; +})(HarmBlockThreshold || (HarmBlockThreshold = {})); +var FinishReason; +(function(FinishReason2) { + FinishReason2["FINISH_REASON_UNSPECIFIED"] = "FINISH_REASON_UNSPECIFIED"; + FinishReason2["STOP"] = "STOP"; + FinishReason2["MAX_TOKENS"] = "MAX_TOKENS"; + FinishReason2["SAFETY"] = "SAFETY"; + FinishReason2["RECITATION"] = "RECITATION"; + FinishReason2["LANGUAGE"] = "LANGUAGE"; + FinishReason2["OTHER"] = "OTHER"; + FinishReason2["BLOCKLIST"] = "BLOCKLIST"; + FinishReason2["PROHIBITED_CONTENT"] = "PROHIBITED_CONTENT"; + FinishReason2["SPII"] = "SPII"; + FinishReason2["MALFORMED_FUNCTION_CALL"] = "MALFORMED_FUNCTION_CALL"; + FinishReason2["IMAGE_SAFETY"] = "IMAGE_SAFETY"; + FinishReason2["UNEXPECTED_TOOL_CALL"] = "UNEXPECTED_TOOL_CALL"; + FinishReason2["IMAGE_PROHIBITED_CONTENT"] = "IMAGE_PROHIBITED_CONTENT"; + FinishReason2["NO_IMAGE"] = "NO_IMAGE"; + FinishReason2["IMAGE_RECITATION"] = "IMAGE_RECITATION"; + FinishReason2["IMAGE_OTHER"] = "IMAGE_OTHER"; +})(FinishReason || (FinishReason = {})); +var HarmProbability; +(function(HarmProbability2) { + HarmProbability2["HARM_PROBABILITY_UNSPECIFIED"] = "HARM_PROBABILITY_UNSPECIFIED"; + HarmProbability2["NEGLIGIBLE"] = "NEGLIGIBLE"; + HarmProbability2["LOW"] = "LOW"; + HarmProbability2["MEDIUM"] = "MEDIUM"; + HarmProbability2["HIGH"] = "HIGH"; +})(HarmProbability || (HarmProbability = {})); +var HarmSeverity; +(function(HarmSeverity2) { + HarmSeverity2["HARM_SEVERITY_UNSPECIFIED"] = "HARM_SEVERITY_UNSPECIFIED"; + HarmSeverity2["HARM_SEVERITY_NEGLIGIBLE"] = "HARM_SEVERITY_NEGLIGIBLE"; + HarmSeverity2["HARM_SEVERITY_LOW"] = "HARM_SEVERITY_LOW"; + HarmSeverity2["HARM_SEVERITY_MEDIUM"] = "HARM_SEVERITY_MEDIUM"; + HarmSeverity2["HARM_SEVERITY_HIGH"] = "HARM_SEVERITY_HIGH"; +})(HarmSeverity || (HarmSeverity = {})); +var UrlRetrievalStatus; +(function(UrlRetrievalStatus2) { + UrlRetrievalStatus2["URL_RETRIEVAL_STATUS_UNSPECIFIED"] = "URL_RETRIEVAL_STATUS_UNSPECIFIED"; + UrlRetrievalStatus2["URL_RETRIEVAL_STATUS_SUCCESS"] = "URL_RETRIEVAL_STATUS_SUCCESS"; + UrlRetrievalStatus2["URL_RETRIEVAL_STATUS_ERROR"] = "URL_RETRIEVAL_STATUS_ERROR"; + UrlRetrievalStatus2["URL_RETRIEVAL_STATUS_PAYWALL"] = "URL_RETRIEVAL_STATUS_PAYWALL"; + UrlRetrievalStatus2["URL_RETRIEVAL_STATUS_UNSAFE"] = "URL_RETRIEVAL_STATUS_UNSAFE"; +})(UrlRetrievalStatus || (UrlRetrievalStatus = {})); +var BlockedReason; +(function(BlockedReason2) { + BlockedReason2["BLOCKED_REASON_UNSPECIFIED"] = "BLOCKED_REASON_UNSPECIFIED"; + BlockedReason2["SAFETY"] = "SAFETY"; + BlockedReason2["OTHER"] = "OTHER"; + BlockedReason2["BLOCKLIST"] = "BLOCKLIST"; + BlockedReason2["PROHIBITED_CONTENT"] = "PROHIBITED_CONTENT"; + BlockedReason2["IMAGE_SAFETY"] = "IMAGE_SAFETY"; + BlockedReason2["MODEL_ARMOR"] = "MODEL_ARMOR"; + BlockedReason2["JAILBREAK"] = "JAILBREAK"; +})(BlockedReason || (BlockedReason = {})); +var TrafficType; +(function(TrafficType2) { + TrafficType2["TRAFFIC_TYPE_UNSPECIFIED"] = "TRAFFIC_TYPE_UNSPECIFIED"; + TrafficType2["ON_DEMAND"] = "ON_DEMAND"; + TrafficType2["PROVISIONED_THROUGHPUT"] = "PROVISIONED_THROUGHPUT"; +})(TrafficType || (TrafficType = {})); +var Modality; +(function(Modality2) { + Modality2["MODALITY_UNSPECIFIED"] = "MODALITY_UNSPECIFIED"; + Modality2["TEXT"] = "TEXT"; + Modality2["IMAGE"] = "IMAGE"; + Modality2["AUDIO"] = "AUDIO"; +})(Modality || (Modality = {})); +var MediaResolution; +(function(MediaResolution2) { + MediaResolution2["MEDIA_RESOLUTION_UNSPECIFIED"] = "MEDIA_RESOLUTION_UNSPECIFIED"; + MediaResolution2["MEDIA_RESOLUTION_LOW"] = "MEDIA_RESOLUTION_LOW"; + MediaResolution2["MEDIA_RESOLUTION_MEDIUM"] = "MEDIA_RESOLUTION_MEDIUM"; + MediaResolution2["MEDIA_RESOLUTION_HIGH"] = "MEDIA_RESOLUTION_HIGH"; +})(MediaResolution || (MediaResolution = {})); +var TuningMode; +(function(TuningMode2) { + TuningMode2["TUNING_MODE_UNSPECIFIED"] = "TUNING_MODE_UNSPECIFIED"; + TuningMode2["TUNING_MODE_FULL"] = "TUNING_MODE_FULL"; + TuningMode2["TUNING_MODE_PEFT_ADAPTER"] = "TUNING_MODE_PEFT_ADAPTER"; +})(TuningMode || (TuningMode = {})); +var AdapterSize; +(function(AdapterSize2) { + AdapterSize2["ADAPTER_SIZE_UNSPECIFIED"] = "ADAPTER_SIZE_UNSPECIFIED"; + AdapterSize2["ADAPTER_SIZE_ONE"] = "ADAPTER_SIZE_ONE"; + AdapterSize2["ADAPTER_SIZE_TWO"] = "ADAPTER_SIZE_TWO"; + AdapterSize2["ADAPTER_SIZE_FOUR"] = "ADAPTER_SIZE_FOUR"; + AdapterSize2["ADAPTER_SIZE_EIGHT"] = "ADAPTER_SIZE_EIGHT"; + AdapterSize2["ADAPTER_SIZE_SIXTEEN"] = "ADAPTER_SIZE_SIXTEEN"; + AdapterSize2["ADAPTER_SIZE_THIRTY_TWO"] = "ADAPTER_SIZE_THIRTY_TWO"; +})(AdapterSize || (AdapterSize = {})); +var JobState; +(function(JobState2) { + JobState2["JOB_STATE_UNSPECIFIED"] = "JOB_STATE_UNSPECIFIED"; + JobState2["JOB_STATE_QUEUED"] = "JOB_STATE_QUEUED"; + JobState2["JOB_STATE_PENDING"] = "JOB_STATE_PENDING"; + JobState2["JOB_STATE_RUNNING"] = "JOB_STATE_RUNNING"; + JobState2["JOB_STATE_SUCCEEDED"] = "JOB_STATE_SUCCEEDED"; + JobState2["JOB_STATE_FAILED"] = "JOB_STATE_FAILED"; + JobState2["JOB_STATE_CANCELLING"] = "JOB_STATE_CANCELLING"; + JobState2["JOB_STATE_CANCELLED"] = "JOB_STATE_CANCELLED"; + JobState2["JOB_STATE_PAUSED"] = "JOB_STATE_PAUSED"; + JobState2["JOB_STATE_EXPIRED"] = "JOB_STATE_EXPIRED"; + JobState2["JOB_STATE_UPDATING"] = "JOB_STATE_UPDATING"; + JobState2["JOB_STATE_PARTIALLY_SUCCEEDED"] = "JOB_STATE_PARTIALLY_SUCCEEDED"; +})(JobState || (JobState = {})); +var TuningTask; +(function(TuningTask2) { + TuningTask2["TUNING_TASK_UNSPECIFIED"] = "TUNING_TASK_UNSPECIFIED"; + TuningTask2["TUNING_TASK_I2V"] = "TUNING_TASK_I2V"; + TuningTask2["TUNING_TASK_T2V"] = "TUNING_TASK_T2V"; + TuningTask2["TUNING_TASK_R2V"] = "TUNING_TASK_R2V"; +})(TuningTask || (TuningTask = {})); +var PartMediaResolutionLevel; +(function(PartMediaResolutionLevel2) { + PartMediaResolutionLevel2["MEDIA_RESOLUTION_UNSPECIFIED"] = "MEDIA_RESOLUTION_UNSPECIFIED"; + PartMediaResolutionLevel2["MEDIA_RESOLUTION_LOW"] = "MEDIA_RESOLUTION_LOW"; + PartMediaResolutionLevel2["MEDIA_RESOLUTION_MEDIUM"] = "MEDIA_RESOLUTION_MEDIUM"; + PartMediaResolutionLevel2["MEDIA_RESOLUTION_HIGH"] = "MEDIA_RESOLUTION_HIGH"; + PartMediaResolutionLevel2["MEDIA_RESOLUTION_ULTRA_HIGH"] = "MEDIA_RESOLUTION_ULTRA_HIGH"; +})(PartMediaResolutionLevel || (PartMediaResolutionLevel = {})); +var ResourceScope; +(function(ResourceScope2) { + ResourceScope2["COLLECTION"] = "COLLECTION"; +})(ResourceScope || (ResourceScope = {})); +var FeatureSelectionPreference; +(function(FeatureSelectionPreference2) { + FeatureSelectionPreference2["FEATURE_SELECTION_PREFERENCE_UNSPECIFIED"] = "FEATURE_SELECTION_PREFERENCE_UNSPECIFIED"; + FeatureSelectionPreference2["PRIORITIZE_QUALITY"] = "PRIORITIZE_QUALITY"; + FeatureSelectionPreference2["BALANCED"] = "BALANCED"; + FeatureSelectionPreference2["PRIORITIZE_COST"] = "PRIORITIZE_COST"; +})(FeatureSelectionPreference || (FeatureSelectionPreference = {})); +var Environment; +(function(Environment2) { + Environment2["ENVIRONMENT_UNSPECIFIED"] = "ENVIRONMENT_UNSPECIFIED"; + Environment2["ENVIRONMENT_BROWSER"] = "ENVIRONMENT_BROWSER"; +})(Environment || (Environment = {})); +var ProminentPeople; +(function(ProminentPeople2) { + ProminentPeople2["PROMINENT_PEOPLE_UNSPECIFIED"] = "PROMINENT_PEOPLE_UNSPECIFIED"; + ProminentPeople2["ALLOW_PROMINENT_PEOPLE"] = "ALLOW_PROMINENT_PEOPLE"; + ProminentPeople2["BLOCK_PROMINENT_PEOPLE"] = "BLOCK_PROMINENT_PEOPLE"; +})(ProminentPeople || (ProminentPeople = {})); +var EmbeddingApiType; +(function(EmbeddingApiType2) { + EmbeddingApiType2["PREDICT"] = "PREDICT"; + EmbeddingApiType2["EMBED_CONTENT"] = "EMBED_CONTENT"; +})(EmbeddingApiType || (EmbeddingApiType = {})); +var SafetyFilterLevel; +(function(SafetyFilterLevel2) { + SafetyFilterLevel2["BLOCK_LOW_AND_ABOVE"] = "BLOCK_LOW_AND_ABOVE"; + SafetyFilterLevel2["BLOCK_MEDIUM_AND_ABOVE"] = "BLOCK_MEDIUM_AND_ABOVE"; + SafetyFilterLevel2["BLOCK_ONLY_HIGH"] = "BLOCK_ONLY_HIGH"; + SafetyFilterLevel2["BLOCK_NONE"] = "BLOCK_NONE"; +})(SafetyFilterLevel || (SafetyFilterLevel = {})); +var PersonGeneration; +(function(PersonGeneration2) { + PersonGeneration2["DONT_ALLOW"] = "DONT_ALLOW"; + PersonGeneration2["ALLOW_ADULT"] = "ALLOW_ADULT"; + PersonGeneration2["ALLOW_ALL"] = "ALLOW_ALL"; +})(PersonGeneration || (PersonGeneration = {})); +var ImagePromptLanguage; +(function(ImagePromptLanguage2) { + ImagePromptLanguage2["auto"] = "auto"; + ImagePromptLanguage2["en"] = "en"; + ImagePromptLanguage2["ja"] = "ja"; + ImagePromptLanguage2["ko"] = "ko"; + ImagePromptLanguage2["hi"] = "hi"; + ImagePromptLanguage2["zh"] = "zh"; + ImagePromptLanguage2["pt"] = "pt"; + ImagePromptLanguage2["es"] = "es"; +})(ImagePromptLanguage || (ImagePromptLanguage = {})); +var MaskReferenceMode; +(function(MaskReferenceMode2) { + MaskReferenceMode2["MASK_MODE_DEFAULT"] = "MASK_MODE_DEFAULT"; + MaskReferenceMode2["MASK_MODE_USER_PROVIDED"] = "MASK_MODE_USER_PROVIDED"; + MaskReferenceMode2["MASK_MODE_BACKGROUND"] = "MASK_MODE_BACKGROUND"; + MaskReferenceMode2["MASK_MODE_FOREGROUND"] = "MASK_MODE_FOREGROUND"; + MaskReferenceMode2["MASK_MODE_SEMANTIC"] = "MASK_MODE_SEMANTIC"; +})(MaskReferenceMode || (MaskReferenceMode = {})); +var ControlReferenceType; +(function(ControlReferenceType2) { + ControlReferenceType2["CONTROL_TYPE_DEFAULT"] = "CONTROL_TYPE_DEFAULT"; + ControlReferenceType2["CONTROL_TYPE_CANNY"] = "CONTROL_TYPE_CANNY"; + ControlReferenceType2["CONTROL_TYPE_SCRIBBLE"] = "CONTROL_TYPE_SCRIBBLE"; + ControlReferenceType2["CONTROL_TYPE_FACE_MESH"] = "CONTROL_TYPE_FACE_MESH"; +})(ControlReferenceType || (ControlReferenceType = {})); +var SubjectReferenceType; +(function(SubjectReferenceType2) { + SubjectReferenceType2["SUBJECT_TYPE_DEFAULT"] = "SUBJECT_TYPE_DEFAULT"; + SubjectReferenceType2["SUBJECT_TYPE_PERSON"] = "SUBJECT_TYPE_PERSON"; + SubjectReferenceType2["SUBJECT_TYPE_ANIMAL"] = "SUBJECT_TYPE_ANIMAL"; + SubjectReferenceType2["SUBJECT_TYPE_PRODUCT"] = "SUBJECT_TYPE_PRODUCT"; +})(SubjectReferenceType || (SubjectReferenceType = {})); +var EditMode; +(function(EditMode2) { + EditMode2["EDIT_MODE_DEFAULT"] = "EDIT_MODE_DEFAULT"; + EditMode2["EDIT_MODE_INPAINT_REMOVAL"] = "EDIT_MODE_INPAINT_REMOVAL"; + EditMode2["EDIT_MODE_INPAINT_INSERTION"] = "EDIT_MODE_INPAINT_INSERTION"; + EditMode2["EDIT_MODE_OUTPAINT"] = "EDIT_MODE_OUTPAINT"; + EditMode2["EDIT_MODE_CONTROLLED_EDITING"] = "EDIT_MODE_CONTROLLED_EDITING"; + EditMode2["EDIT_MODE_STYLE"] = "EDIT_MODE_STYLE"; + EditMode2["EDIT_MODE_BGSWAP"] = "EDIT_MODE_BGSWAP"; + EditMode2["EDIT_MODE_PRODUCT_IMAGE"] = "EDIT_MODE_PRODUCT_IMAGE"; +})(EditMode || (EditMode = {})); +var SegmentMode; +(function(SegmentMode2) { + SegmentMode2["FOREGROUND"] = "FOREGROUND"; + SegmentMode2["BACKGROUND"] = "BACKGROUND"; + SegmentMode2["PROMPT"] = "PROMPT"; + SegmentMode2["SEMANTIC"] = "SEMANTIC"; + SegmentMode2["INTERACTIVE"] = "INTERACTIVE"; +})(SegmentMode || (SegmentMode = {})); +var VideoGenerationReferenceType; +(function(VideoGenerationReferenceType2) { + VideoGenerationReferenceType2["ASSET"] = "ASSET"; + VideoGenerationReferenceType2["STYLE"] = "STYLE"; +})(VideoGenerationReferenceType || (VideoGenerationReferenceType = {})); +var VideoGenerationMaskMode; +(function(VideoGenerationMaskMode2) { + VideoGenerationMaskMode2["INSERT"] = "INSERT"; + VideoGenerationMaskMode2["REMOVE"] = "REMOVE"; + VideoGenerationMaskMode2["REMOVE_STATIC"] = "REMOVE_STATIC"; + VideoGenerationMaskMode2["OUTPAINT"] = "OUTPAINT"; +})(VideoGenerationMaskMode || (VideoGenerationMaskMode = {})); +var VideoCompressionQuality; +(function(VideoCompressionQuality2) { + VideoCompressionQuality2["OPTIMIZED"] = "OPTIMIZED"; + VideoCompressionQuality2["LOSSLESS"] = "LOSSLESS"; +})(VideoCompressionQuality || (VideoCompressionQuality = {})); +var TuningMethod; +(function(TuningMethod2) { + TuningMethod2["SUPERVISED_FINE_TUNING"] = "SUPERVISED_FINE_TUNING"; + TuningMethod2["PREFERENCE_TUNING"] = "PREFERENCE_TUNING"; + TuningMethod2["DISTILLATION"] = "DISTILLATION"; +})(TuningMethod || (TuningMethod = {})); +var DocumentState; +(function(DocumentState2) { + DocumentState2["STATE_UNSPECIFIED"] = "STATE_UNSPECIFIED"; + DocumentState2["STATE_PENDING"] = "STATE_PENDING"; + DocumentState2["STATE_ACTIVE"] = "STATE_ACTIVE"; + DocumentState2["STATE_FAILED"] = "STATE_FAILED"; +})(DocumentState || (DocumentState = {})); +var FileState; +(function(FileState2) { + FileState2["STATE_UNSPECIFIED"] = "STATE_UNSPECIFIED"; + FileState2["PROCESSING"] = "PROCESSING"; + FileState2["ACTIVE"] = "ACTIVE"; + FileState2["FAILED"] = "FAILED"; +})(FileState || (FileState = {})); +var FileSource; +(function(FileSource2) { + FileSource2["SOURCE_UNSPECIFIED"] = "SOURCE_UNSPECIFIED"; + FileSource2["UPLOADED"] = "UPLOADED"; + FileSource2["GENERATED"] = "GENERATED"; + FileSource2["REGISTERED"] = "REGISTERED"; +})(FileSource || (FileSource = {})); +var TurnCompleteReason; +(function(TurnCompleteReason2) { + TurnCompleteReason2["TURN_COMPLETE_REASON_UNSPECIFIED"] = "TURN_COMPLETE_REASON_UNSPECIFIED"; + TurnCompleteReason2["MALFORMED_FUNCTION_CALL"] = "MALFORMED_FUNCTION_CALL"; + TurnCompleteReason2["RESPONSE_REJECTED"] = "RESPONSE_REJECTED"; + TurnCompleteReason2["NEED_MORE_INPUT"] = "NEED_MORE_INPUT"; +})(TurnCompleteReason || (TurnCompleteReason = {})); +var MediaModality; +(function(MediaModality2) { + MediaModality2["MODALITY_UNSPECIFIED"] = "MODALITY_UNSPECIFIED"; + MediaModality2["TEXT"] = "TEXT"; + MediaModality2["IMAGE"] = "IMAGE"; + MediaModality2["VIDEO"] = "VIDEO"; + MediaModality2["AUDIO"] = "AUDIO"; + MediaModality2["DOCUMENT"] = "DOCUMENT"; +})(MediaModality || (MediaModality = {})); +var VadSignalType; +(function(VadSignalType2) { + VadSignalType2["VAD_SIGNAL_TYPE_UNSPECIFIED"] = "VAD_SIGNAL_TYPE_UNSPECIFIED"; + VadSignalType2["VAD_SIGNAL_TYPE_SOS"] = "VAD_SIGNAL_TYPE_SOS"; + VadSignalType2["VAD_SIGNAL_TYPE_EOS"] = "VAD_SIGNAL_TYPE_EOS"; +})(VadSignalType || (VadSignalType = {})); +var VoiceActivityType; +(function(VoiceActivityType2) { + VoiceActivityType2["TYPE_UNSPECIFIED"] = "TYPE_UNSPECIFIED"; + VoiceActivityType2["ACTIVITY_START"] = "ACTIVITY_START"; + VoiceActivityType2["ACTIVITY_END"] = "ACTIVITY_END"; +})(VoiceActivityType || (VoiceActivityType = {})); +var StartSensitivity; +(function(StartSensitivity2) { + StartSensitivity2["START_SENSITIVITY_UNSPECIFIED"] = "START_SENSITIVITY_UNSPECIFIED"; + StartSensitivity2["START_SENSITIVITY_HIGH"] = "START_SENSITIVITY_HIGH"; + StartSensitivity2["START_SENSITIVITY_LOW"] = "START_SENSITIVITY_LOW"; +})(StartSensitivity || (StartSensitivity = {})); +var EndSensitivity; +(function(EndSensitivity2) { + EndSensitivity2["END_SENSITIVITY_UNSPECIFIED"] = "END_SENSITIVITY_UNSPECIFIED"; + EndSensitivity2["END_SENSITIVITY_HIGH"] = "END_SENSITIVITY_HIGH"; + EndSensitivity2["END_SENSITIVITY_LOW"] = "END_SENSITIVITY_LOW"; +})(EndSensitivity || (EndSensitivity = {})); +var ActivityHandling; +(function(ActivityHandling2) { + ActivityHandling2["ACTIVITY_HANDLING_UNSPECIFIED"] = "ACTIVITY_HANDLING_UNSPECIFIED"; + ActivityHandling2["START_OF_ACTIVITY_INTERRUPTS"] = "START_OF_ACTIVITY_INTERRUPTS"; + ActivityHandling2["NO_INTERRUPTION"] = "NO_INTERRUPTION"; +})(ActivityHandling || (ActivityHandling = {})); +var TurnCoverage; +(function(TurnCoverage2) { + TurnCoverage2["TURN_COVERAGE_UNSPECIFIED"] = "TURN_COVERAGE_UNSPECIFIED"; + TurnCoverage2["TURN_INCLUDES_ONLY_ACTIVITY"] = "TURN_INCLUDES_ONLY_ACTIVITY"; + TurnCoverage2["TURN_INCLUDES_ALL_INPUT"] = "TURN_INCLUDES_ALL_INPUT"; +})(TurnCoverage || (TurnCoverage = {})); +var Scale; +(function(Scale2) { + Scale2["SCALE_UNSPECIFIED"] = "SCALE_UNSPECIFIED"; + Scale2["C_MAJOR_A_MINOR"] = "C_MAJOR_A_MINOR"; + Scale2["D_FLAT_MAJOR_B_FLAT_MINOR"] = "D_FLAT_MAJOR_B_FLAT_MINOR"; + Scale2["D_MAJOR_B_MINOR"] = "D_MAJOR_B_MINOR"; + Scale2["E_FLAT_MAJOR_C_MINOR"] = "E_FLAT_MAJOR_C_MINOR"; + Scale2["E_MAJOR_D_FLAT_MINOR"] = "E_MAJOR_D_FLAT_MINOR"; + Scale2["F_MAJOR_D_MINOR"] = "F_MAJOR_D_MINOR"; + Scale2["G_FLAT_MAJOR_E_FLAT_MINOR"] = "G_FLAT_MAJOR_E_FLAT_MINOR"; + Scale2["G_MAJOR_E_MINOR"] = "G_MAJOR_E_MINOR"; + Scale2["A_FLAT_MAJOR_F_MINOR"] = "A_FLAT_MAJOR_F_MINOR"; + Scale2["A_MAJOR_G_FLAT_MINOR"] = "A_MAJOR_G_FLAT_MINOR"; + Scale2["B_FLAT_MAJOR_G_MINOR"] = "B_FLAT_MAJOR_G_MINOR"; + Scale2["B_MAJOR_A_FLAT_MINOR"] = "B_MAJOR_A_FLAT_MINOR"; +})(Scale || (Scale = {})); +var MusicGenerationMode; +(function(MusicGenerationMode2) { + MusicGenerationMode2["MUSIC_GENERATION_MODE_UNSPECIFIED"] = "MUSIC_GENERATION_MODE_UNSPECIFIED"; + MusicGenerationMode2["QUALITY"] = "QUALITY"; + MusicGenerationMode2["DIVERSITY"] = "DIVERSITY"; + MusicGenerationMode2["VOCALIZATION"] = "VOCALIZATION"; +})(MusicGenerationMode || (MusicGenerationMode = {})); +var LiveMusicPlaybackControl; +(function(LiveMusicPlaybackControl2) { + LiveMusicPlaybackControl2["PLAYBACK_CONTROL_UNSPECIFIED"] = "PLAYBACK_CONTROL_UNSPECIFIED"; + LiveMusicPlaybackControl2["PLAY"] = "PLAY"; + LiveMusicPlaybackControl2["PAUSE"] = "PAUSE"; + LiveMusicPlaybackControl2["STOP"] = "STOP"; + LiveMusicPlaybackControl2["RESET_CONTEXT"] = "RESET_CONTEXT"; +})(LiveMusicPlaybackControl || (LiveMusicPlaybackControl = {})); +var HttpResponse = class { + constructor(response) { + const headers = {}; + for (const pair of response.headers.entries()) { + headers[pair[0]] = pair[1]; + } + this.headers = headers; + this.responseInternal = response; + } + json() { + return this.responseInternal.json(); + } +}; +var GenerateContentResponse = class { + /** + * Returns the concatenation of all text parts from the first candidate in the response. + * + * @remarks + * If there are multiple candidates in the response, the text from the first + * one will be returned. + * If there are non-text parts in the response, the concatenation of all text + * parts will be returned, and a warning will be logged. + * If there are thought parts in the response, the concatenation of all text + * parts excluding the thought parts will be returned. + * + * @example + * ```ts + * const response = await ai.models.generateContent({ + * model: 'gemini-2.0-flash', + * contents: + * 'Why is the sky blue?', + * }); + * + * console.debug(response.text); + * ``` + */ + get text() { + var _a3, _b, _c, _d, _e, _f, _g, _h; + if (((_d = (_c = (_b = (_a3 = this.candidates) === null || _a3 === void 0 ? void 0 : _a3[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.parts) === null || _d === void 0 ? void 0 : _d.length) === 0) { + return void 0; + } + if (this.candidates && this.candidates.length > 1) { + console.warn("there are multiple candidates in the response, returning text from the first one."); + } + let text = ""; + let anyTextPartText = false; + const nonTextParts = []; + for (const part of (_h = (_g = (_f = (_e = this.candidates) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g.parts) !== null && _h !== void 0 ? _h : []) { + for (const [fieldName, fieldValue] of Object.entries(part)) { + if (fieldName !== "text" && fieldName !== "thought" && fieldName !== "thoughtSignature" && (fieldValue !== null || fieldValue !== void 0)) { + nonTextParts.push(fieldName); + } + } + if (typeof part.text === "string") { + if (typeof part.thought === "boolean" && part.thought) { + continue; + } + anyTextPartText = true; + text += part.text; + } + } + if (nonTextParts.length > 0) { + console.warn(`there are non-text parts ${nonTextParts} in the response, returning concatenation of all text parts. Please refer to the non text parts for a full response from model.`); + } + return anyTextPartText ? text : void 0; + } + /** + * Returns the concatenation of all inline data parts from the first candidate + * in the response. + * + * @remarks + * If there are multiple candidates in the response, the inline data from the + * first one will be returned. If there are non-inline data parts in the + * response, the concatenation of all inline data parts will be returned, and + * a warning will be logged. + */ + get data() { + var _a3, _b, _c, _d, _e, _f, _g, _h; + if (((_d = (_c = (_b = (_a3 = this.candidates) === null || _a3 === void 0 ? void 0 : _a3[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.parts) === null || _d === void 0 ? void 0 : _d.length) === 0) { + return void 0; + } + if (this.candidates && this.candidates.length > 1) { + console.warn("there are multiple candidates in the response, returning data from the first one."); + } + let data = ""; + const nonDataParts = []; + for (const part of (_h = (_g = (_f = (_e = this.candidates) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g.parts) !== null && _h !== void 0 ? _h : []) { + for (const [fieldName, fieldValue] of Object.entries(part)) { + if (fieldName !== "inlineData" && (fieldValue !== null || fieldValue !== void 0)) { + nonDataParts.push(fieldName); + } + } + if (part.inlineData && typeof part.inlineData.data === "string") { + data += atob(part.inlineData.data); + } + } + if (nonDataParts.length > 0) { + console.warn(`there are non-data parts ${nonDataParts} in the response, returning concatenation of all data parts. Please refer to the non data parts for a full response from model.`); + } + return data.length > 0 ? btoa(data) : void 0; + } + /** + * Returns the function calls from the first candidate in the response. + * + * @remarks + * If there are multiple candidates in the response, the function calls from + * the first one will be returned. + * If there are no function calls in the response, undefined will be returned. + * + * @example + * ```ts + * const controlLightFunctionDeclaration: FunctionDeclaration = { + * name: 'controlLight', + * parameters: { + * type: Type.OBJECT, + * description: 'Set the brightness and color temperature of a room light.', + * properties: { + * brightness: { + * type: Type.NUMBER, + * description: + * 'Light level from 0 to 100. Zero is off and 100 is full brightness.', + * }, + * colorTemperature: { + * type: Type.STRING, + * description: + * 'Color temperature of the light fixture which can be `daylight`, `cool` or `warm`.', + * }, + * }, + * required: ['brightness', 'colorTemperature'], + * }; + * const response = await ai.models.generateContent({ + * model: 'gemini-2.0-flash', + * contents: 'Dim the lights so the room feels cozy and warm.', + * config: { + * tools: [{functionDeclarations: [controlLightFunctionDeclaration]}], + * toolConfig: { + * functionCallingConfig: { + * mode: FunctionCallingConfigMode.ANY, + * allowedFunctionNames: ['controlLight'], + * }, + * }, + * }, + * }); + * console.debug(JSON.stringify(response.functionCalls)); + * ``` + */ + get functionCalls() { + var _a3, _b, _c, _d, _e, _f, _g, _h; + if (((_d = (_c = (_b = (_a3 = this.candidates) === null || _a3 === void 0 ? void 0 : _a3[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.parts) === null || _d === void 0 ? void 0 : _d.length) === 0) { + return void 0; + } + if (this.candidates && this.candidates.length > 1) { + console.warn("there are multiple candidates in the response, returning function calls from the first one."); + } + const functionCalls = (_h = (_g = (_f = (_e = this.candidates) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g.parts) === null || _h === void 0 ? void 0 : _h.filter((part) => part.functionCall).map((part) => part.functionCall).filter((functionCall) => functionCall !== void 0); + if ((functionCalls === null || functionCalls === void 0 ? void 0 : functionCalls.length) === 0) { + return void 0; + } + return functionCalls; + } + /** + * Returns the first executable code from the first candidate in the response. + * + * @remarks + * If there are multiple candidates in the response, the executable code from + * the first one will be returned. + * If there are no executable code in the response, undefined will be + * returned. + * + * @example + * ```ts + * const response = await ai.models.generateContent({ + * model: 'gemini-2.0-flash', + * contents: + * 'What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50.' + * config: { + * tools: [{codeExecution: {}}], + * }, + * }); + * + * console.debug(response.executableCode); + * ``` + */ + get executableCode() { + var _a3, _b, _c, _d, _e, _f, _g, _h, _j; + if (((_d = (_c = (_b = (_a3 = this.candidates) === null || _a3 === void 0 ? void 0 : _a3[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.parts) === null || _d === void 0 ? void 0 : _d.length) === 0) { + return void 0; + } + if (this.candidates && this.candidates.length > 1) { + console.warn("there are multiple candidates in the response, returning executable code from the first one."); + } + const executableCode = (_h = (_g = (_f = (_e = this.candidates) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g.parts) === null || _h === void 0 ? void 0 : _h.filter((part) => part.executableCode).map((part) => part.executableCode).filter((executableCode2) => executableCode2 !== void 0); + if ((executableCode === null || executableCode === void 0 ? void 0 : executableCode.length) === 0) { + return void 0; + } + return (_j = executableCode === null || executableCode === void 0 ? void 0 : executableCode[0]) === null || _j === void 0 ? void 0 : _j.code; + } + /** + * Returns the first code execution result from the first candidate in the response. + * + * @remarks + * If there are multiple candidates in the response, the code execution result from + * the first one will be returned. + * If there are no code execution result in the response, undefined will be returned. + * + * @example + * ```ts + * const response = await ai.models.generateContent({ + * model: 'gemini-2.0-flash', + * contents: + * 'What is the sum of the first 50 prime numbers? Generate and run code for the calculation, and make sure you get all 50.' + * config: { + * tools: [{codeExecution: {}}], + * }, + * }); + * + * console.debug(response.codeExecutionResult); + * ``` + */ + get codeExecutionResult() { + var _a3, _b, _c, _d, _e, _f, _g, _h, _j; + if (((_d = (_c = (_b = (_a3 = this.candidates) === null || _a3 === void 0 ? void 0 : _a3[0]) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.parts) === null || _d === void 0 ? void 0 : _d.length) === 0) { + return void 0; + } + if (this.candidates && this.candidates.length > 1) { + console.warn("there are multiple candidates in the response, returning code execution result from the first one."); + } + const codeExecutionResult = (_h = (_g = (_f = (_e = this.candidates) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g.parts) === null || _h === void 0 ? void 0 : _h.filter((part) => part.codeExecutionResult).map((part) => part.codeExecutionResult).filter((codeExecutionResult2) => codeExecutionResult2 !== void 0); + if ((codeExecutionResult === null || codeExecutionResult === void 0 ? void 0 : codeExecutionResult.length) === 0) { + return void 0; + } + return (_j = codeExecutionResult === null || codeExecutionResult === void 0 ? void 0 : codeExecutionResult[0]) === null || _j === void 0 ? void 0 : _j.output; + } +}; +var EmbedContentResponse = class { +}; +var GenerateImagesResponse = class { +}; +var EditImageResponse = class { +}; +var UpscaleImageResponse = class { +}; +var RecontextImageResponse = class { +}; +var SegmentImageResponse = class { +}; +var ListModelsResponse = class { +}; +var DeleteModelResponse = class { +}; +var CountTokensResponse = class { +}; +var ComputeTokensResponse = class { +}; +var GenerateVideosOperation = class _GenerateVideosOperation { + /** + * Instantiates an Operation of the same type as the one being called with the fields set from the API response. + * @internal + */ + _fromAPIResponse({ apiResponse, _isVertexAI }) { + const operation = new _GenerateVideosOperation(); + let response; + const op = apiResponse; + if (_isVertexAI) { + response = generateVideosOperationFromVertex$1(op); + } else { + response = generateVideosOperationFromMldev$1(op); + } + Object.assign(operation, response); + return operation; + } +}; +var ListTuningJobsResponse = class { +}; +var CancelTuningJobResponse = class { +}; +var DeleteCachedContentResponse = class { +}; +var ListCachedContentsResponse = class { +}; +var ListDocumentsResponse = class { +}; +var ListFileSearchStoresResponse = class { +}; +var UploadToFileSearchStoreResumableResponse = class { +}; +var ImportFileOperation = class _ImportFileOperation { + /** + * Instantiates an Operation of the same type as the one being called with the fields set from the API response. + * @internal + */ + _fromAPIResponse({ apiResponse, _isVertexAI }) { + const operation = new _ImportFileOperation(); + const op = apiResponse; + const response = importFileOperationFromMldev$1(op); + Object.assign(operation, response); + return operation; + } +}; +var ListFilesResponse = class { +}; +var CreateFileResponse = class { +}; +var DeleteFileResponse = class { +}; +var RegisterFilesResponse = class { +}; +var ListBatchJobsResponse = class { +}; +var LiveServerMessage = class { + /** + * Returns the concatenation of all text parts from the server content if present. + * + * @remarks + * If there are non-text parts in the response, the concatenation of all text + * parts will be returned, and a warning will be logged. + */ + get text() { + var _a3, _b, _c; + let text = ""; + let anyTextPartFound = false; + const nonTextParts = []; + for (const part of (_c = (_b = (_a3 = this.serverContent) === null || _a3 === void 0 ? void 0 : _a3.modelTurn) === null || _b === void 0 ? void 0 : _b.parts) !== null && _c !== void 0 ? _c : []) { + for (const [fieldName, fieldValue] of Object.entries(part)) { + if (fieldName !== "text" && fieldName !== "thought" && fieldValue !== null) { + nonTextParts.push(fieldName); + } + } + if (typeof part.text === "string") { + if (typeof part.thought === "boolean" && part.thought) { + continue; + } + anyTextPartFound = true; + text += part.text; + } + } + if (nonTextParts.length > 0) { + console.warn(`there are non-text parts ${nonTextParts} in the response, returning concatenation of all text parts. Please refer to the non text parts for a full response from model.`); + } + return anyTextPartFound ? text : void 0; + } + /** + * Returns the concatenation of all inline data parts from the server content if present. + * + * @remarks + * If there are non-inline data parts in the + * response, the concatenation of all inline data parts will be returned, and + * a warning will be logged. + */ + get data() { + var _a3, _b, _c; + let data = ""; + const nonDataParts = []; + for (const part of (_c = (_b = (_a3 = this.serverContent) === null || _a3 === void 0 ? void 0 : _a3.modelTurn) === null || _b === void 0 ? void 0 : _b.parts) !== null && _c !== void 0 ? _c : []) { + for (const [fieldName, fieldValue] of Object.entries(part)) { + if (fieldName !== "inlineData" && fieldValue !== null) { + nonDataParts.push(fieldName); + } + } + if (part.inlineData && typeof part.inlineData.data === "string") { + data += atob(part.inlineData.data); + } + } + if (nonDataParts.length > 0) { + console.warn(`there are non-data parts ${nonDataParts} in the response, returning concatenation of all data parts. Please refer to the non data parts for a full response from model.`); + } + return data.length > 0 ? btoa(data) : void 0; + } +}; +var LiveMusicServerMessage = class { + /** + * Returns the first audio chunk from the server content, if present. + * + * @remarks + * If there are no audio chunks in the response, undefined will be returned. + */ + get audioChunk() { + if (this.serverContent && this.serverContent.audioChunks && this.serverContent.audioChunks.length > 0) { + return this.serverContent.audioChunks[0]; + } + return void 0; + } +}; +var UploadToFileSearchStoreOperation = class _UploadToFileSearchStoreOperation { + /** + * Instantiates an Operation of the same type as the one being called with the fields set from the API response. + * @internal + */ + _fromAPIResponse({ apiResponse, _isVertexAI }) { + const operation = new _UploadToFileSearchStoreOperation(); + const op = apiResponse; + const response = uploadToFileSearchStoreOperationFromMldev(op); + Object.assign(operation, response); + return operation; + } +}; +function tModel(apiClient, model) { + if (!model || typeof model !== "string") { + throw new Error("model is required and must be a string"); + } + if (model.includes("..") || model.includes("?") || model.includes("&")) { + throw new Error("invalid model parameter"); + } + if (apiClient.isVertexAI()) { + if (model.startsWith("publishers/") || model.startsWith("projects/") || model.startsWith("models/")) { + return model; + } else if (model.indexOf("/") >= 0) { + const parts = model.split("/", 2); + return `publishers/${parts[0]}/models/${parts[1]}`; + } else { + return `publishers/google/models/${model}`; + } + } else { + if (model.startsWith("models/") || model.startsWith("tunedModels/")) { + return model; + } else { + return `models/${model}`; + } + } +} +function tCachesModel(apiClient, model) { + const transformedModel = tModel(apiClient, model); + if (!transformedModel) { + return ""; + } + if (transformedModel.startsWith("publishers/") && apiClient.isVertexAI()) { + return `projects/${apiClient.getProject()}/locations/${apiClient.getLocation()}/${transformedModel}`; + } else if (transformedModel.startsWith("models/") && apiClient.isVertexAI()) { + return `projects/${apiClient.getProject()}/locations/${apiClient.getLocation()}/publishers/google/${transformedModel}`; + } else { + return transformedModel; + } +} +function tBlobs(blobs) { + if (Array.isArray(blobs)) { + return blobs.map((blob) => tBlob(blob)); + } else { + return [tBlob(blobs)]; + } +} +function tBlob(blob) { + if (typeof blob === "object" && blob !== null) { + return blob; + } + throw new Error(`Could not parse input as Blob. Unsupported blob type: ${typeof blob}`); +} +function tImageBlob(blob) { + const transformedBlob = tBlob(blob); + if (transformedBlob.mimeType && transformedBlob.mimeType.startsWith("image/")) { + return transformedBlob; + } + throw new Error(`Unsupported mime type: ${transformedBlob.mimeType}`); +} +function tAudioBlob(blob) { + const transformedBlob = tBlob(blob); + if (transformedBlob.mimeType && transformedBlob.mimeType.startsWith("audio/")) { + return transformedBlob; + } + throw new Error(`Unsupported mime type: ${transformedBlob.mimeType}`); +} +function tPart(origin) { + if (origin === null || origin === void 0) { + throw new Error("PartUnion is required"); + } + if (typeof origin === "object") { + return origin; + } + if (typeof origin === "string") { + return { text: origin }; + } + throw new Error(`Unsupported part type: ${typeof origin}`); +} +function tParts(origin) { + if (origin === null || origin === void 0 || Array.isArray(origin) && origin.length === 0) { + throw new Error("PartListUnion is required"); + } + if (Array.isArray(origin)) { + return origin.map((item) => tPart(item)); + } + return [tPart(origin)]; +} +function _isContent(origin) { + return origin !== null && origin !== void 0 && typeof origin === "object" && "parts" in origin && Array.isArray(origin.parts); +} +function _isFunctionCallPart(origin) { + return origin !== null && origin !== void 0 && typeof origin === "object" && "functionCall" in origin; +} +function _isFunctionResponsePart(origin) { + return origin !== null && origin !== void 0 && typeof origin === "object" && "functionResponse" in origin; +} +function tContent(origin) { + if (origin === null || origin === void 0) { + throw new Error("ContentUnion is required"); + } + if (_isContent(origin)) { + return origin; + } + return { + role: "user", + parts: tParts(origin) + }; +} +function tContentsForEmbed(apiClient, origin) { + if (!origin) { + return []; + } + if (apiClient.isVertexAI() && Array.isArray(origin)) { + return origin.flatMap((item) => { + const content = tContent(item); + if (content.parts && content.parts.length > 0 && content.parts[0].text !== void 0) { + return [content.parts[0].text]; + } + return []; + }); + } else if (apiClient.isVertexAI()) { + const content = tContent(origin); + if (content.parts && content.parts.length > 0 && content.parts[0].text !== void 0) { + return [content.parts[0].text]; + } + return []; + } + if (Array.isArray(origin)) { + return origin.map((item) => tContent(item)); + } + return [tContent(origin)]; +} +function tContents(origin) { + if (origin === null || origin === void 0 || Array.isArray(origin) && origin.length === 0) { + throw new Error("contents are required"); + } + if (!Array.isArray(origin)) { + if (_isFunctionCallPart(origin) || _isFunctionResponsePart(origin)) { + throw new Error("To specify functionCall or functionResponse parts, please wrap them in a Content object, specifying the role for them"); + } + return [tContent(origin)]; + } + const result = []; + const accumulatedParts = []; + const isContentArray = _isContent(origin[0]); + for (const item of origin) { + const isContent = _isContent(item); + if (isContent != isContentArray) { + throw new Error("Mixing Content and Parts is not supported, please group the parts into a the appropriate Content objects and specify the roles for them"); + } + if (isContent) { + result.push(item); + } else if (_isFunctionCallPart(item) || _isFunctionResponsePart(item)) { + throw new Error("To specify functionCall or functionResponse parts, please wrap them, and any other parts, in Content objects as appropriate, specifying the role for them"); + } else { + accumulatedParts.push(item); + } + } + if (!isContentArray) { + result.push({ role: "user", parts: tParts(accumulatedParts) }); + } + return result; +} +function flattenTypeArrayToAnyOf(typeList, resultingSchema) { + if (typeList.includes("null")) { + resultingSchema["nullable"] = true; + } + const listWithoutNull = typeList.filter((type) => type !== "null"); + if (listWithoutNull.length === 1) { + resultingSchema["type"] = Object.values(Type).includes(listWithoutNull[0].toUpperCase()) ? listWithoutNull[0].toUpperCase() : Type.TYPE_UNSPECIFIED; + } else { + resultingSchema["anyOf"] = []; + for (const i2 of listWithoutNull) { + resultingSchema["anyOf"].push({ + "type": Object.values(Type).includes(i2.toUpperCase()) ? i2.toUpperCase() : Type.TYPE_UNSPECIFIED + }); + } + } +} +function processJsonSchema(_jsonSchema) { + const genAISchema = {}; + const schemaFieldNames = ["items"]; + const listSchemaFieldNames = ["anyOf"]; + const dictSchemaFieldNames = ["properties"]; + if (_jsonSchema["type"] && _jsonSchema["anyOf"]) { + throw new Error("type and anyOf cannot be both populated."); + } + const incomingAnyOf = _jsonSchema["anyOf"]; + if (incomingAnyOf != null && incomingAnyOf.length == 2) { + if (incomingAnyOf[0]["type"] === "null") { + genAISchema["nullable"] = true; + _jsonSchema = incomingAnyOf[1]; + } else if (incomingAnyOf[1]["type"] === "null") { + genAISchema["nullable"] = true; + _jsonSchema = incomingAnyOf[0]; + } + } + if (_jsonSchema["type"] instanceof Array) { + flattenTypeArrayToAnyOf(_jsonSchema["type"], genAISchema); + } + for (const [fieldName, fieldValue] of Object.entries(_jsonSchema)) { + if (fieldValue == null) { + continue; + } + if (fieldName == "type") { + if (fieldValue === "null") { + throw new Error("type: null can not be the only possible type for the field."); + } + if (fieldValue instanceof Array) { + continue; + } + genAISchema["type"] = Object.values(Type).includes(fieldValue.toUpperCase()) ? fieldValue.toUpperCase() : Type.TYPE_UNSPECIFIED; + } else if (schemaFieldNames.includes(fieldName)) { + genAISchema[fieldName] = processJsonSchema(fieldValue); + } else if (listSchemaFieldNames.includes(fieldName)) { + const listSchemaFieldValue = []; + for (const item of fieldValue) { + if (item["type"] == "null") { + genAISchema["nullable"] = true; + continue; + } + listSchemaFieldValue.push(processJsonSchema(item)); + } + genAISchema[fieldName] = listSchemaFieldValue; + } else if (dictSchemaFieldNames.includes(fieldName)) { + const dictSchemaFieldValue = {}; + for (const [key, value] of Object.entries(fieldValue)) { + dictSchemaFieldValue[key] = processJsonSchema(value); + } + genAISchema[fieldName] = dictSchemaFieldValue; + } else { + if (fieldName === "additionalProperties") { + continue; + } + genAISchema[fieldName] = fieldValue; + } + } + return genAISchema; +} +function tSchema(schema) { + return processJsonSchema(schema); +} +function tSpeechConfig(speechConfig) { + if (typeof speechConfig === "object") { + return speechConfig; + } else if (typeof speechConfig === "string") { + return { + voiceConfig: { + prebuiltVoiceConfig: { + voiceName: speechConfig + } + } + }; + } else { + throw new Error(`Unsupported speechConfig type: ${typeof speechConfig}`); + } +} +function tLiveSpeechConfig(speechConfig) { + if ("multiSpeakerVoiceConfig" in speechConfig) { + throw new Error("multiSpeakerVoiceConfig is not supported in the live API."); + } + return speechConfig; +} +function tTool(tool) { + if (tool.functionDeclarations) { + for (const functionDeclaration of tool.functionDeclarations) { + if (functionDeclaration.parameters) { + if (!Object.keys(functionDeclaration.parameters).includes("$schema")) { + functionDeclaration.parameters = processJsonSchema(functionDeclaration.parameters); + } else { + if (!functionDeclaration.parametersJsonSchema) { + functionDeclaration.parametersJsonSchema = functionDeclaration.parameters; + delete functionDeclaration.parameters; + } + } + } + if (functionDeclaration.response) { + if (!Object.keys(functionDeclaration.response).includes("$schema")) { + functionDeclaration.response = processJsonSchema(functionDeclaration.response); + } else { + if (!functionDeclaration.responseJsonSchema) { + functionDeclaration.responseJsonSchema = functionDeclaration.response; + delete functionDeclaration.response; + } + } + } + } + } + return tool; +} +function tTools(tools) { + if (tools === void 0 || tools === null) { + throw new Error("tools is required"); + } + if (!Array.isArray(tools)) { + throw new Error("tools is required and must be an array of Tools"); + } + const result = []; + for (const tool of tools) { + result.push(tool); + } + return result; +} +function resourceName(client, resourceName2, resourcePrefix, splitsAfterPrefix = 1) { + const shouldAppendPrefix = !resourceName2.startsWith(`${resourcePrefix}/`) && resourceName2.split("/").length === splitsAfterPrefix; + if (client.isVertexAI()) { + if (resourceName2.startsWith("projects/")) { + return resourceName2; + } else if (resourceName2.startsWith("locations/")) { + return `projects/${client.getProject()}/${resourceName2}`; + } else if (resourceName2.startsWith(`${resourcePrefix}/`)) { + return `projects/${client.getProject()}/locations/${client.getLocation()}/${resourceName2}`; + } else if (shouldAppendPrefix) { + return `projects/${client.getProject()}/locations/${client.getLocation()}/${resourcePrefix}/${resourceName2}`; + } else { + return resourceName2; + } + } + if (shouldAppendPrefix) { + return `${resourcePrefix}/${resourceName2}`; + } + return resourceName2; +} +function tCachedContentName(apiClient, name) { + if (typeof name !== "string") { + throw new Error("name must be a string"); + } + return resourceName(apiClient, name, "cachedContents"); +} +function tTuningJobStatus(status) { + switch (status) { + case "STATE_UNSPECIFIED": + return "JOB_STATE_UNSPECIFIED"; + case "CREATING": + return "JOB_STATE_RUNNING"; + case "ACTIVE": + return "JOB_STATE_SUCCEEDED"; + case "FAILED": + return "JOB_STATE_FAILED"; + default: + return status; + } +} +function tBytes(fromImageBytes) { + return tBytes$1(fromImageBytes); +} +function _isFile(origin) { + return origin !== null && origin !== void 0 && typeof origin === "object" && "name" in origin; +} +function isGeneratedVideo(origin) { + return origin !== null && origin !== void 0 && typeof origin === "object" && "video" in origin; +} +function isVideo(origin) { + return origin !== null && origin !== void 0 && typeof origin === "object" && "uri" in origin; +} +function tFileName(fromName) { + var _a3; + let name; + if (_isFile(fromName)) { + name = fromName.name; + } + if (isVideo(fromName)) { + name = fromName.uri; + if (name === void 0) { + return void 0; + } + } + if (isGeneratedVideo(fromName)) { + name = (_a3 = fromName.video) === null || _a3 === void 0 ? void 0 : _a3.uri; + if (name === void 0) { + return void 0; + } + } + if (typeof fromName === "string") { + name = fromName; + } + if (name === void 0) { + throw new Error("Could not extract file name from the provided input."); + } + if (name.startsWith("https://")) { + const suffix = name.split("files/")[1]; + const match = suffix.match(/[a-z0-9]+/); + if (match === null) { + throw new Error(`Could not extract file name from URI ${name}`); + } + name = match[0]; + } else if (name.startsWith("files/")) { + name = name.split("files/")[1]; + } + return name; +} +function tModelsUrl(apiClient, baseModels) { + let res; + if (apiClient.isVertexAI()) { + res = baseModels ? "publishers/google/models" : "models"; + } else { + res = baseModels ? "models" : "tunedModels"; + } + return res; +} +function tExtractModels(response) { + for (const key of ["models", "tunedModels", "publisherModels"]) { + if (hasField(response, key)) { + return response[key]; + } + } + return []; +} +function hasField(data, fieldName) { + return data !== null && typeof data === "object" && fieldName in data; +} +function mcpToGeminiTool(mcpTool, config = {}) { + const mcpToolSchema = mcpTool; + const functionDeclaration = { + name: mcpToolSchema["name"], + description: mcpToolSchema["description"], + parametersJsonSchema: mcpToolSchema["inputSchema"] + }; + if (mcpToolSchema["outputSchema"]) { + functionDeclaration["responseJsonSchema"] = mcpToolSchema["outputSchema"]; + } + if (config.behavior) { + functionDeclaration["behavior"] = config.behavior; + } + const geminiTool = { + functionDeclarations: [ + functionDeclaration ] - }, - teams: { - addOrUpdateMembershipForUserInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - addOrUpdateRepoPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - checkPermissionsForRepoInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" - ], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - deleteDiscussionInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - getDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - getMembershipForUserInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" - ], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/invitations" - ], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" - ], - removeRepoInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" - ], - updateDiscussionCommentInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" - ], - updateDiscussionInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" - ], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] - }, - users: { - addEmailForAuthenticated: [ - "POST /user/emails", - {}, - { renamed: ["users", "addEmailForAuthenticatedUser"] } - ], - addEmailForAuthenticatedUser: ["POST /user/emails"], - addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: [ - "POST /user/gpg_keys", - {}, - { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } - ], - createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: [ - "POST /user/keys", - {}, - { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } - ], - createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], - deleteAttestationsBulk: [ - "POST /users/{username}/attestations/delete-request" - ], - deleteAttestationsById: [ - "DELETE /users/{username}/attestations/{attestation_id}" - ], - deleteAttestationsBySubjectDigest: [ - "DELETE /users/{username}/attestations/digest/{subject_digest}" - ], - deleteEmailForAuthenticated: [ - "DELETE /user/emails", - {}, - { renamed: ["users", "deleteEmailForAuthenticatedUser"] } - ], - deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: [ - "DELETE /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } - ], - deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: [ - "DELETE /user/keys/{key_id}", - {}, - { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } - ], - deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], - deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], - deleteSshSigningKeyForAuthenticatedUser: [ - "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" - ], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getById: ["GET /user/{account_id}"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: [ - "GET /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } - ], - getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: [ - "GET /user/keys/{key_id}", - {}, - { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } - ], - getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], - getSshSigningKeyForAuthenticatedUser: [ - "GET /user/ssh_signing_keys/{ssh_signing_key_id}" - ], - list: ["GET /users"], - listAttestations: ["GET /users/{username}/attestations/{subject_digest}"], - listAttestationsBulk: [ - "POST /users/{username}/attestations/bulk-list{?per_page,before,after}" - ], - listBlockedByAuthenticated: [ - "GET /user/blocks", - {}, - { renamed: ["users", "listBlockedByAuthenticatedUser"] } - ], - listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: [ - "GET /user/emails", - {}, - { renamed: ["users", "listEmailsForAuthenticatedUser"] } - ], - listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: [ - "GET /user/following", - {}, - { renamed: ["users", "listFollowedByAuthenticatedUser"] } - ], - listFollowedByAuthenticatedUser: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: [ - "GET /user/gpg_keys", - {}, - { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } - ], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: [ - "GET /user/public_emails", - {}, - { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } - ], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: [ - "GET /user/keys", - {}, - { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } - ], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], - listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: [ - "PATCH /user/email/visibility", - {}, - { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } - ], - setPrimaryEmailVisibilityForAuthenticatedUser: [ - "PATCH /user/email/visibility" - ], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"] + }; + return geminiTool; +} +function mcpToolsToGeminiTool(mcpTools, config = {}) { + const functionDeclarations = []; + const toolNames = /* @__PURE__ */ new Set(); + for (const mcpTool of mcpTools) { + const mcpToolName = mcpTool.name; + if (toolNames.has(mcpToolName)) { + throw new Error(`Duplicate function name ${mcpToolName} found in MCP tools. Please ensure function names are unique.`); + } + toolNames.add(mcpToolName); + const geminiTool = mcpToGeminiTool(mcpTool, config); + if (geminiTool.functionDeclarations) { + functionDeclarations.push(...geminiTool.functionDeclarations); + } + } + return { functionDeclarations }; +} +function tBatchJobSource(client, src) { + let sourceObj; + if (typeof src === "string") { + if (client.isVertexAI()) { + if (src.startsWith("gs://")) { + sourceObj = { format: "jsonl", gcsUri: [src] }; + } else if (src.startsWith("bq://")) { + sourceObj = { format: "bigquery", bigqueryUri: src }; + } else { + throw new Error(`Unsupported string source for Vertex AI: ${src}`); + } + } else { + if (src.startsWith("files/")) { + sourceObj = { fileName: src }; + } else { + throw new Error(`Unsupported string source for Gemini API: ${src}`); + } + } + } else if (Array.isArray(src)) { + if (client.isVertexAI()) { + throw new Error("InlinedRequest[] is not supported in Vertex AI."); + } + sourceObj = { inlinedRequests: src }; + } else { + sourceObj = src; + } + const vertexSourcesCount = [sourceObj.gcsUri, sourceObj.bigqueryUri].filter(Boolean).length; + const mldevSourcesCount = [ + sourceObj.inlinedRequests, + sourceObj.fileName + ].filter(Boolean).length; + if (client.isVertexAI()) { + if (mldevSourcesCount > 0 || vertexSourcesCount !== 1) { + throw new Error("Exactly one of `gcsUri` or `bigqueryUri` must be set for Vertex AI."); + } + } else { + if (vertexSourcesCount > 0 || mldevSourcesCount !== 1) { + throw new Error("Exactly one of `inlinedRequests`, `fileName`, must be set for Gemini API."); + } + } + return sourceObj; +} +function tBatchJobDestination(dest) { + if (typeof dest !== "string") { + return dest; + } + const destString = dest; + if (destString.startsWith("gs://")) { + return { + format: "jsonl", + gcsUri: destString + }; + } else if (destString.startsWith("bq://")) { + return { + format: "bigquery", + bigqueryUri: destString + }; + } else { + throw new Error(`Unsupported destination: ${destString}`); + } +} +function tRecvBatchJobDestination(dest) { + if (typeof dest !== "object" || dest === null) { + return {}; + } + const obj = dest; + const inlineResponsesVal = obj["inlinedResponses"]; + if (typeof inlineResponsesVal !== "object" || inlineResponsesVal === null) { + return dest; + } + const inlineResponsesObj = inlineResponsesVal; + const responsesArray = inlineResponsesObj["inlinedResponses"]; + if (!Array.isArray(responsesArray) || responsesArray.length === 0) { + return dest; + } + let hasEmbedding = false; + for (const responseItem of responsesArray) { + if (typeof responseItem !== "object" || responseItem === null) { + continue; + } + const responseItemObj = responseItem; + const responseVal = responseItemObj["response"]; + if (typeof responseVal !== "object" || responseVal === null) { + continue; + } + const responseObj = responseVal; + if (responseObj["embedding"] !== void 0) { + hasEmbedding = true; + break; + } + } + if (hasEmbedding) { + obj["inlinedEmbedContentResponses"] = obj["inlinedResponses"]; + delete obj["inlinedResponses"]; + } + return dest; +} +function tBatchJobName(apiClient, name) { + const nameString = name; + if (!apiClient.isVertexAI()) { + const mldevPattern = /batches\/[^/]+$/; + if (mldevPattern.test(nameString)) { + return nameString.split("/").pop(); + } else { + throw new Error(`Invalid batch job name: ${nameString}.`); + } + } + const vertexPattern = /^projects\/[^/]+\/locations\/[^/]+\/batchPredictionJobs\/[^/]+$/; + if (vertexPattern.test(nameString)) { + return nameString.split("/").pop(); + } else if (/^\d+$/.test(nameString)) { + return nameString; + } else { + throw new Error(`Invalid batch job name: ${nameString}.`); + } +} +function tJobState(state) { + const stateString = state; + if (stateString === "BATCH_STATE_UNSPECIFIED") { + return "JOB_STATE_UNSPECIFIED"; + } else if (stateString === "BATCH_STATE_PENDING") { + return "JOB_STATE_PENDING"; + } else if (stateString === "BATCH_STATE_RUNNING") { + return "JOB_STATE_RUNNING"; + } else if (stateString === "BATCH_STATE_SUCCEEDED") { + return "JOB_STATE_SUCCEEDED"; + } else if (stateString === "BATCH_STATE_FAILED") { + return "JOB_STATE_FAILED"; + } else if (stateString === "BATCH_STATE_CANCELLED") { + return "JOB_STATE_CANCELLED"; + } else if (stateString === "BATCH_STATE_EXPIRED") { + return "JOB_STATE_EXPIRED"; + } else { + return stateString; + } +} +function tIsVertexEmbedContentModel(model) { + return model.includes("gemini") && model !== "gemini-embedding-001" || model.includes("maas"); +} +function batchJobDestinationFromMldev(fromObject) { + const toObject = {}; + const fromFileName = getValueByPath(fromObject, ["responsesFile"]); + if (fromFileName != null) { + setValueByPath(toObject, ["fileName"], fromFileName); + } + const fromInlinedResponses = getValueByPath(fromObject, [ + "inlinedResponses", + "inlinedResponses" + ]); + if (fromInlinedResponses != null) { + let transformedList = fromInlinedResponses; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return inlinedResponseFromMldev(item); + }); + } + setValueByPath(toObject, ["inlinedResponses"], transformedList); + } + const fromInlinedEmbedContentResponses = getValueByPath(fromObject, [ + "inlinedEmbedContentResponses", + "inlinedResponses" + ]); + if (fromInlinedEmbedContentResponses != null) { + let transformedList = fromInlinedEmbedContentResponses; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["inlinedEmbedContentResponses"], transformedList); + } + return toObject; +} +function batchJobDestinationFromVertex(fromObject) { + const toObject = {}; + const fromFormat = getValueByPath(fromObject, ["predictionsFormat"]); + if (fromFormat != null) { + setValueByPath(toObject, ["format"], fromFormat); + } + const fromGcsUri = getValueByPath(fromObject, [ + "gcsDestination", + "outputUriPrefix" + ]); + if (fromGcsUri != null) { + setValueByPath(toObject, ["gcsUri"], fromGcsUri); + } + const fromBigqueryUri = getValueByPath(fromObject, [ + "bigqueryDestination", + "outputUri" + ]); + if (fromBigqueryUri != null) { + setValueByPath(toObject, ["bigqueryUri"], fromBigqueryUri); + } + return toObject; +} +function batchJobDestinationToVertex(fromObject) { + const toObject = {}; + const fromFormat = getValueByPath(fromObject, ["format"]); + if (fromFormat != null) { + setValueByPath(toObject, ["predictionsFormat"], fromFormat); + } + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (fromGcsUri != null) { + setValueByPath(toObject, ["gcsDestination", "outputUriPrefix"], fromGcsUri); + } + const fromBigqueryUri = getValueByPath(fromObject, ["bigqueryUri"]); + if (fromBigqueryUri != null) { + setValueByPath(toObject, ["bigqueryDestination", "outputUri"], fromBigqueryUri); + } + if (getValueByPath(fromObject, ["fileName"]) !== void 0) { + throw new Error("fileName parameter is not supported in Vertex AI."); + } + if (getValueByPath(fromObject, ["inlinedResponses"]) !== void 0) { + throw new Error("inlinedResponses parameter is not supported in Vertex AI."); + } + if (getValueByPath(fromObject, ["inlinedEmbedContentResponses"]) !== void 0) { + throw new Error("inlinedEmbedContentResponses parameter is not supported in Vertex AI."); + } + return toObject; +} +function batchJobFromMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromDisplayName = getValueByPath(fromObject, [ + "metadata", + "displayName" + ]); + if (fromDisplayName != null) { + setValueByPath(toObject, ["displayName"], fromDisplayName); + } + const fromState = getValueByPath(fromObject, ["metadata", "state"]); + if (fromState != null) { + setValueByPath(toObject, ["state"], tJobState(fromState)); + } + const fromCreateTime = getValueByPath(fromObject, [ + "metadata", + "createTime" + ]); + if (fromCreateTime != null) { + setValueByPath(toObject, ["createTime"], fromCreateTime); + } + const fromEndTime = getValueByPath(fromObject, [ + "metadata", + "endTime" + ]); + if (fromEndTime != null) { + setValueByPath(toObject, ["endTime"], fromEndTime); + } + const fromUpdateTime = getValueByPath(fromObject, [ + "metadata", + "updateTime" + ]); + if (fromUpdateTime != null) { + setValueByPath(toObject, ["updateTime"], fromUpdateTime); + } + const fromModel = getValueByPath(fromObject, ["metadata", "model"]); + if (fromModel != null) { + setValueByPath(toObject, ["model"], fromModel); + } + const fromDest = getValueByPath(fromObject, ["metadata", "output"]); + if (fromDest != null) { + setValueByPath(toObject, ["dest"], batchJobDestinationFromMldev(tRecvBatchJobDestination(fromDest))); + } + return toObject; +} +function batchJobFromVertex(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (fromDisplayName != null) { + setValueByPath(toObject, ["displayName"], fromDisplayName); + } + const fromState = getValueByPath(fromObject, ["state"]); + if (fromState != null) { + setValueByPath(toObject, ["state"], tJobState(fromState)); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromCreateTime = getValueByPath(fromObject, ["createTime"]); + if (fromCreateTime != null) { + setValueByPath(toObject, ["createTime"], fromCreateTime); + } + const fromStartTime = getValueByPath(fromObject, ["startTime"]); + if (fromStartTime != null) { + setValueByPath(toObject, ["startTime"], fromStartTime); + } + const fromEndTime = getValueByPath(fromObject, ["endTime"]); + if (fromEndTime != null) { + setValueByPath(toObject, ["endTime"], fromEndTime); + } + const fromUpdateTime = getValueByPath(fromObject, ["updateTime"]); + if (fromUpdateTime != null) { + setValueByPath(toObject, ["updateTime"], fromUpdateTime); + } + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["model"], fromModel); + } + const fromSrc = getValueByPath(fromObject, ["inputConfig"]); + if (fromSrc != null) { + setValueByPath(toObject, ["src"], batchJobSourceFromVertex(fromSrc)); + } + const fromDest = getValueByPath(fromObject, ["outputConfig"]); + if (fromDest != null) { + setValueByPath(toObject, ["dest"], batchJobDestinationFromVertex(tRecvBatchJobDestination(fromDest))); + } + const fromCompletionStats = getValueByPath(fromObject, [ + "completionStats" + ]); + if (fromCompletionStats != null) { + setValueByPath(toObject, ["completionStats"], fromCompletionStats); + } + return toObject; +} +function batchJobSourceFromVertex(fromObject) { + const toObject = {}; + const fromFormat = getValueByPath(fromObject, ["instancesFormat"]); + if (fromFormat != null) { + setValueByPath(toObject, ["format"], fromFormat); + } + const fromGcsUri = getValueByPath(fromObject, ["gcsSource", "uris"]); + if (fromGcsUri != null) { + setValueByPath(toObject, ["gcsUri"], fromGcsUri); + } + const fromBigqueryUri = getValueByPath(fromObject, [ + "bigquerySource", + "inputUri" + ]); + if (fromBigqueryUri != null) { + setValueByPath(toObject, ["bigqueryUri"], fromBigqueryUri); + } + return toObject; +} +function batchJobSourceToMldev(apiClient, fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["format"]) !== void 0) { + throw new Error("format parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["gcsUri"]) !== void 0) { + throw new Error("gcsUri parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["bigqueryUri"]) !== void 0) { + throw new Error("bigqueryUri parameter is not supported in Gemini API."); + } + const fromFileName = getValueByPath(fromObject, ["fileName"]); + if (fromFileName != null) { + setValueByPath(toObject, ["fileName"], fromFileName); + } + const fromInlinedRequests = getValueByPath(fromObject, [ + "inlinedRequests" + ]); + if (fromInlinedRequests != null) { + let transformedList = fromInlinedRequests; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return inlinedRequestToMldev(apiClient, item); + }); + } + setValueByPath(toObject, ["requests", "requests"], transformedList); + } + return toObject; +} +function batchJobSourceToVertex(fromObject) { + const toObject = {}; + const fromFormat = getValueByPath(fromObject, ["format"]); + if (fromFormat != null) { + setValueByPath(toObject, ["instancesFormat"], fromFormat); + } + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (fromGcsUri != null) { + setValueByPath(toObject, ["gcsSource", "uris"], fromGcsUri); + } + const fromBigqueryUri = getValueByPath(fromObject, ["bigqueryUri"]); + if (fromBigqueryUri != null) { + setValueByPath(toObject, ["bigquerySource", "inputUri"], fromBigqueryUri); + } + if (getValueByPath(fromObject, ["fileName"]) !== void 0) { + throw new Error("fileName parameter is not supported in Vertex AI."); + } + if (getValueByPath(fromObject, ["inlinedRequests"]) !== void 0) { + throw new Error("inlinedRequests parameter is not supported in Vertex AI."); + } + return toObject; +} +function blobToMldev$4(fromObject) { + const toObject = {}; + const fromData = getValueByPath(fromObject, ["data"]); + if (fromData != null) { + setValueByPath(toObject, ["data"], fromData); + } + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function cancelBatchJobParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tBatchJobName(apiClient, fromName)); + } + return toObject; +} +function cancelBatchJobParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tBatchJobName(apiClient, fromName)); + } + return toObject; +} +function candidateFromMldev$1(fromObject) { + const toObject = {}; + const fromContent = getValueByPath(fromObject, ["content"]); + if (fromContent != null) { + setValueByPath(toObject, ["content"], fromContent); + } + const fromCitationMetadata = getValueByPath(fromObject, [ + "citationMetadata" + ]); + if (fromCitationMetadata != null) { + setValueByPath(toObject, ["citationMetadata"], citationMetadataFromMldev$1(fromCitationMetadata)); + } + const fromTokenCount = getValueByPath(fromObject, ["tokenCount"]); + if (fromTokenCount != null) { + setValueByPath(toObject, ["tokenCount"], fromTokenCount); + } + const fromFinishReason = getValueByPath(fromObject, ["finishReason"]); + if (fromFinishReason != null) { + setValueByPath(toObject, ["finishReason"], fromFinishReason); + } + const fromGroundingMetadata = getValueByPath(fromObject, [ + "groundingMetadata" + ]); + if (fromGroundingMetadata != null) { + setValueByPath(toObject, ["groundingMetadata"], fromGroundingMetadata); + } + const fromAvgLogprobs = getValueByPath(fromObject, ["avgLogprobs"]); + if (fromAvgLogprobs != null) { + setValueByPath(toObject, ["avgLogprobs"], fromAvgLogprobs); + } + const fromIndex = getValueByPath(fromObject, ["index"]); + if (fromIndex != null) { + setValueByPath(toObject, ["index"], fromIndex); + } + const fromLogprobsResult = getValueByPath(fromObject, [ + "logprobsResult" + ]); + if (fromLogprobsResult != null) { + setValueByPath(toObject, ["logprobsResult"], fromLogprobsResult); + } + const fromSafetyRatings = getValueByPath(fromObject, [ + "safetyRatings" + ]); + if (fromSafetyRatings != null) { + let transformedList = fromSafetyRatings; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["safetyRatings"], transformedList); + } + const fromUrlContextMetadata = getValueByPath(fromObject, [ + "urlContextMetadata" + ]); + if (fromUrlContextMetadata != null) { + setValueByPath(toObject, ["urlContextMetadata"], fromUrlContextMetadata); + } + return toObject; +} +function citationMetadataFromMldev$1(fromObject) { + const toObject = {}; + const fromCitations = getValueByPath(fromObject, ["citationSources"]); + if (fromCitations != null) { + let transformedList = fromCitations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["citations"], transformedList); + } + return toObject; +} +function contentToMldev$4(fromObject) { + const toObject = {}; + const fromParts = getValueByPath(fromObject, ["parts"]); + if (fromParts != null) { + let transformedList = fromParts; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return partToMldev$4(item); + }); + } + setValueByPath(toObject, ["parts"], transformedList); + } + const fromRole = getValueByPath(fromObject, ["role"]); + if (fromRole != null) { + setValueByPath(toObject, ["role"], fromRole); + } + return toObject; +} +function createBatchJobConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["batch", "displayName"], fromDisplayName); + } + if (getValueByPath(fromObject, ["dest"]) !== void 0) { + throw new Error("dest parameter is not supported in Gemini API."); + } + return toObject; +} +function createBatchJobConfigToVertex(fromObject, parentObject) { + const toObject = {}; + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromDisplayName); + } + const fromDest = getValueByPath(fromObject, ["dest"]); + if (parentObject !== void 0 && fromDest != null) { + setValueByPath(parentObject, ["outputConfig"], batchJobDestinationToVertex(tBatchJobDestination(fromDest))); + } + return toObject; +} +function createBatchJobParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromSrc = getValueByPath(fromObject, ["src"]); + if (fromSrc != null) { + setValueByPath(toObject, ["batch", "inputConfig"], batchJobSourceToMldev(apiClient, tBatchJobSource(apiClient, fromSrc))); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createBatchJobConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function createBatchJobParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["model"], tModel(apiClient, fromModel)); + } + const fromSrc = getValueByPath(fromObject, ["src"]); + if (fromSrc != null) { + setValueByPath(toObject, ["inputConfig"], batchJobSourceToVertex(tBatchJobSource(apiClient, fromSrc))); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createBatchJobConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function createEmbeddingsBatchJobConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["batch", "displayName"], fromDisplayName); + } + return toObject; +} +function createEmbeddingsBatchJobParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromSrc = getValueByPath(fromObject, ["src"]); + if (fromSrc != null) { + setValueByPath(toObject, ["batch", "inputConfig"], embeddingsBatchJobSourceToMldev(apiClient, fromSrc)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createEmbeddingsBatchJobConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function deleteBatchJobParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tBatchJobName(apiClient, fromName)); + } + return toObject; +} +function deleteBatchJobParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tBatchJobName(apiClient, fromName)); + } + return toObject; +} +function deleteResourceJobFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + return toObject; +} +function deleteResourceJobFromVertex(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + return toObject; +} +function embedContentBatchToMldev(apiClient, fromObject) { + const toObject = {}; + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContentsForEmbed(apiClient, fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["requests[]", "request", "content"], transformedList); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["_self"], embedContentConfigToMldev$1(fromConfig, toObject)); + moveValueByPath(toObject, { "requests[].*": "requests[].request.*" }); + } + return toObject; +} +function embedContentConfigToMldev$1(fromObject, parentObject) { + const toObject = {}; + const fromTaskType = getValueByPath(fromObject, ["taskType"]); + if (parentObject !== void 0 && fromTaskType != null) { + setValueByPath(parentObject, ["requests[]", "taskType"], fromTaskType); + } + const fromTitle = getValueByPath(fromObject, ["title"]); + if (parentObject !== void 0 && fromTitle != null) { + setValueByPath(parentObject, ["requests[]", "title"], fromTitle); + } + const fromOutputDimensionality = getValueByPath(fromObject, [ + "outputDimensionality" + ]); + if (parentObject !== void 0 && fromOutputDimensionality != null) { + setValueByPath(parentObject, ["requests[]", "outputDimensionality"], fromOutputDimensionality); + } + if (getValueByPath(fromObject, ["mimeType"]) !== void 0) { + throw new Error("mimeType parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["autoTruncate"]) !== void 0) { + throw new Error("autoTruncate parameter is not supported in Gemini API."); + } + return toObject; +} +function embeddingsBatchJobSourceToMldev(apiClient, fromObject) { + const toObject = {}; + const fromFileName = getValueByPath(fromObject, ["fileName"]); + if (fromFileName != null) { + setValueByPath(toObject, ["file_name"], fromFileName); + } + const fromInlinedRequests = getValueByPath(fromObject, [ + "inlinedRequests" + ]); + if (fromInlinedRequests != null) { + setValueByPath(toObject, ["requests"], embedContentBatchToMldev(apiClient, fromInlinedRequests)); + } + return toObject; +} +function fileDataToMldev$4(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromFileUri = getValueByPath(fromObject, ["fileUri"]); + if (fromFileUri != null) { + setValueByPath(toObject, ["fileUri"], fromFileUri); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function functionCallToMldev$4(fromObject) { + const toObject = {}; + const fromId = getValueByPath(fromObject, ["id"]); + if (fromId != null) { + setValueByPath(toObject, ["id"], fromId); + } + const fromArgs = getValueByPath(fromObject, ["args"]); + if (fromArgs != null) { + setValueByPath(toObject, ["args"], fromArgs); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + if (getValueByPath(fromObject, ["partialArgs"]) !== void 0) { + throw new Error("partialArgs parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["willContinue"]) !== void 0) { + throw new Error("willContinue parameter is not supported in Gemini API."); + } + return toObject; +} +function functionCallingConfigToMldev$2(fromObject) { + const toObject = {}; + const fromAllowedFunctionNames = getValueByPath(fromObject, [ + "allowedFunctionNames" + ]); + if (fromAllowedFunctionNames != null) { + setValueByPath(toObject, ["allowedFunctionNames"], fromAllowedFunctionNames); + } + const fromMode = getValueByPath(fromObject, ["mode"]); + if (fromMode != null) { + setValueByPath(toObject, ["mode"], fromMode); + } + if (getValueByPath(fromObject, ["streamFunctionCallArguments"]) !== void 0) { + throw new Error("streamFunctionCallArguments parameter is not supported in Gemini API."); + } + return toObject; +} +function generateContentConfigToMldev$1(apiClient, fromObject, parentObject) { + const toObject = {}; + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["systemInstruction"], contentToMldev$4(tContent(fromSystemInstruction))); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (fromTemperature != null) { + setValueByPath(toObject, ["temperature"], fromTemperature); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (fromTopP != null) { + setValueByPath(toObject, ["topP"], fromTopP); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (fromTopK != null) { + setValueByPath(toObject, ["topK"], fromTopK); + } + const fromCandidateCount = getValueByPath(fromObject, [ + "candidateCount" + ]); + if (fromCandidateCount != null) { + setValueByPath(toObject, ["candidateCount"], fromCandidateCount); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (fromMaxOutputTokens != null) { + setValueByPath(toObject, ["maxOutputTokens"], fromMaxOutputTokens); + } + const fromStopSequences = getValueByPath(fromObject, [ + "stopSequences" + ]); + if (fromStopSequences != null) { + setValueByPath(toObject, ["stopSequences"], fromStopSequences); + } + const fromResponseLogprobs = getValueByPath(fromObject, [ + "responseLogprobs" + ]); + if (fromResponseLogprobs != null) { + setValueByPath(toObject, ["responseLogprobs"], fromResponseLogprobs); + } + const fromLogprobs = getValueByPath(fromObject, ["logprobs"]); + if (fromLogprobs != null) { + setValueByPath(toObject, ["logprobs"], fromLogprobs); + } + const fromPresencePenalty = getValueByPath(fromObject, [ + "presencePenalty" + ]); + if (fromPresencePenalty != null) { + setValueByPath(toObject, ["presencePenalty"], fromPresencePenalty); + } + const fromFrequencyPenalty = getValueByPath(fromObject, [ + "frequencyPenalty" + ]); + if (fromFrequencyPenalty != null) { + setValueByPath(toObject, ["frequencyPenalty"], fromFrequencyPenalty); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (fromSeed != null) { + setValueByPath(toObject, ["seed"], fromSeed); + } + const fromResponseMimeType = getValueByPath(fromObject, [ + "responseMimeType" + ]); + if (fromResponseMimeType != null) { + setValueByPath(toObject, ["responseMimeType"], fromResponseMimeType); + } + const fromResponseSchema = getValueByPath(fromObject, [ + "responseSchema" + ]); + if (fromResponseSchema != null) { + setValueByPath(toObject, ["responseSchema"], tSchema(fromResponseSchema)); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + if (getValueByPath(fromObject, ["routingConfig"]) !== void 0) { + throw new Error("routingConfig parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["modelSelectionConfig"]) !== void 0) { + throw new Error("modelSelectionConfig parameter is not supported in Gemini API."); + } + const fromSafetySettings = getValueByPath(fromObject, [ + "safetySettings" + ]); + if (parentObject !== void 0 && fromSafetySettings != null) { + let transformedList = fromSafetySettings; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return safetySettingToMldev$1(item); + }); + } + setValueByPath(parentObject, ["safetySettings"], transformedList); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = tTools(fromTools); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToMldev$4(tTool(item)); + }); + } + setValueByPath(parentObject, ["tools"], transformedList); + } + const fromToolConfig = getValueByPath(fromObject, ["toolConfig"]); + if (parentObject !== void 0 && fromToolConfig != null) { + setValueByPath(parentObject, ["toolConfig"], toolConfigToMldev$2(fromToolConfig)); + } + if (getValueByPath(fromObject, ["labels"]) !== void 0) { + throw new Error("labels parameter is not supported in Gemini API."); + } + const fromCachedContent = getValueByPath(fromObject, [ + "cachedContent" + ]); + if (parentObject !== void 0 && fromCachedContent != null) { + setValueByPath(parentObject, ["cachedContent"], tCachedContentName(apiClient, fromCachedContent)); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (fromResponseModalities != null) { + setValueByPath(toObject, ["responseModalities"], fromResponseModalities); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (fromSpeechConfig != null) { + setValueByPath(toObject, ["speechConfig"], tSpeechConfig(fromSpeechConfig)); + } + if (getValueByPath(fromObject, ["audioTimestamp"]) !== void 0) { + throw new Error("audioTimestamp parameter is not supported in Gemini API."); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (fromThinkingConfig != null) { + setValueByPath(toObject, ["thinkingConfig"], fromThinkingConfig); + } + const fromImageConfig = getValueByPath(fromObject, ["imageConfig"]); + if (fromImageConfig != null) { + setValueByPath(toObject, ["imageConfig"], imageConfigToMldev$1(fromImageConfig)); + } + const fromEnableEnhancedCivicAnswers = getValueByPath(fromObject, [ + "enableEnhancedCivicAnswers" + ]); + if (fromEnableEnhancedCivicAnswers != null) { + setValueByPath(toObject, ["enableEnhancedCivicAnswers"], fromEnableEnhancedCivicAnswers); + } + if (getValueByPath(fromObject, ["modelArmorConfig"]) !== void 0) { + throw new Error("modelArmorConfig parameter is not supported in Gemini API."); + } + return toObject; +} +function generateContentResponseFromMldev$1(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromCandidates = getValueByPath(fromObject, ["candidates"]); + if (fromCandidates != null) { + let transformedList = fromCandidates; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return candidateFromMldev$1(item); + }); + } + setValueByPath(toObject, ["candidates"], transformedList); + } + const fromModelVersion = getValueByPath(fromObject, ["modelVersion"]); + if (fromModelVersion != null) { + setValueByPath(toObject, ["modelVersion"], fromModelVersion); + } + const fromPromptFeedback = getValueByPath(fromObject, [ + "promptFeedback" + ]); + if (fromPromptFeedback != null) { + setValueByPath(toObject, ["promptFeedback"], fromPromptFeedback); + } + const fromResponseId = getValueByPath(fromObject, ["responseId"]); + if (fromResponseId != null) { + setValueByPath(toObject, ["responseId"], fromResponseId); + } + const fromUsageMetadata = getValueByPath(fromObject, [ + "usageMetadata" + ]); + if (fromUsageMetadata != null) { + setValueByPath(toObject, ["usageMetadata"], fromUsageMetadata); + } + return toObject; +} +function getBatchJobParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tBatchJobName(apiClient, fromName)); + } + return toObject; +} +function getBatchJobParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tBatchJobName(apiClient, fromName)); + } + return toObject; +} +function googleMapsToMldev$4(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["authConfig"]) !== void 0) { + throw new Error("authConfig parameter is not supported in Gemini API."); + } + const fromEnableWidget = getValueByPath(fromObject, ["enableWidget"]); + if (fromEnableWidget != null) { + setValueByPath(toObject, ["enableWidget"], fromEnableWidget); + } + return toObject; +} +function googleSearchToMldev$4(fromObject) { + const toObject = {}; + const fromSearchTypes = getValueByPath(fromObject, ["searchTypes"]); + if (fromSearchTypes != null) { + setValueByPath(toObject, ["searchTypes"], fromSearchTypes); + } + if (getValueByPath(fromObject, ["excludeDomains"]) !== void 0) { + throw new Error("excludeDomains parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["blockingConfidence"]) !== void 0) { + throw new Error("blockingConfidence parameter is not supported in Gemini API."); + } + const fromTimeRangeFilter = getValueByPath(fromObject, [ + "timeRangeFilter" + ]); + if (fromTimeRangeFilter != null) { + setValueByPath(toObject, ["timeRangeFilter"], fromTimeRangeFilter); + } + return toObject; +} +function imageConfigToMldev$1(fromObject) { + const toObject = {}; + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (fromAspectRatio != null) { + setValueByPath(toObject, ["aspectRatio"], fromAspectRatio); + } + const fromImageSize = getValueByPath(fromObject, ["imageSize"]); + if (fromImageSize != null) { + setValueByPath(toObject, ["imageSize"], fromImageSize); + } + if (getValueByPath(fromObject, ["personGeneration"]) !== void 0) { + throw new Error("personGeneration parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["prominentPeople"]) !== void 0) { + throw new Error("prominentPeople parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["outputMimeType"]) !== void 0) { + throw new Error("outputMimeType parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["outputCompressionQuality"]) !== void 0) { + throw new Error("outputCompressionQuality parameter is not supported in Gemini API."); + } + return toObject; +} +function inlinedRequestToMldev(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["request", "model"], tModel(apiClient, fromModel)); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return contentToMldev$4(item); + }); + } + setValueByPath(toObject, ["request", "contents"], transformedList); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["request", "generationConfig"], generateContentConfigToMldev$1(apiClient, fromConfig, getValueByPath(toObject, ["request"], {}))); + } + return toObject; +} +function inlinedResponseFromMldev(fromObject) { + const toObject = {}; + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], generateContentResponseFromMldev$1(fromResponse)); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + return toObject; +} +function listBatchJobsConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + if (getValueByPath(fromObject, ["filter"]) !== void 0) { + throw new Error("filter parameter is not supported in Gemini API."); + } + return toObject; +} +function listBatchJobsConfigToVertex(fromObject, parentObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + const fromFilter = getValueByPath(fromObject, ["filter"]); + if (parentObject !== void 0 && fromFilter != null) { + setValueByPath(parentObject, ["_query", "filter"], fromFilter); + } + return toObject; +} +function listBatchJobsParametersToMldev(fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listBatchJobsConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function listBatchJobsParametersToVertex(fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listBatchJobsConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function listBatchJobsResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromBatchJobs = getValueByPath(fromObject, ["operations"]); + if (fromBatchJobs != null) { + let transformedList = fromBatchJobs; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return batchJobFromMldev(item); + }); + } + setValueByPath(toObject, ["batchJobs"], transformedList); + } + return toObject; +} +function listBatchJobsResponseFromVertex(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromBatchJobs = getValueByPath(fromObject, [ + "batchPredictionJobs" + ]); + if (fromBatchJobs != null) { + let transformedList = fromBatchJobs; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return batchJobFromVertex(item); + }); + } + setValueByPath(toObject, ["batchJobs"], transformedList); + } + return toObject; +} +function partToMldev$4(fromObject) { + const toObject = {}; + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromCodeExecutionResult = getValueByPath(fromObject, [ + "codeExecutionResult" + ]); + if (fromCodeExecutionResult != null) { + setValueByPath(toObject, ["codeExecutionResult"], fromCodeExecutionResult); + } + const fromExecutableCode = getValueByPath(fromObject, [ + "executableCode" + ]); + if (fromExecutableCode != null) { + setValueByPath(toObject, ["executableCode"], fromExecutableCode); + } + const fromFileData = getValueByPath(fromObject, ["fileData"]); + if (fromFileData != null) { + setValueByPath(toObject, ["fileData"], fileDataToMldev$4(fromFileData)); + } + const fromFunctionCall = getValueByPath(fromObject, ["functionCall"]); + if (fromFunctionCall != null) { + setValueByPath(toObject, ["functionCall"], functionCallToMldev$4(fromFunctionCall)); + } + const fromFunctionResponse = getValueByPath(fromObject, [ + "functionResponse" + ]); + if (fromFunctionResponse != null) { + setValueByPath(toObject, ["functionResponse"], fromFunctionResponse); + } + const fromInlineData = getValueByPath(fromObject, ["inlineData"]); + if (fromInlineData != null) { + setValueByPath(toObject, ["inlineData"], blobToMldev$4(fromInlineData)); + } + const fromText = getValueByPath(fromObject, ["text"]); + if (fromText != null) { + setValueByPath(toObject, ["text"], fromText); + } + const fromThought = getValueByPath(fromObject, ["thought"]); + if (fromThought != null) { + setValueByPath(toObject, ["thought"], fromThought); + } + const fromThoughtSignature = getValueByPath(fromObject, [ + "thoughtSignature" + ]); + if (fromThoughtSignature != null) { + setValueByPath(toObject, ["thoughtSignature"], fromThoughtSignature); + } + const fromVideoMetadata = getValueByPath(fromObject, [ + "videoMetadata" + ]); + if (fromVideoMetadata != null) { + setValueByPath(toObject, ["videoMetadata"], fromVideoMetadata); + } + return toObject; +} +function safetySettingToMldev$1(fromObject) { + const toObject = {}; + const fromCategory = getValueByPath(fromObject, ["category"]); + if (fromCategory != null) { + setValueByPath(toObject, ["category"], fromCategory); + } + if (getValueByPath(fromObject, ["method"]) !== void 0) { + throw new Error("method parameter is not supported in Gemini API."); + } + const fromThreshold = getValueByPath(fromObject, ["threshold"]); + if (fromThreshold != null) { + setValueByPath(toObject, ["threshold"], fromThreshold); + } + return toObject; +} +function toolConfigToMldev$2(fromObject) { + const toObject = {}; + const fromRetrievalConfig = getValueByPath(fromObject, [ + "retrievalConfig" + ]); + if (fromRetrievalConfig != null) { + setValueByPath(toObject, ["retrievalConfig"], fromRetrievalConfig); + } + const fromFunctionCallingConfig = getValueByPath(fromObject, [ + "functionCallingConfig" + ]); + if (fromFunctionCallingConfig != null) { + setValueByPath(toObject, ["functionCallingConfig"], functionCallingConfigToMldev$2(fromFunctionCallingConfig)); + } + return toObject; +} +function toolToMldev$4(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["retrieval"]) !== void 0) { + throw new Error("retrieval parameter is not supported in Gemini API."); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + const fromFileSearch = getValueByPath(fromObject, ["fileSearch"]); + if (fromFileSearch != null) { + setValueByPath(toObject, ["fileSearch"], fromFileSearch); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], googleSearchToMldev$4(fromGoogleSearch)); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + if (getValueByPath(fromObject, ["enterpriseWebSearch"]) !== void 0) { + throw new Error("enterpriseWebSearch parameter is not supported in Gemini API."); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], googleMapsToMldev$4(fromGoogleMaps)); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + const fromMcpServers = getValueByPath(fromObject, ["mcpServers"]); + if (fromMcpServers != null) { + let transformedList = fromMcpServers; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["mcpServers"], transformedList); + } + return toObject; +} +var PagedItem; +(function(PagedItem2) { + PagedItem2["PAGED_ITEM_BATCH_JOBS"] = "batchJobs"; + PagedItem2["PAGED_ITEM_MODELS"] = "models"; + PagedItem2["PAGED_ITEM_TUNING_JOBS"] = "tuningJobs"; + PagedItem2["PAGED_ITEM_FILES"] = "files"; + PagedItem2["PAGED_ITEM_CACHED_CONTENTS"] = "cachedContents"; + PagedItem2["PAGED_ITEM_FILE_SEARCH_STORES"] = "fileSearchStores"; + PagedItem2["PAGED_ITEM_DOCUMENTS"] = "documents"; +})(PagedItem || (PagedItem = {})); +var Pager = class { + constructor(name, request2, response, params) { + this.pageInternal = []; + this.paramsInternal = {}; + this.requestInternal = request2; + this.init(name, response, params); + } + init(name, response, params) { + var _a3, _b; + this.nameInternal = name; + this.pageInternal = response[this.nameInternal] || []; + this.sdkHttpResponseInternal = response === null || response === void 0 ? void 0 : response.sdkHttpResponse; + this.idxInternal = 0; + let requestParams = { config: {} }; + if (!params || Object.keys(params).length === 0) { + requestParams = { config: {} }; + } else if (typeof params === "object") { + requestParams = Object.assign({}, params); + } else { + requestParams = params; + } + if (requestParams["config"]) { + requestParams["config"]["pageToken"] = response["nextPageToken"]; + } + this.paramsInternal = requestParams; + this.pageInternalSize = (_b = (_a3 = requestParams["config"]) === null || _a3 === void 0 ? void 0 : _a3["pageSize"]) !== null && _b !== void 0 ? _b : this.pageInternal.length; + } + initNextPage(response) { + this.init(this.nameInternal, response, this.paramsInternal); + } + /** + * Returns the current page, which is a list of items. + * + * @remarks + * The first page is retrieved when the pager is created. The returned list of + * items could be a subset of the entire list. + */ + get page() { + return this.pageInternal; + } + /** + * Returns the type of paged item (for example, ``batch_jobs``). + */ + get name() { + return this.nameInternal; + } + /** + * Returns the length of the page fetched each time by this pager. + * + * @remarks + * The number of items in the page is less than or equal to the page length. + */ + get pageSize() { + return this.pageInternalSize; + } + /** + * Returns the headers of the API response. + */ + get sdkHttpResponse() { + return this.sdkHttpResponseInternal; + } + /** + * Returns the parameters when making the API request for the next page. + * + * @remarks + * Parameters contain a set of optional configs that can be + * used to customize the API request. For example, the `pageToken` parameter + * contains the token to request the next page. + */ + get params() { + return this.paramsInternal; + } + /** + * Returns the total number of items in the current page. + */ + get pageLength() { + return this.pageInternal.length; + } + /** + * Returns the item at the given index. + */ + getItem(index) { + return this.pageInternal[index]; + } + /** + * Returns an async iterator that support iterating through all items + * retrieved from the API. + * + * @remarks + * The iterator will automatically fetch the next page if there are more items + * to fetch from the API. + * + * @example + * + * ```ts + * const pager = await ai.files.list({config: {pageSize: 10}}); + * for await (const file of pager) { + * console.log(file.name); + * } + * ``` + */ + [Symbol.asyncIterator]() { + return { + next: async () => { + if (this.idxInternal >= this.pageLength) { + if (this.hasNextPage()) { + await this.nextPage(); + } else { + return { value: void 0, done: true }; + } + } + const item = this.getItem(this.idxInternal); + this.idxInternal += 1; + return { value: item, done: false }; + }, + return: async () => { + return { value: void 0, done: true }; + } + }; + } + /** + * Fetches the next page of items. This makes a new API request. + * + * @throws {Error} If there are no more pages to fetch. + * + * @example + * + * ```ts + * const pager = await ai.files.list({config: {pageSize: 10}}); + * let page = pager.page; + * while (true) { + * for (const file of page) { + * console.log(file.name); + * } + * if (!pager.hasNextPage()) { + * break; + * } + * page = await pager.nextPage(); + * } + * ``` + */ + async nextPage() { + if (!this.hasNextPage()) { + throw new Error("No more pages to fetch."); + } + const response = await this.requestInternal(this.params); + this.initNextPage(response); + return this.page; + } + /** + * Returns true if there are more pages to fetch from the API. + */ + hasNextPage() { + var _a3; + if (((_a3 = this.params["config"]) === null || _a3 === void 0 ? void 0 : _a3["pageToken"]) !== void 0) { + return true; + } + return false; + } +}; +var Batches = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + this.list = async (params = {}) => { + return new Pager(PagedItem.PAGED_ITEM_BATCH_JOBS, (x2) => this.listInternal(x2), await this.listInternal(params), params); + }; + this.create = async (params) => { + if (this.apiClient.isVertexAI()) { + params.config = this.formatDestination(params.src, params.config); + } + return this.createInternal(params); + }; + this.createEmbeddings = async (params) => { + console.warn("batches.createEmbeddings() is experimental and may change without notice."); + if (this.apiClient.isVertexAI()) { + throw new Error("Vertex AI does not support batches.createEmbeddings."); + } + return this.createEmbeddingsInternal(params); + }; + } + // Helper function to handle inlined generate content requests + createInlinedGenerateContentRequest(params) { + const body = createBatchJobParametersToMldev( + this.apiClient, + // Use instance apiClient + params + ); + const urlParams = body["_url"]; + const path7 = formatMap("{model}:batchGenerateContent", urlParams); + const batch = body["batch"]; + const inputConfig = batch["inputConfig"]; + const requestsWrapper = inputConfig["requests"]; + const requests = requestsWrapper["requests"]; + const newRequests = []; + for (const request2 of requests) { + const requestDict = Object.assign({}, request2); + if (requestDict["systemInstruction"]) { + const systemInstructionValue = requestDict["systemInstruction"]; + delete requestDict["systemInstruction"]; + const requestContent = requestDict["request"]; + requestContent["systemInstruction"] = systemInstructionValue; + requestDict["request"] = requestContent; + } + newRequests.push(requestDict); + } + requestsWrapper["requests"] = newRequests; + delete body["config"]; + delete body["_url"]; + delete body["_query"]; + return { path: path7, body }; + } + // Helper function to get the first GCS URI + getGcsUri(src) { + if (typeof src === "string") { + return src.startsWith("gs://") ? src : void 0; + } + if (!Array.isArray(src) && src.gcsUri && src.gcsUri.length > 0) { + return src.gcsUri[0]; + } + return void 0; + } + // Helper function to get the BigQuery URI + getBigqueryUri(src) { + if (typeof src === "string") { + return src.startsWith("bq://") ? src : void 0; + } + if (!Array.isArray(src)) { + return src.bigqueryUri; + } + return void 0; + } + // Function to format the destination configuration for Vertex AI + formatDestination(src, config) { + const newConfig = config ? Object.assign({}, config) : {}; + const timestampStr = Date.now().toString(); + if (!newConfig.displayName) { + newConfig.displayName = `genaiBatchJob_${timestampStr}`; + } + if (newConfig.dest === void 0) { + const gcsUri = this.getGcsUri(src); + const bigqueryUri = this.getBigqueryUri(src); + if (gcsUri) { + if (gcsUri.endsWith(".jsonl")) { + newConfig.dest = `${gcsUri.slice(0, -6)}/dest`; + } else { + newConfig.dest = `${gcsUri}_dest_${timestampStr}`; + } + } else if (bigqueryUri) { + newConfig.dest = `${bigqueryUri}_dest_${timestampStr}`; + } else { + throw new Error("Unsupported source for Vertex AI: No GCS or BigQuery URI found."); + } + } + return newConfig; + } + /** + * Internal method to create batch job. + * + * @param params - The parameters for create batch job request. + * @return The created batch job. + * + */ + async createInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = createBatchJobParametersToVertex(this.apiClient, params); + path7 = formatMap("batchPredictionJobs", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = batchJobFromVertex(apiResponse); + return resp; + }); + } else { + const body = createBatchJobParametersToMldev(this.apiClient, params); + path7 = formatMap("{model}:batchGenerateContent", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = batchJobFromMldev(apiResponse); + return resp; + }); + } + } + /** + * Internal method to create batch job. + * + * @param params - The parameters for create batch job request. + * @return The created batch job. + * + */ + async createEmbeddingsInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = createEmbeddingsBatchJobParametersToMldev(this.apiClient, params); + path7 = formatMap("{model}:asyncBatchEmbedContent", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = batchJobFromMldev(apiResponse); + return resp; + }); + } + } + /** + * Gets batch job configurations. + * + * @param params - The parameters for the get request. + * @return The batch job. + * + * @example + * ```ts + * await ai.batches.get({name: '...'}); // The server-generated resource name. + * ``` + */ + async get(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = getBatchJobParametersToVertex(this.apiClient, params); + path7 = formatMap("batchPredictionJobs/{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = batchJobFromVertex(apiResponse); + return resp; + }); + } else { + const body = getBatchJobParametersToMldev(this.apiClient, params); + path7 = formatMap("batches/{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = batchJobFromMldev(apiResponse); + return resp; + }); + } + } + /** + * Cancels a batch job. + * + * @param params - The parameters for the cancel request. + * @return The empty response returned by the API. + * + * @example + * ```ts + * await ai.batches.cancel({name: '...'}); // The server-generated resource name. + * ``` + */ + async cancel(params) { + var _a3, _b, _c, _d; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = cancelBatchJobParametersToVertex(this.apiClient, params); + path7 = formatMap("batchPredictionJobs/{name}:cancel", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + await this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }); + } else { + const body = cancelBatchJobParametersToMldev(this.apiClient, params); + path7 = formatMap("batches/{name}:cancel", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + await this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }); + } + } + async listInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = listBatchJobsParametersToVertex(params); + path7 = formatMap("batchPredictionJobs", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listBatchJobsResponseFromVertex(apiResponse); + const typedResp = new ListBatchJobsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = listBatchJobsParametersToMldev(params); + path7 = formatMap("batches", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listBatchJobsResponseFromMldev(apiResponse); + const typedResp = new ListBatchJobsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Deletes a batch job. + * + * @param params - The parameters for the delete request. + * @return The empty response returned by the API. + * + * @example + * ```ts + * await ai.batches.delete({name: '...'}); // The server-generated resource name. + * ``` + */ + async delete(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = deleteBatchJobParametersToVertex(this.apiClient, params); + path7 = formatMap("batchPredictionJobs/{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = deleteResourceJobFromVertex(apiResponse); + return resp; + }); + } else { + const body = deleteBatchJobParametersToMldev(this.apiClient, params); + path7 = formatMap("batches/{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = deleteResourceJobFromMldev(apiResponse); + return resp; + }); + } + } +}; +function blobToMldev$3(fromObject) { + const toObject = {}; + const fromData = getValueByPath(fromObject, ["data"]); + if (fromData != null) { + setValueByPath(toObject, ["data"], fromData); + } + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function contentToMldev$3(fromObject) { + const toObject = {}; + const fromParts = getValueByPath(fromObject, ["parts"]); + if (fromParts != null) { + let transformedList = fromParts; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return partToMldev$3(item); + }); + } + setValueByPath(toObject, ["parts"], transformedList); + } + const fromRole = getValueByPath(fromObject, ["role"]); + if (fromRole != null) { + setValueByPath(toObject, ["role"], fromRole); + } + return toObject; +} +function createCachedContentConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromTtl = getValueByPath(fromObject, ["ttl"]); + if (parentObject !== void 0 && fromTtl != null) { + setValueByPath(parentObject, ["ttl"], fromTtl); + } + const fromExpireTime = getValueByPath(fromObject, ["expireTime"]); + if (parentObject !== void 0 && fromExpireTime != null) { + setValueByPath(parentObject, ["expireTime"], fromExpireTime); + } + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromDisplayName); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (parentObject !== void 0 && fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return contentToMldev$3(item); + }); + } + setValueByPath(parentObject, ["contents"], transformedList); + } + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["systemInstruction"], contentToMldev$3(tContent(fromSystemInstruction))); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = fromTools; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToMldev$3(item); + }); + } + setValueByPath(parentObject, ["tools"], transformedList); + } + const fromToolConfig = getValueByPath(fromObject, ["toolConfig"]); + if (parentObject !== void 0 && fromToolConfig != null) { + setValueByPath(parentObject, ["toolConfig"], toolConfigToMldev$1(fromToolConfig)); + } + if (getValueByPath(fromObject, ["kmsKeyName"]) !== void 0) { + throw new Error("kmsKeyName parameter is not supported in Gemini API."); + } + return toObject; +} +function createCachedContentConfigToVertex(fromObject, parentObject) { + const toObject = {}; + const fromTtl = getValueByPath(fromObject, ["ttl"]); + if (parentObject !== void 0 && fromTtl != null) { + setValueByPath(parentObject, ["ttl"], fromTtl); + } + const fromExpireTime = getValueByPath(fromObject, ["expireTime"]); + if (parentObject !== void 0 && fromExpireTime != null) { + setValueByPath(parentObject, ["expireTime"], fromExpireTime); + } + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromDisplayName); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (parentObject !== void 0 && fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(parentObject, ["contents"], transformedList); + } + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["systemInstruction"], tContent(fromSystemInstruction)); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = fromTools; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToVertex$2(item); + }); + } + setValueByPath(parentObject, ["tools"], transformedList); + } + const fromToolConfig = getValueByPath(fromObject, ["toolConfig"]); + if (parentObject !== void 0 && fromToolConfig != null) { + setValueByPath(parentObject, ["toolConfig"], fromToolConfig); + } + const fromKmsKeyName = getValueByPath(fromObject, ["kmsKeyName"]); + if (parentObject !== void 0 && fromKmsKeyName != null) { + setValueByPath(parentObject, ["encryption_spec", "kmsKeyName"], fromKmsKeyName); + } + return toObject; +} +function createCachedContentParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["model"], tCachesModel(apiClient, fromModel)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createCachedContentConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function createCachedContentParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["model"], tCachesModel(apiClient, fromModel)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createCachedContentConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function deleteCachedContentParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tCachedContentName(apiClient, fromName)); + } + return toObject; +} +function deleteCachedContentParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tCachedContentName(apiClient, fromName)); + } + return toObject; +} +function deleteCachedContentResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; +} +function deleteCachedContentResponseFromVertex(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; +} +function fileDataToMldev$3(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromFileUri = getValueByPath(fromObject, ["fileUri"]); + if (fromFileUri != null) { + setValueByPath(toObject, ["fileUri"], fromFileUri); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function functionCallToMldev$3(fromObject) { + const toObject = {}; + const fromId = getValueByPath(fromObject, ["id"]); + if (fromId != null) { + setValueByPath(toObject, ["id"], fromId); + } + const fromArgs = getValueByPath(fromObject, ["args"]); + if (fromArgs != null) { + setValueByPath(toObject, ["args"], fromArgs); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + if (getValueByPath(fromObject, ["partialArgs"]) !== void 0) { + throw new Error("partialArgs parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["willContinue"]) !== void 0) { + throw new Error("willContinue parameter is not supported in Gemini API."); + } + return toObject; +} +function functionCallingConfigToMldev$1(fromObject) { + const toObject = {}; + const fromAllowedFunctionNames = getValueByPath(fromObject, [ + "allowedFunctionNames" + ]); + if (fromAllowedFunctionNames != null) { + setValueByPath(toObject, ["allowedFunctionNames"], fromAllowedFunctionNames); + } + const fromMode = getValueByPath(fromObject, ["mode"]); + if (fromMode != null) { + setValueByPath(toObject, ["mode"], fromMode); + } + if (getValueByPath(fromObject, ["streamFunctionCallArguments"]) !== void 0) { + throw new Error("streamFunctionCallArguments parameter is not supported in Gemini API."); + } + return toObject; +} +function functionDeclarationToVertex$2(fromObject) { + const toObject = {}; + const fromDescription = getValueByPath(fromObject, ["description"]); + if (fromDescription != null) { + setValueByPath(toObject, ["description"], fromDescription); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromParameters = getValueByPath(fromObject, ["parameters"]); + if (fromParameters != null) { + setValueByPath(toObject, ["parameters"], fromParameters); + } + const fromParametersJsonSchema = getValueByPath(fromObject, [ + "parametersJsonSchema" + ]); + if (fromParametersJsonSchema != null) { + setValueByPath(toObject, ["parametersJsonSchema"], fromParametersJsonSchema); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], fromResponse); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + if (getValueByPath(fromObject, ["behavior"]) !== void 0) { + throw new Error("behavior parameter is not supported in Vertex AI."); + } + return toObject; +} +function getCachedContentParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tCachedContentName(apiClient, fromName)); + } + return toObject; +} +function getCachedContentParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tCachedContentName(apiClient, fromName)); + } + return toObject; +} +function googleMapsToMldev$3(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["authConfig"]) !== void 0) { + throw new Error("authConfig parameter is not supported in Gemini API."); + } + const fromEnableWidget = getValueByPath(fromObject, ["enableWidget"]); + if (fromEnableWidget != null) { + setValueByPath(toObject, ["enableWidget"], fromEnableWidget); + } + return toObject; +} +function googleSearchToMldev$3(fromObject) { + const toObject = {}; + const fromSearchTypes = getValueByPath(fromObject, ["searchTypes"]); + if (fromSearchTypes != null) { + setValueByPath(toObject, ["searchTypes"], fromSearchTypes); + } + if (getValueByPath(fromObject, ["excludeDomains"]) !== void 0) { + throw new Error("excludeDomains parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["blockingConfidence"]) !== void 0) { + throw new Error("blockingConfidence parameter is not supported in Gemini API."); + } + const fromTimeRangeFilter = getValueByPath(fromObject, [ + "timeRangeFilter" + ]); + if (fromTimeRangeFilter != null) { + setValueByPath(toObject, ["timeRangeFilter"], fromTimeRangeFilter); + } + return toObject; +} +function listCachedContentsConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + return toObject; +} +function listCachedContentsConfigToVertex(fromObject, parentObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + return toObject; +} +function listCachedContentsParametersToMldev(fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listCachedContentsConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function listCachedContentsParametersToVertex(fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listCachedContentsConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function listCachedContentsResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromCachedContents = getValueByPath(fromObject, [ + "cachedContents" + ]); + if (fromCachedContents != null) { + let transformedList = fromCachedContents; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["cachedContents"], transformedList); + } + return toObject; +} +function listCachedContentsResponseFromVertex(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromCachedContents = getValueByPath(fromObject, [ + "cachedContents" + ]); + if (fromCachedContents != null) { + let transformedList = fromCachedContents; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["cachedContents"], transformedList); + } + return toObject; +} +function partToMldev$3(fromObject) { + const toObject = {}; + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromCodeExecutionResult = getValueByPath(fromObject, [ + "codeExecutionResult" + ]); + if (fromCodeExecutionResult != null) { + setValueByPath(toObject, ["codeExecutionResult"], fromCodeExecutionResult); + } + const fromExecutableCode = getValueByPath(fromObject, [ + "executableCode" + ]); + if (fromExecutableCode != null) { + setValueByPath(toObject, ["executableCode"], fromExecutableCode); + } + const fromFileData = getValueByPath(fromObject, ["fileData"]); + if (fromFileData != null) { + setValueByPath(toObject, ["fileData"], fileDataToMldev$3(fromFileData)); + } + const fromFunctionCall = getValueByPath(fromObject, ["functionCall"]); + if (fromFunctionCall != null) { + setValueByPath(toObject, ["functionCall"], functionCallToMldev$3(fromFunctionCall)); + } + const fromFunctionResponse = getValueByPath(fromObject, [ + "functionResponse" + ]); + if (fromFunctionResponse != null) { + setValueByPath(toObject, ["functionResponse"], fromFunctionResponse); + } + const fromInlineData = getValueByPath(fromObject, ["inlineData"]); + if (fromInlineData != null) { + setValueByPath(toObject, ["inlineData"], blobToMldev$3(fromInlineData)); + } + const fromText = getValueByPath(fromObject, ["text"]); + if (fromText != null) { + setValueByPath(toObject, ["text"], fromText); + } + const fromThought = getValueByPath(fromObject, ["thought"]); + if (fromThought != null) { + setValueByPath(toObject, ["thought"], fromThought); + } + const fromThoughtSignature = getValueByPath(fromObject, [ + "thoughtSignature" + ]); + if (fromThoughtSignature != null) { + setValueByPath(toObject, ["thoughtSignature"], fromThoughtSignature); + } + const fromVideoMetadata = getValueByPath(fromObject, [ + "videoMetadata" + ]); + if (fromVideoMetadata != null) { + setValueByPath(toObject, ["videoMetadata"], fromVideoMetadata); + } + return toObject; +} +function toolConfigToMldev$1(fromObject) { + const toObject = {}; + const fromRetrievalConfig = getValueByPath(fromObject, [ + "retrievalConfig" + ]); + if (fromRetrievalConfig != null) { + setValueByPath(toObject, ["retrievalConfig"], fromRetrievalConfig); + } + const fromFunctionCallingConfig = getValueByPath(fromObject, [ + "functionCallingConfig" + ]); + if (fromFunctionCallingConfig != null) { + setValueByPath(toObject, ["functionCallingConfig"], functionCallingConfigToMldev$1(fromFunctionCallingConfig)); + } + return toObject; +} +function toolToMldev$3(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["retrieval"]) !== void 0) { + throw new Error("retrieval parameter is not supported in Gemini API."); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + const fromFileSearch = getValueByPath(fromObject, ["fileSearch"]); + if (fromFileSearch != null) { + setValueByPath(toObject, ["fileSearch"], fromFileSearch); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], googleSearchToMldev$3(fromGoogleSearch)); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + if (getValueByPath(fromObject, ["enterpriseWebSearch"]) !== void 0) { + throw new Error("enterpriseWebSearch parameter is not supported in Gemini API."); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], googleMapsToMldev$3(fromGoogleMaps)); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + const fromMcpServers = getValueByPath(fromObject, ["mcpServers"]); + if (fromMcpServers != null) { + let transformedList = fromMcpServers; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["mcpServers"], transformedList); + } + return toObject; +} +function toolToVertex$2(fromObject) { + const toObject = {}; + const fromRetrieval = getValueByPath(fromObject, ["retrieval"]); + if (fromRetrieval != null) { + setValueByPath(toObject, ["retrieval"], fromRetrieval); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + if (getValueByPath(fromObject, ["fileSearch"]) !== void 0) { + throw new Error("fileSearch parameter is not supported in Vertex AI."); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], fromGoogleSearch); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + const fromEnterpriseWebSearch = getValueByPath(fromObject, [ + "enterpriseWebSearch" + ]); + if (fromEnterpriseWebSearch != null) { + setValueByPath(toObject, ["enterpriseWebSearch"], fromEnterpriseWebSearch); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return functionDeclarationToVertex$2(item); + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], fromGoogleMaps); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + if (getValueByPath(fromObject, ["mcpServers"]) !== void 0) { + throw new Error("mcpServers parameter is not supported in Vertex AI."); + } + return toObject; +} +function updateCachedContentConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromTtl = getValueByPath(fromObject, ["ttl"]); + if (parentObject !== void 0 && fromTtl != null) { + setValueByPath(parentObject, ["ttl"], fromTtl); + } + const fromExpireTime = getValueByPath(fromObject, ["expireTime"]); + if (parentObject !== void 0 && fromExpireTime != null) { + setValueByPath(parentObject, ["expireTime"], fromExpireTime); + } + return toObject; +} +function updateCachedContentConfigToVertex(fromObject, parentObject) { + const toObject = {}; + const fromTtl = getValueByPath(fromObject, ["ttl"]); + if (parentObject !== void 0 && fromTtl != null) { + setValueByPath(parentObject, ["ttl"], fromTtl); + } + const fromExpireTime = getValueByPath(fromObject, ["expireTime"]); + if (parentObject !== void 0 && fromExpireTime != null) { + setValueByPath(parentObject, ["expireTime"], fromExpireTime); + } + return toObject; +} +function updateCachedContentParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tCachedContentName(apiClient, fromName)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + updateCachedContentConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function updateCachedContentParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], tCachedContentName(apiClient, fromName)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + updateCachedContentConfigToVertex(fromConfig, toObject); + } + return toObject; +} +var Caches = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + this.list = async (params = {}) => { + return new Pager(PagedItem.PAGED_ITEM_CACHED_CONTENTS, (x2) => this.listInternal(x2), await this.listInternal(params), params); + }; + } + /** + * Creates a cached contents resource. + * + * @remarks + * Context caching is only supported for specific models. See [Gemini + * Developer API reference](https://ai.google.dev/gemini-api/docs/caching?lang=node/context-cac) + * and [Vertex AI reference](https://cloud.google.com/vertex-ai/generative-ai/docs/context-cache/context-cache-overview#supported_models) + * for more information. + * + * @param params - The parameters for the create request. + * @return The created cached content. + * + * @example + * ```ts + * const contents = ...; // Initialize the content to cache. + * const response = await ai.caches.create({ + * model: 'gemini-2.0-flash-001', + * config: { + * 'contents': contents, + * 'displayName': 'test cache', + * 'systemInstruction': 'What is the sum of the two pdfs?', + * 'ttl': '86400s', + * } + * }); + * ``` + */ + async create(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = createCachedContentParametersToVertex(this.apiClient, params); + path7 = formatMap("cachedContents", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } else { + const body = createCachedContentParametersToMldev(this.apiClient, params); + path7 = formatMap("cachedContents", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } + /** + * Gets cached content configurations. + * + * @param params - The parameters for the get request. + * @return The cached content. + * + * @example + * ```ts + * await ai.caches.get({name: '...'}); // The server-generated resource name. + * ``` + */ + async get(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = getCachedContentParametersToVertex(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } else { + const body = getCachedContentParametersToMldev(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } + /** + * Deletes cached content. + * + * @param params - The parameters for the delete request. + * @return The empty response returned by the API. + * + * @example + * ```ts + * await ai.caches.delete({name: '...'}); // The server-generated resource name. + * ``` + */ + async delete(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = deleteCachedContentParametersToVertex(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = deleteCachedContentResponseFromVertex(apiResponse); + const typedResp = new DeleteCachedContentResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = deleteCachedContentParametersToMldev(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = deleteCachedContentResponseFromMldev(apiResponse); + const typedResp = new DeleteCachedContentResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Updates cached content configurations. + * + * @param params - The parameters for the update request. + * @return The updated cached content. + * + * @example + * ```ts + * const response = await ai.caches.update({ + * name: '...', // The server-generated resource name. + * config: {'ttl': '7600s'} + * }); + * ``` + */ + async update(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = updateCachedContentParametersToVertex(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "PATCH", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } else { + const body = updateCachedContentParametersToMldev(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "PATCH", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } + async listInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = listCachedContentsParametersToVertex(params); + path7 = formatMap("cachedContents", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listCachedContentsResponseFromVertex(apiResponse); + const typedResp = new ListCachedContentsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = listCachedContentsParametersToMldev(params); + path7 = formatMap("cachedContents", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listCachedContentsResponseFromMldev(apiResponse); + const typedResp = new ListCachedContentsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } +}; +function __rest(s2, e2) { + var t2 = {}; + for (var p in s2) + if (Object.prototype.hasOwnProperty.call(s2, p) && e2.indexOf(p) < 0) + t2[p] = s2[p]; + if (s2 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i2 = 0, p = Object.getOwnPropertySymbols(s2); i2 < p.length; i2++) { + if (e2.indexOf(p[i2]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i2])) + t2[p[i2]] = s2[p[i2]]; + } + return t2; +} +function __values(o) { + var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o[s2], i2 = 0; + if (m2) + return m2.call(o); + if (o && typeof o.length === "number") + return { + next: function() { + if (o && i2 >= o.length) + o = void 0; + return { value: o && o[i2++], done: !o }; + } + }; + throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined."); +} +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i2, q = []; + return i2 = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i2[Symbol.asyncIterator] = function() { + return this; + }, i2; + function awaitReturn(f3) { + return function(v) { + return Promise.resolve(v).then(f3, reject); + }; + } + function verb(n, f3) { + if (g[n]) { + i2[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + if (f3) + i2[n] = f3(i2[n]); + } + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e2) { + settle(q[0][3], e2); + } + } + function step(r2) { + r2.value instanceof __await ? Promise.resolve(r2.value.v).then(fulfill, reject) : settle(q[0][2], r2); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f3, v) { + if (f3(v), q.shift(), q.length) + resume(q[0][0], q[0][1]); + } +} +function __asyncValues(o) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m2 = o[Symbol.asyncIterator], i2; + return m2 ? m2.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i2 = {}, verb("next"), verb("throw"), verb("return"), i2[Symbol.asyncIterator] = function() { + return this; + }, i2); + function verb(n) { + i2[n] = o[n] && function(v) { + return new Promise(function(resolve2, reject) { + v = o[n](v), settle(resolve2, reject, v.done, v.value); + }); + }; + } + function settle(resolve2, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve2({ value: v2, done: d }); + }, reject); + } +} +function isValidResponse(response) { + var _a3; + if (response.candidates == void 0 || response.candidates.length === 0) { + return false; + } + const content = (_a3 = response.candidates[0]) === null || _a3 === void 0 ? void 0 : _a3.content; + if (content === void 0) { + return false; + } + return isValidContent(content); +} +function isValidContent(content) { + if (content.parts === void 0 || content.parts.length === 0) { + return false; + } + for (const part of content.parts) { + if (part === void 0 || Object.keys(part).length === 0) { + return false; + } + } + return true; +} +function validateHistory(history) { + if (history.length === 0) { + return; + } + for (const content of history) { + if (content.role !== "user" && content.role !== "model") { + throw new Error(`Role must be user or model, but got ${content.role}.`); + } + } +} +function extractCuratedHistory(comprehensiveHistory) { + if (comprehensiveHistory === void 0 || comprehensiveHistory.length === 0) { + return []; + } + const curatedHistory = []; + const length = comprehensiveHistory.length; + let i2 = 0; + while (i2 < length) { + if (comprehensiveHistory[i2].role === "user") { + curatedHistory.push(comprehensiveHistory[i2]); + i2++; + } else { + const modelOutput = []; + let isValid = true; + while (i2 < length && comprehensiveHistory[i2].role === "model") { + modelOutput.push(comprehensiveHistory[i2]); + if (isValid && !isValidContent(comprehensiveHistory[i2])) { + isValid = false; + } + i2++; + } + if (isValid) { + curatedHistory.push(...modelOutput); + } else { + curatedHistory.pop(); + } + } + } + return curatedHistory; +} +var Chats = class { + constructor(modelsModule, apiClient) { + this.modelsModule = modelsModule; + this.apiClient = apiClient; + } + /** + * Creates a new chat session. + * + * @remarks + * The config in the params will be used for all requests within the chat + * session unless overridden by a per-request `config` in + * @see {@link types.SendMessageParameters#config}. + * + * @param params - Parameters for creating a chat session. + * @returns A new chat session. + * + * @example + * ```ts + * const chat = ai.chats.create({ + * model: 'gemini-2.0-flash' + * config: { + * temperature: 0.5, + * maxOutputTokens: 1024, + * } + * }); + * ``` + */ + create(params) { + return new Chat( + this.apiClient, + this.modelsModule, + params.model, + params.config, + // Deep copy the history to avoid mutating the history outside of the + // chat session. + structuredClone(params.history) + ); + } +}; +var Chat = class { + constructor(apiClient, modelsModule, model, config = {}, history = []) { + this.apiClient = apiClient; + this.modelsModule = modelsModule; + this.model = model; + this.config = config; + this.history = history; + this.sendPromise = Promise.resolve(); + validateHistory(history); + } + /** + * Sends a message to the model and returns the response. + * + * @remarks + * This method will wait for the previous message to be processed before + * sending the next message. + * + * @see {@link Chat#sendMessageStream} for streaming method. + * @param params - parameters for sending messages within a chat session. + * @returns The model's response. + * + * @example + * ```ts + * const chat = ai.chats.create({model: 'gemini-2.0-flash'}); + * const response = await chat.sendMessage({ + * message: 'Why is the sky blue?' + * }); + * console.log(response.text); + * ``` + */ + async sendMessage(params) { + var _a3; + await this.sendPromise; + const inputContent = tContent(params.message); + const responsePromise = this.modelsModule.generateContent({ + model: this.model, + contents: this.getHistory(true).concat(inputContent), + config: (_a3 = params.config) !== null && _a3 !== void 0 ? _a3 : this.config + }); + this.sendPromise = (async () => { + var _a4, _b, _c; + const response = await responsePromise; + const outputContent = (_b = (_a4 = response.candidates) === null || _a4 === void 0 ? void 0 : _a4[0]) === null || _b === void 0 ? void 0 : _b.content; + const fullAutomaticFunctionCallingHistory = response.automaticFunctionCallingHistory; + const index = this.getHistory(true).length; + let automaticFunctionCallingHistory = []; + if (fullAutomaticFunctionCallingHistory != null) { + automaticFunctionCallingHistory = (_c = fullAutomaticFunctionCallingHistory.slice(index)) !== null && _c !== void 0 ? _c : []; + } + const modelOutput = outputContent ? [outputContent] : []; + this.recordHistory(inputContent, modelOutput, automaticFunctionCallingHistory); + return; + })(); + await this.sendPromise.catch(() => { + this.sendPromise = Promise.resolve(); + }); + return responsePromise; + } + /** + * Sends a message to the model and returns the response in chunks. + * + * @remarks + * This method will wait for the previous message to be processed before + * sending the next message. + * + * @see {@link Chat#sendMessage} for non-streaming method. + * @param params - parameters for sending the message. + * @return The model's response. + * + * @example + * ```ts + * const chat = ai.chats.create({model: 'gemini-2.0-flash'}); + * const response = await chat.sendMessageStream({ + * message: 'Why is the sky blue?' + * }); + * for await (const chunk of response) { + * console.log(chunk.text); + * } + * ``` + */ + async sendMessageStream(params) { + var _a3; + await this.sendPromise; + const inputContent = tContent(params.message); + const streamResponse = this.modelsModule.generateContentStream({ + model: this.model, + contents: this.getHistory(true).concat(inputContent), + config: (_a3 = params.config) !== null && _a3 !== void 0 ? _a3 : this.config + }); + this.sendPromise = streamResponse.then(() => void 0).catch(() => void 0); + const response = await streamResponse; + const result = this.processStreamResponse(response, inputContent); + return result; + } + /** + * Returns the chat history. + * + * @remarks + * The history is a list of contents alternating between user and model. + * + * There are two types of history: + * - The `curated history` contains only the valid turns between user and + * model, which will be included in the subsequent requests sent to the model. + * - The `comprehensive history` contains all turns, including invalid or + * empty model outputs, providing a complete record of the history. + * + * The history is updated after receiving the response from the model, + * for streaming response, it means receiving the last chunk of the response. + * + * The `comprehensive history` is returned by default. To get the `curated + * history`, set the `curated` parameter to `true`. + * + * @param curated - whether to return the curated history or the comprehensive + * history. + * @return History contents alternating between user and model for the entire + * chat session. + */ + getHistory(curated = false) { + const history = curated ? extractCuratedHistory(this.history) : this.history; + return structuredClone(history); + } + processStreamResponse(streamResponse, inputContent) { + return __asyncGenerator(this, arguments, function* processStreamResponse_1() { + var _a3, e_1, _b, _c; + var _d, _e; + const outputContent = []; + try { + for (var _f = true, streamResponse_1 = __asyncValues(streamResponse), streamResponse_1_1; streamResponse_1_1 = yield __await(streamResponse_1.next()), _a3 = streamResponse_1_1.done, !_a3; _f = true) { + _c = streamResponse_1_1.value; + _f = false; + const chunk = _c; + if (isValidResponse(chunk)) { + const content = (_e = (_d = chunk.candidates) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.content; + if (content !== void 0) { + outputContent.push(content); + } + } + yield yield __await(chunk); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (!_f && !_a3 && (_b = streamResponse_1.return)) + yield __await(_b.call(streamResponse_1)); + } finally { + if (e_1) + throw e_1.error; + } + } + this.recordHistory(inputContent, outputContent); + }); + } + recordHistory(userInput, modelOutput, automaticFunctionCallingHistory) { + let outputContents = []; + if (modelOutput.length > 0 && modelOutput.every((content) => content.role !== void 0)) { + outputContents = modelOutput; + } else { + outputContents.push({ + role: "model", + parts: [] + }); + } + if (automaticFunctionCallingHistory && automaticFunctionCallingHistory.length > 0) { + this.history.push(...extractCuratedHistory(automaticFunctionCallingHistory)); + } else { + this.history.push(userInput); + } + this.history.push(...outputContents); + } +}; +var ApiError = class _ApiError extends Error { + constructor(options) { + super(options.message); + this.name = "ApiError"; + this.status = options.status; + Object.setPrototypeOf(this, _ApiError.prototype); + } +}; +function createFileParametersToMldev(fromObject) { + const toObject = {}; + const fromFile2 = getValueByPath(fromObject, ["file"]); + if (fromFile2 != null) { + setValueByPath(toObject, ["file"], fromFile2); + } + return toObject; +} +function createFileResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; +} +function deleteFileParametersToMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "file"], tFileName(fromName)); + } + return toObject; +} +function deleteFileResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; +} +function getFileParametersToMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "file"], tFileName(fromName)); + } + return toObject; +} +function internalRegisterFilesParametersToMldev(fromObject) { + const toObject = {}; + const fromUris = getValueByPath(fromObject, ["uris"]); + if (fromUris != null) { + setValueByPath(toObject, ["uris"], fromUris); + } + return toObject; +} +function listFilesConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + return toObject; +} +function listFilesParametersToMldev(fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listFilesConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function listFilesResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromFiles = getValueByPath(fromObject, ["files"]); + if (fromFiles != null) { + let transformedList = fromFiles; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["files"], transformedList); + } + return toObject; +} +function registerFilesResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromFiles = getValueByPath(fromObject, ["files"]); + if (fromFiles != null) { + let transformedList = fromFiles; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["files"], transformedList); + } + return toObject; +} +var Files = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + this.list = async (params = {}) => { + return new Pager(PagedItem.PAGED_ITEM_FILES, (x2) => this.listInternal(x2), await this.listInternal(params), params); + }; + } + /** + * Uploads a file asynchronously to the Gemini API. + * This method is not available in Vertex AI. + * Supported upload sources: + * - Node.js: File path (string) or Blob object. + * - Browser: Blob object (e.g., File). + * + * @remarks + * The `mimeType` can be specified in the `config` parameter. If omitted: + * - For file path (string) inputs, the `mimeType` will be inferred from the + * file extension. + * - For Blob object inputs, the `mimeType` will be set to the Blob's `type` + * property. + * Somex eamples for file extension to mimeType mapping: + * .txt -> text/plain + * .json -> application/json + * .jpg -> image/jpeg + * .png -> image/png + * .mp3 -> audio/mpeg + * .mp4 -> video/mp4 + * + * This section can contain multiple paragraphs and code examples. + * + * @param params - Optional parameters specified in the + * `types.UploadFileParameters` interface. + * @see {@link types.UploadFileParameters#config} for the optional + * config in the parameters. + * @return A promise that resolves to a `types.File` object. + * @throws An error if called on a Vertex AI client. + * @throws An error if the `mimeType` is not provided and can not be inferred, + * the `mimeType` can be provided in the `params.config` parameter. + * @throws An error occurs if a suitable upload location cannot be established. + * + * @example + * The following code uploads a file to Gemini API. + * + * ```ts + * const file = await ai.files.upload({file: 'file.txt', config: { + * mimeType: 'text/plain', + * }}); + * console.log(file.name); + * ``` + */ + async upload(params) { + if (this.apiClient.isVertexAI()) { + throw new Error("Vertex AI does not support uploading files. You can share files through a GCS bucket."); + } + return this.apiClient.uploadFile(params.file, params.config).then((resp) => { + return resp; + }); + } + /** + * Downloads a remotely stored file asynchronously to a location specified in + * the `params` object. This method only works on Node environment, to + * download files in the browser, use a browser compliant method like an + * tag. + * + * @param params - The parameters for the download request. + * + * @example + * The following code downloads an example file named "files/mehozpxf877d" as + * "file.txt". + * + * ```ts + * await ai.files.download({file: file.name, downloadPath: 'file.txt'}); + * ``` + */ + async download(params) { + await this.apiClient.downloadFile(params); + } + /** + * Registers Google Cloud Storage files for use with the API. + * This method is only available in Node.js environments. + */ + async registerFiles(params) { + throw new Error("registerFiles is only supported in Node.js environments."); + } + async _registerFiles(params) { + return this.registerFilesInternal(params); + } + async listInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = listFilesParametersToMldev(params); + path7 = formatMap("files", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listFilesResponseFromMldev(apiResponse); + const typedResp = new ListFilesResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + async createInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = createFileParametersToMldev(params); + path7 = formatMap("upload/v1beta/files", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = createFileResponseFromMldev(apiResponse); + const typedResp = new CreateFileResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Retrieves the file information from the service. + * + * @param params - The parameters for the get request + * @return The Promise that resolves to the types.File object requested. + * + * @example + * ```ts + * const config: GetFileParameters = { + * name: fileName, + * }; + * file = await ai.files.get(config); + * console.log(file.name); + * ``` + */ + async get(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = getFileParametersToMldev(params); + path7 = formatMap("files/{file}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } + /** + * Deletes a remotely stored file. + * + * @param params - The parameters for the delete request. + * @return The DeleteFileResponse, the response for the delete method. + * + * @example + * The following code deletes an example file named "files/mehozpxf877d". + * + * ```ts + * await ai.files.delete({name: file.name}); + * ``` + */ + async delete(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = deleteFileParametersToMldev(params); + path7 = formatMap("files/{file}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = deleteFileResponseFromMldev(apiResponse); + const typedResp = new DeleteFileResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + async registerFilesInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = internalRegisterFilesParametersToMldev(params); + path7 = formatMap("files:register", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = registerFilesResponseFromMldev(apiResponse); + const typedResp = new RegisterFilesResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } +}; +function blobToMldev$2(fromObject) { + const toObject = {}; + const fromData = getValueByPath(fromObject, ["data"]); + if (fromData != null) { + setValueByPath(toObject, ["data"], fromData); + } + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function contentToMldev$2(fromObject) { + const toObject = {}; + const fromParts = getValueByPath(fromObject, ["parts"]); + if (fromParts != null) { + let transformedList = fromParts; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return partToMldev$2(item); + }); + } + setValueByPath(toObject, ["parts"], transformedList); + } + const fromRole = getValueByPath(fromObject, ["role"]); + if (fromRole != null) { + setValueByPath(toObject, ["role"], fromRole); + } + return toObject; +} +function fileDataToMldev$2(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromFileUri = getValueByPath(fromObject, ["fileUri"]); + if (fromFileUri != null) { + setValueByPath(toObject, ["fileUri"], fromFileUri); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function functionCallToMldev$2(fromObject) { + const toObject = {}; + const fromId = getValueByPath(fromObject, ["id"]); + if (fromId != null) { + setValueByPath(toObject, ["id"], fromId); + } + const fromArgs = getValueByPath(fromObject, ["args"]); + if (fromArgs != null) { + setValueByPath(toObject, ["args"], fromArgs); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + if (getValueByPath(fromObject, ["partialArgs"]) !== void 0) { + throw new Error("partialArgs parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["willContinue"]) !== void 0) { + throw new Error("willContinue parameter is not supported in Gemini API."); + } + return toObject; +} +function functionDeclarationToVertex$1(fromObject) { + const toObject = {}; + const fromDescription = getValueByPath(fromObject, ["description"]); + if (fromDescription != null) { + setValueByPath(toObject, ["description"], fromDescription); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromParameters = getValueByPath(fromObject, ["parameters"]); + if (fromParameters != null) { + setValueByPath(toObject, ["parameters"], fromParameters); + } + const fromParametersJsonSchema = getValueByPath(fromObject, [ + "parametersJsonSchema" + ]); + if (fromParametersJsonSchema != null) { + setValueByPath(toObject, ["parametersJsonSchema"], fromParametersJsonSchema); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], fromResponse); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + if (getValueByPath(fromObject, ["behavior"]) !== void 0) { + throw new Error("behavior parameter is not supported in Vertex AI."); + } + return toObject; +} +function generationConfigToVertex$1(fromObject) { + const toObject = {}; + const fromModelSelectionConfig = getValueByPath(fromObject, [ + "modelSelectionConfig" + ]); + if (fromModelSelectionConfig != null) { + setValueByPath(toObject, ["modelConfig"], fromModelSelectionConfig); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + const fromAudioTimestamp = getValueByPath(fromObject, [ + "audioTimestamp" + ]); + if (fromAudioTimestamp != null) { + setValueByPath(toObject, ["audioTimestamp"], fromAudioTimestamp); + } + const fromCandidateCount = getValueByPath(fromObject, [ + "candidateCount" + ]); + if (fromCandidateCount != null) { + setValueByPath(toObject, ["candidateCount"], fromCandidateCount); + } + const fromEnableAffectiveDialog = getValueByPath(fromObject, [ + "enableAffectiveDialog" + ]); + if (fromEnableAffectiveDialog != null) { + setValueByPath(toObject, ["enableAffectiveDialog"], fromEnableAffectiveDialog); + } + const fromFrequencyPenalty = getValueByPath(fromObject, [ + "frequencyPenalty" + ]); + if (fromFrequencyPenalty != null) { + setValueByPath(toObject, ["frequencyPenalty"], fromFrequencyPenalty); + } + const fromLogprobs = getValueByPath(fromObject, ["logprobs"]); + if (fromLogprobs != null) { + setValueByPath(toObject, ["logprobs"], fromLogprobs); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (fromMaxOutputTokens != null) { + setValueByPath(toObject, ["maxOutputTokens"], fromMaxOutputTokens); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromPresencePenalty = getValueByPath(fromObject, [ + "presencePenalty" + ]); + if (fromPresencePenalty != null) { + setValueByPath(toObject, ["presencePenalty"], fromPresencePenalty); + } + const fromResponseLogprobs = getValueByPath(fromObject, [ + "responseLogprobs" + ]); + if (fromResponseLogprobs != null) { + setValueByPath(toObject, ["responseLogprobs"], fromResponseLogprobs); + } + const fromResponseMimeType = getValueByPath(fromObject, [ + "responseMimeType" + ]); + if (fromResponseMimeType != null) { + setValueByPath(toObject, ["responseMimeType"], fromResponseMimeType); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (fromResponseModalities != null) { + setValueByPath(toObject, ["responseModalities"], fromResponseModalities); + } + const fromResponseSchema = getValueByPath(fromObject, [ + "responseSchema" + ]); + if (fromResponseSchema != null) { + setValueByPath(toObject, ["responseSchema"], fromResponseSchema); + } + const fromRoutingConfig = getValueByPath(fromObject, [ + "routingConfig" + ]); + if (fromRoutingConfig != null) { + setValueByPath(toObject, ["routingConfig"], fromRoutingConfig); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (fromSeed != null) { + setValueByPath(toObject, ["seed"], fromSeed); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (fromSpeechConfig != null) { + setValueByPath(toObject, ["speechConfig"], fromSpeechConfig); + } + const fromStopSequences = getValueByPath(fromObject, [ + "stopSequences" + ]); + if (fromStopSequences != null) { + setValueByPath(toObject, ["stopSequences"], fromStopSequences); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (fromTemperature != null) { + setValueByPath(toObject, ["temperature"], fromTemperature); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (fromThinkingConfig != null) { + setValueByPath(toObject, ["thinkingConfig"], fromThinkingConfig); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (fromTopK != null) { + setValueByPath(toObject, ["topK"], fromTopK); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (fromTopP != null) { + setValueByPath(toObject, ["topP"], fromTopP); + } + if (getValueByPath(fromObject, ["enableEnhancedCivicAnswers"]) !== void 0) { + throw new Error("enableEnhancedCivicAnswers parameter is not supported in Vertex AI."); + } + return toObject; +} +function googleMapsToMldev$2(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["authConfig"]) !== void 0) { + throw new Error("authConfig parameter is not supported in Gemini API."); + } + const fromEnableWidget = getValueByPath(fromObject, ["enableWidget"]); + if (fromEnableWidget != null) { + setValueByPath(toObject, ["enableWidget"], fromEnableWidget); + } + return toObject; +} +function googleSearchToMldev$2(fromObject) { + const toObject = {}; + const fromSearchTypes = getValueByPath(fromObject, ["searchTypes"]); + if (fromSearchTypes != null) { + setValueByPath(toObject, ["searchTypes"], fromSearchTypes); + } + if (getValueByPath(fromObject, ["excludeDomains"]) !== void 0) { + throw new Error("excludeDomains parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["blockingConfidence"]) !== void 0) { + throw new Error("blockingConfidence parameter is not supported in Gemini API."); + } + const fromTimeRangeFilter = getValueByPath(fromObject, [ + "timeRangeFilter" + ]); + if (fromTimeRangeFilter != null) { + setValueByPath(toObject, ["timeRangeFilter"], fromTimeRangeFilter); + } + return toObject; +} +function liveConnectConfigToMldev$1(fromObject, parentObject) { + const toObject = {}; + const fromGenerationConfig = getValueByPath(fromObject, [ + "generationConfig" + ]); + if (parentObject !== void 0 && fromGenerationConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig"], fromGenerationConfig); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (parentObject !== void 0 && fromResponseModalities != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "responseModalities"], fromResponseModalities); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (parentObject !== void 0 && fromTemperature != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "temperature"], fromTemperature); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (parentObject !== void 0 && fromTopP != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "topP"], fromTopP); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (parentObject !== void 0 && fromTopK != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "topK"], fromTopK); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (parentObject !== void 0 && fromMaxOutputTokens != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "maxOutputTokens"], fromMaxOutputTokens); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (parentObject !== void 0 && fromMediaResolution != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "mediaResolution"], fromMediaResolution); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (parentObject !== void 0 && fromSeed != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "seed"], fromSeed); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (parentObject !== void 0 && fromSpeechConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "speechConfig"], tLiveSpeechConfig(fromSpeechConfig)); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (parentObject !== void 0 && fromThinkingConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "thinkingConfig"], fromThinkingConfig); + } + const fromEnableAffectiveDialog = getValueByPath(fromObject, [ + "enableAffectiveDialog" + ]); + if (parentObject !== void 0 && fromEnableAffectiveDialog != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "enableAffectiveDialog"], fromEnableAffectiveDialog); + } + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["setup", "systemInstruction"], contentToMldev$2(tContent(fromSystemInstruction))); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = tTools(fromTools); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToMldev$2(tTool(item)); + }); + } + setValueByPath(parentObject, ["setup", "tools"], transformedList); + } + const fromSessionResumption = getValueByPath(fromObject, [ + "sessionResumption" + ]); + if (parentObject !== void 0 && fromSessionResumption != null) { + setValueByPath(parentObject, ["setup", "sessionResumption"], sessionResumptionConfigToMldev$1(fromSessionResumption)); + } + const fromInputAudioTranscription = getValueByPath(fromObject, [ + "inputAudioTranscription" + ]); + if (parentObject !== void 0 && fromInputAudioTranscription != null) { + setValueByPath(parentObject, ["setup", "inputAudioTranscription"], fromInputAudioTranscription); + } + const fromOutputAudioTranscription = getValueByPath(fromObject, [ + "outputAudioTranscription" + ]); + if (parentObject !== void 0 && fromOutputAudioTranscription != null) { + setValueByPath(parentObject, ["setup", "outputAudioTranscription"], fromOutputAudioTranscription); + } + const fromRealtimeInputConfig = getValueByPath(fromObject, [ + "realtimeInputConfig" + ]); + if (parentObject !== void 0 && fromRealtimeInputConfig != null) { + setValueByPath(parentObject, ["setup", "realtimeInputConfig"], fromRealtimeInputConfig); + } + const fromContextWindowCompression = getValueByPath(fromObject, [ + "contextWindowCompression" + ]); + if (parentObject !== void 0 && fromContextWindowCompression != null) { + setValueByPath(parentObject, ["setup", "contextWindowCompression"], fromContextWindowCompression); + } + const fromProactivity = getValueByPath(fromObject, ["proactivity"]); + if (parentObject !== void 0 && fromProactivity != null) { + setValueByPath(parentObject, ["setup", "proactivity"], fromProactivity); + } + if (getValueByPath(fromObject, ["explicitVadSignal"]) !== void 0) { + throw new Error("explicitVadSignal parameter is not supported in Gemini API."); + } + return toObject; +} +function liveConnectConfigToVertex(fromObject, parentObject) { + const toObject = {}; + const fromGenerationConfig = getValueByPath(fromObject, [ + "generationConfig" + ]); + if (parentObject !== void 0 && fromGenerationConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig"], generationConfigToVertex$1(fromGenerationConfig)); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (parentObject !== void 0 && fromResponseModalities != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "responseModalities"], fromResponseModalities); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (parentObject !== void 0 && fromTemperature != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "temperature"], fromTemperature); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (parentObject !== void 0 && fromTopP != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "topP"], fromTopP); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (parentObject !== void 0 && fromTopK != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "topK"], fromTopK); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (parentObject !== void 0 && fromMaxOutputTokens != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "maxOutputTokens"], fromMaxOutputTokens); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (parentObject !== void 0 && fromMediaResolution != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "mediaResolution"], fromMediaResolution); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (parentObject !== void 0 && fromSeed != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "seed"], fromSeed); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (parentObject !== void 0 && fromSpeechConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "speechConfig"], tLiveSpeechConfig(fromSpeechConfig)); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (parentObject !== void 0 && fromThinkingConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "thinkingConfig"], fromThinkingConfig); + } + const fromEnableAffectiveDialog = getValueByPath(fromObject, [ + "enableAffectiveDialog" + ]); + if (parentObject !== void 0 && fromEnableAffectiveDialog != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "enableAffectiveDialog"], fromEnableAffectiveDialog); + } + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["setup", "systemInstruction"], tContent(fromSystemInstruction)); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = tTools(fromTools); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToVertex$1(tTool(item)); + }); + } + setValueByPath(parentObject, ["setup", "tools"], transformedList); + } + const fromSessionResumption = getValueByPath(fromObject, [ + "sessionResumption" + ]); + if (parentObject !== void 0 && fromSessionResumption != null) { + setValueByPath(parentObject, ["setup", "sessionResumption"], fromSessionResumption); + } + const fromInputAudioTranscription = getValueByPath(fromObject, [ + "inputAudioTranscription" + ]); + if (parentObject !== void 0 && fromInputAudioTranscription != null) { + setValueByPath(parentObject, ["setup", "inputAudioTranscription"], fromInputAudioTranscription); + } + const fromOutputAudioTranscription = getValueByPath(fromObject, [ + "outputAudioTranscription" + ]); + if (parentObject !== void 0 && fromOutputAudioTranscription != null) { + setValueByPath(parentObject, ["setup", "outputAudioTranscription"], fromOutputAudioTranscription); + } + const fromRealtimeInputConfig = getValueByPath(fromObject, [ + "realtimeInputConfig" + ]); + if (parentObject !== void 0 && fromRealtimeInputConfig != null) { + setValueByPath(parentObject, ["setup", "realtimeInputConfig"], fromRealtimeInputConfig); + } + const fromContextWindowCompression = getValueByPath(fromObject, [ + "contextWindowCompression" + ]); + if (parentObject !== void 0 && fromContextWindowCompression != null) { + setValueByPath(parentObject, ["setup", "contextWindowCompression"], fromContextWindowCompression); + } + const fromProactivity = getValueByPath(fromObject, ["proactivity"]); + if (parentObject !== void 0 && fromProactivity != null) { + setValueByPath(parentObject, ["setup", "proactivity"], fromProactivity); + } + const fromExplicitVadSignal = getValueByPath(fromObject, [ + "explicitVadSignal" + ]); + if (parentObject !== void 0 && fromExplicitVadSignal != null) { + setValueByPath(parentObject, ["setup", "explicitVadSignal"], fromExplicitVadSignal); + } + return toObject; +} +function liveConnectParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["setup", "model"], tModel(apiClient, fromModel)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["config"], liveConnectConfigToMldev$1(fromConfig, toObject)); + } + return toObject; +} +function liveConnectParametersToVertex(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["setup", "model"], tModel(apiClient, fromModel)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["config"], liveConnectConfigToVertex(fromConfig, toObject)); + } + return toObject; +} +function liveMusicSetConfigParametersToMldev(fromObject) { + const toObject = {}; + const fromMusicGenerationConfig = getValueByPath(fromObject, [ + "musicGenerationConfig" + ]); + if (fromMusicGenerationConfig != null) { + setValueByPath(toObject, ["musicGenerationConfig"], fromMusicGenerationConfig); + } + return toObject; +} +function liveMusicSetWeightedPromptsParametersToMldev(fromObject) { + const toObject = {}; + const fromWeightedPrompts = getValueByPath(fromObject, [ + "weightedPrompts" + ]); + if (fromWeightedPrompts != null) { + let transformedList = fromWeightedPrompts; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["weightedPrompts"], transformedList); + } + return toObject; +} +function liveSendRealtimeInputParametersToMldev(fromObject) { + const toObject = {}; + const fromMedia = getValueByPath(fromObject, ["media"]); + if (fromMedia != null) { + let transformedList = tBlobs(fromMedia); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return blobToMldev$2(item); + }); + } + setValueByPath(toObject, ["mediaChunks"], transformedList); + } + const fromAudio = getValueByPath(fromObject, ["audio"]); + if (fromAudio != null) { + setValueByPath(toObject, ["audio"], blobToMldev$2(tAudioBlob(fromAudio))); + } + const fromAudioStreamEnd = getValueByPath(fromObject, [ + "audioStreamEnd" + ]); + if (fromAudioStreamEnd != null) { + setValueByPath(toObject, ["audioStreamEnd"], fromAudioStreamEnd); + } + const fromVideo = getValueByPath(fromObject, ["video"]); + if (fromVideo != null) { + setValueByPath(toObject, ["video"], blobToMldev$2(tImageBlob(fromVideo))); + } + const fromText = getValueByPath(fromObject, ["text"]); + if (fromText != null) { + setValueByPath(toObject, ["text"], fromText); + } + const fromActivityStart = getValueByPath(fromObject, [ + "activityStart" + ]); + if (fromActivityStart != null) { + setValueByPath(toObject, ["activityStart"], fromActivityStart); + } + const fromActivityEnd = getValueByPath(fromObject, ["activityEnd"]); + if (fromActivityEnd != null) { + setValueByPath(toObject, ["activityEnd"], fromActivityEnd); + } + return toObject; +} +function liveSendRealtimeInputParametersToVertex(fromObject) { + const toObject = {}; + const fromMedia = getValueByPath(fromObject, ["media"]); + if (fromMedia != null) { + let transformedList = tBlobs(fromMedia); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["mediaChunks"], transformedList); + } + const fromAudio = getValueByPath(fromObject, ["audio"]); + if (fromAudio != null) { + setValueByPath(toObject, ["audio"], tAudioBlob(fromAudio)); + } + const fromAudioStreamEnd = getValueByPath(fromObject, [ + "audioStreamEnd" + ]); + if (fromAudioStreamEnd != null) { + setValueByPath(toObject, ["audioStreamEnd"], fromAudioStreamEnd); + } + const fromVideo = getValueByPath(fromObject, ["video"]); + if (fromVideo != null) { + setValueByPath(toObject, ["video"], tImageBlob(fromVideo)); + } + const fromText = getValueByPath(fromObject, ["text"]); + if (fromText != null) { + setValueByPath(toObject, ["text"], fromText); + } + const fromActivityStart = getValueByPath(fromObject, [ + "activityStart" + ]); + if (fromActivityStart != null) { + setValueByPath(toObject, ["activityStart"], fromActivityStart); + } + const fromActivityEnd = getValueByPath(fromObject, ["activityEnd"]); + if (fromActivityEnd != null) { + setValueByPath(toObject, ["activityEnd"], fromActivityEnd); + } + return toObject; +} +function liveServerMessageFromVertex(fromObject) { + const toObject = {}; + const fromSetupComplete = getValueByPath(fromObject, [ + "setupComplete" + ]); + if (fromSetupComplete != null) { + setValueByPath(toObject, ["setupComplete"], fromSetupComplete); + } + const fromServerContent = getValueByPath(fromObject, [ + "serverContent" + ]); + if (fromServerContent != null) { + setValueByPath(toObject, ["serverContent"], fromServerContent); + } + const fromToolCall = getValueByPath(fromObject, ["toolCall"]); + if (fromToolCall != null) { + setValueByPath(toObject, ["toolCall"], fromToolCall); + } + const fromToolCallCancellation = getValueByPath(fromObject, [ + "toolCallCancellation" + ]); + if (fromToolCallCancellation != null) { + setValueByPath(toObject, ["toolCallCancellation"], fromToolCallCancellation); + } + const fromUsageMetadata = getValueByPath(fromObject, [ + "usageMetadata" + ]); + if (fromUsageMetadata != null) { + setValueByPath(toObject, ["usageMetadata"], usageMetadataFromVertex(fromUsageMetadata)); + } + const fromGoAway = getValueByPath(fromObject, ["goAway"]); + if (fromGoAway != null) { + setValueByPath(toObject, ["goAway"], fromGoAway); + } + const fromSessionResumptionUpdate = getValueByPath(fromObject, [ + "sessionResumptionUpdate" + ]); + if (fromSessionResumptionUpdate != null) { + setValueByPath(toObject, ["sessionResumptionUpdate"], fromSessionResumptionUpdate); + } + const fromVoiceActivityDetectionSignal = getValueByPath(fromObject, [ + "voiceActivityDetectionSignal" + ]); + if (fromVoiceActivityDetectionSignal != null) { + setValueByPath(toObject, ["voiceActivityDetectionSignal"], fromVoiceActivityDetectionSignal); + } + const fromVoiceActivity = getValueByPath(fromObject, [ + "voiceActivity" + ]); + if (fromVoiceActivity != null) { + setValueByPath(toObject, ["voiceActivity"], voiceActivityFromVertex(fromVoiceActivity)); + } + return toObject; +} +function partToMldev$2(fromObject) { + const toObject = {}; + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromCodeExecutionResult = getValueByPath(fromObject, [ + "codeExecutionResult" + ]); + if (fromCodeExecutionResult != null) { + setValueByPath(toObject, ["codeExecutionResult"], fromCodeExecutionResult); + } + const fromExecutableCode = getValueByPath(fromObject, [ + "executableCode" + ]); + if (fromExecutableCode != null) { + setValueByPath(toObject, ["executableCode"], fromExecutableCode); + } + const fromFileData = getValueByPath(fromObject, ["fileData"]); + if (fromFileData != null) { + setValueByPath(toObject, ["fileData"], fileDataToMldev$2(fromFileData)); + } + const fromFunctionCall = getValueByPath(fromObject, ["functionCall"]); + if (fromFunctionCall != null) { + setValueByPath(toObject, ["functionCall"], functionCallToMldev$2(fromFunctionCall)); + } + const fromFunctionResponse = getValueByPath(fromObject, [ + "functionResponse" + ]); + if (fromFunctionResponse != null) { + setValueByPath(toObject, ["functionResponse"], fromFunctionResponse); + } + const fromInlineData = getValueByPath(fromObject, ["inlineData"]); + if (fromInlineData != null) { + setValueByPath(toObject, ["inlineData"], blobToMldev$2(fromInlineData)); + } + const fromText = getValueByPath(fromObject, ["text"]); + if (fromText != null) { + setValueByPath(toObject, ["text"], fromText); + } + const fromThought = getValueByPath(fromObject, ["thought"]); + if (fromThought != null) { + setValueByPath(toObject, ["thought"], fromThought); + } + const fromThoughtSignature = getValueByPath(fromObject, [ + "thoughtSignature" + ]); + if (fromThoughtSignature != null) { + setValueByPath(toObject, ["thoughtSignature"], fromThoughtSignature); + } + const fromVideoMetadata = getValueByPath(fromObject, [ + "videoMetadata" + ]); + if (fromVideoMetadata != null) { + setValueByPath(toObject, ["videoMetadata"], fromVideoMetadata); + } + return toObject; +} +function sessionResumptionConfigToMldev$1(fromObject) { + const toObject = {}; + const fromHandle = getValueByPath(fromObject, ["handle"]); + if (fromHandle != null) { + setValueByPath(toObject, ["handle"], fromHandle); + } + if (getValueByPath(fromObject, ["transparent"]) !== void 0) { + throw new Error("transparent parameter is not supported in Gemini API."); + } + return toObject; +} +function toolToMldev$2(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["retrieval"]) !== void 0) { + throw new Error("retrieval parameter is not supported in Gemini API."); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + const fromFileSearch = getValueByPath(fromObject, ["fileSearch"]); + if (fromFileSearch != null) { + setValueByPath(toObject, ["fileSearch"], fromFileSearch); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], googleSearchToMldev$2(fromGoogleSearch)); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + if (getValueByPath(fromObject, ["enterpriseWebSearch"]) !== void 0) { + throw new Error("enterpriseWebSearch parameter is not supported in Gemini API."); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], googleMapsToMldev$2(fromGoogleMaps)); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + const fromMcpServers = getValueByPath(fromObject, ["mcpServers"]); + if (fromMcpServers != null) { + let transformedList = fromMcpServers; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["mcpServers"], transformedList); + } + return toObject; +} +function toolToVertex$1(fromObject) { + const toObject = {}; + const fromRetrieval = getValueByPath(fromObject, ["retrieval"]); + if (fromRetrieval != null) { + setValueByPath(toObject, ["retrieval"], fromRetrieval); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + if (getValueByPath(fromObject, ["fileSearch"]) !== void 0) { + throw new Error("fileSearch parameter is not supported in Vertex AI."); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], fromGoogleSearch); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + const fromEnterpriseWebSearch = getValueByPath(fromObject, [ + "enterpriseWebSearch" + ]); + if (fromEnterpriseWebSearch != null) { + setValueByPath(toObject, ["enterpriseWebSearch"], fromEnterpriseWebSearch); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return functionDeclarationToVertex$1(item); + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], fromGoogleMaps); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + if (getValueByPath(fromObject, ["mcpServers"]) !== void 0) { + throw new Error("mcpServers parameter is not supported in Vertex AI."); + } + return toObject; +} +function usageMetadataFromVertex(fromObject) { + const toObject = {}; + const fromPromptTokenCount = getValueByPath(fromObject, [ + "promptTokenCount" + ]); + if (fromPromptTokenCount != null) { + setValueByPath(toObject, ["promptTokenCount"], fromPromptTokenCount); + } + const fromCachedContentTokenCount = getValueByPath(fromObject, [ + "cachedContentTokenCount" + ]); + if (fromCachedContentTokenCount != null) { + setValueByPath(toObject, ["cachedContentTokenCount"], fromCachedContentTokenCount); + } + const fromResponseTokenCount = getValueByPath(fromObject, [ + "candidatesTokenCount" + ]); + if (fromResponseTokenCount != null) { + setValueByPath(toObject, ["responseTokenCount"], fromResponseTokenCount); + } + const fromToolUsePromptTokenCount = getValueByPath(fromObject, [ + "toolUsePromptTokenCount" + ]); + if (fromToolUsePromptTokenCount != null) { + setValueByPath(toObject, ["toolUsePromptTokenCount"], fromToolUsePromptTokenCount); + } + const fromThoughtsTokenCount = getValueByPath(fromObject, [ + "thoughtsTokenCount" + ]); + if (fromThoughtsTokenCount != null) { + setValueByPath(toObject, ["thoughtsTokenCount"], fromThoughtsTokenCount); + } + const fromTotalTokenCount = getValueByPath(fromObject, [ + "totalTokenCount" + ]); + if (fromTotalTokenCount != null) { + setValueByPath(toObject, ["totalTokenCount"], fromTotalTokenCount); + } + const fromPromptTokensDetails = getValueByPath(fromObject, [ + "promptTokensDetails" + ]); + if (fromPromptTokensDetails != null) { + let transformedList = fromPromptTokensDetails; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["promptTokensDetails"], transformedList); + } + const fromCacheTokensDetails = getValueByPath(fromObject, [ + "cacheTokensDetails" + ]); + if (fromCacheTokensDetails != null) { + let transformedList = fromCacheTokensDetails; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["cacheTokensDetails"], transformedList); + } + const fromResponseTokensDetails = getValueByPath(fromObject, [ + "candidatesTokensDetails" + ]); + if (fromResponseTokensDetails != null) { + let transformedList = fromResponseTokensDetails; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["responseTokensDetails"], transformedList); + } + const fromToolUsePromptTokensDetails = getValueByPath(fromObject, [ + "toolUsePromptTokensDetails" + ]); + if (fromToolUsePromptTokensDetails != null) { + let transformedList = fromToolUsePromptTokensDetails; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["toolUsePromptTokensDetails"], transformedList); + } + const fromTrafficType = getValueByPath(fromObject, ["trafficType"]); + if (fromTrafficType != null) { + setValueByPath(toObject, ["trafficType"], fromTrafficType); + } + return toObject; +} +function voiceActivityFromVertex(fromObject) { + const toObject = {}; + const fromVoiceActivityType = getValueByPath(fromObject, ["type"]); + if (fromVoiceActivityType != null) { + setValueByPath(toObject, ["voiceActivityType"], fromVoiceActivityType); + } + return toObject; +} +function blobToMldev$1(fromObject, _rootObject) { + const toObject = {}; + const fromData = getValueByPath(fromObject, ["data"]); + if (fromData != null) { + setValueByPath(toObject, ["data"], fromData); + } + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function candidateFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromContent = getValueByPath(fromObject, ["content"]); + if (fromContent != null) { + setValueByPath(toObject, ["content"], fromContent); + } + const fromCitationMetadata = getValueByPath(fromObject, [ + "citationMetadata" + ]); + if (fromCitationMetadata != null) { + setValueByPath(toObject, ["citationMetadata"], citationMetadataFromMldev(fromCitationMetadata)); + } + const fromTokenCount = getValueByPath(fromObject, ["tokenCount"]); + if (fromTokenCount != null) { + setValueByPath(toObject, ["tokenCount"], fromTokenCount); + } + const fromFinishReason = getValueByPath(fromObject, ["finishReason"]); + if (fromFinishReason != null) { + setValueByPath(toObject, ["finishReason"], fromFinishReason); + } + const fromGroundingMetadata = getValueByPath(fromObject, [ + "groundingMetadata" + ]); + if (fromGroundingMetadata != null) { + setValueByPath(toObject, ["groundingMetadata"], fromGroundingMetadata); + } + const fromAvgLogprobs = getValueByPath(fromObject, ["avgLogprobs"]); + if (fromAvgLogprobs != null) { + setValueByPath(toObject, ["avgLogprobs"], fromAvgLogprobs); + } + const fromIndex = getValueByPath(fromObject, ["index"]); + if (fromIndex != null) { + setValueByPath(toObject, ["index"], fromIndex); + } + const fromLogprobsResult = getValueByPath(fromObject, [ + "logprobsResult" + ]); + if (fromLogprobsResult != null) { + setValueByPath(toObject, ["logprobsResult"], fromLogprobsResult); + } + const fromSafetyRatings = getValueByPath(fromObject, [ + "safetyRatings" + ]); + if (fromSafetyRatings != null) { + let transformedList = fromSafetyRatings; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["safetyRatings"], transformedList); + } + const fromUrlContextMetadata = getValueByPath(fromObject, [ + "urlContextMetadata" + ]); + if (fromUrlContextMetadata != null) { + setValueByPath(toObject, ["urlContextMetadata"], fromUrlContextMetadata); + } + return toObject; +} +function citationMetadataFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromCitations = getValueByPath(fromObject, ["citationSources"]); + if (fromCitations != null) { + let transformedList = fromCitations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["citations"], transformedList); + } + return toObject; +} +function computeTokensParametersToVertex(apiClient, fromObject, _rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["contents"], transformedList); + } + return toObject; +} +function computeTokensResponseFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromTokensInfo = getValueByPath(fromObject, ["tokensInfo"]); + if (fromTokensInfo != null) { + let transformedList = fromTokensInfo; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["tokensInfo"], transformedList); + } + return toObject; +} +function contentEmbeddingFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromValues = getValueByPath(fromObject, ["values"]); + if (fromValues != null) { + setValueByPath(toObject, ["values"], fromValues); + } + const fromStatistics = getValueByPath(fromObject, ["statistics"]); + if (fromStatistics != null) { + setValueByPath(toObject, ["statistics"], contentEmbeddingStatisticsFromVertex(fromStatistics)); + } + return toObject; +} +function contentEmbeddingStatisticsFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromTruncated = getValueByPath(fromObject, ["truncated"]); + if (fromTruncated != null) { + setValueByPath(toObject, ["truncated"], fromTruncated); + } + const fromTokenCount = getValueByPath(fromObject, ["token_count"]); + if (fromTokenCount != null) { + setValueByPath(toObject, ["tokenCount"], fromTokenCount); + } + return toObject; +} +function contentToMldev$1(fromObject, rootObject) { + const toObject = {}; + const fromParts = getValueByPath(fromObject, ["parts"]); + if (fromParts != null) { + let transformedList = fromParts; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return partToMldev$1(item); + }); + } + setValueByPath(toObject, ["parts"], transformedList); + } + const fromRole = getValueByPath(fromObject, ["role"]); + if (fromRole != null) { + setValueByPath(toObject, ["role"], fromRole); + } + return toObject; +} +function controlReferenceConfigToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromControlType = getValueByPath(fromObject, ["controlType"]); + if (fromControlType != null) { + setValueByPath(toObject, ["controlType"], fromControlType); + } + const fromEnableControlImageComputation = getValueByPath(fromObject, [ + "enableControlImageComputation" + ]); + if (fromEnableControlImageComputation != null) { + setValueByPath(toObject, ["computeControl"], fromEnableControlImageComputation); + } + return toObject; +} +function countTokensConfigToMldev(fromObject, _rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["systemInstruction"]) !== void 0) { + throw new Error("systemInstruction parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["tools"]) !== void 0) { + throw new Error("tools parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["generationConfig"]) !== void 0) { + throw new Error("generationConfig parameter is not supported in Gemini API."); + } + return toObject; +} +function countTokensConfigToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["systemInstruction"], tContent(fromSystemInstruction)); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = fromTools; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToVertex(item); + }); + } + setValueByPath(parentObject, ["tools"], transformedList); + } + const fromGenerationConfig = getValueByPath(fromObject, [ + "generationConfig" + ]); + if (parentObject !== void 0 && fromGenerationConfig != null) { + setValueByPath(parentObject, ["generationConfig"], generationConfigToVertex(fromGenerationConfig)); + } + return toObject; +} +function countTokensParametersToMldev(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return contentToMldev$1(item); + }); + } + setValueByPath(toObject, ["contents"], transformedList); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + countTokensConfigToMldev(fromConfig); + } + return toObject; +} +function countTokensParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["contents"], transformedList); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + countTokensConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function countTokensResponseFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromTotalTokens = getValueByPath(fromObject, ["totalTokens"]); + if (fromTotalTokens != null) { + setValueByPath(toObject, ["totalTokens"], fromTotalTokens); + } + const fromCachedContentTokenCount = getValueByPath(fromObject, [ + "cachedContentTokenCount" + ]); + if (fromCachedContentTokenCount != null) { + setValueByPath(toObject, ["cachedContentTokenCount"], fromCachedContentTokenCount); + } + return toObject; +} +function countTokensResponseFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromTotalTokens = getValueByPath(fromObject, ["totalTokens"]); + if (fromTotalTokens != null) { + setValueByPath(toObject, ["totalTokens"], fromTotalTokens); + } + return toObject; +} +function deleteModelParametersToMldev(apiClient, fromObject, _rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "name"], tModel(apiClient, fromModel)); + } + return toObject; +} +function deleteModelParametersToVertex(apiClient, fromObject, _rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "name"], tModel(apiClient, fromModel)); + } + return toObject; +} +function deleteModelResponseFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; +} +function deleteModelResponseFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; +} +function editImageConfigToVertex(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromOutputGcsUri = getValueByPath(fromObject, ["outputGcsUri"]); + if (parentObject !== void 0 && fromOutputGcsUri != null) { + setValueByPath(parentObject, ["parameters", "storageUri"], fromOutputGcsUri); + } + const fromNegativePrompt = getValueByPath(fromObject, [ + "negativePrompt" + ]); + if (parentObject !== void 0 && fromNegativePrompt != null) { + setValueByPath(parentObject, ["parameters", "negativePrompt"], fromNegativePrompt); + } + const fromNumberOfImages = getValueByPath(fromObject, [ + "numberOfImages" + ]); + if (parentObject !== void 0 && fromNumberOfImages != null) { + setValueByPath(parentObject, ["parameters", "sampleCount"], fromNumberOfImages); + } + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (parentObject !== void 0 && fromAspectRatio != null) { + setValueByPath(parentObject, ["parameters", "aspectRatio"], fromAspectRatio); + } + const fromGuidanceScale = getValueByPath(fromObject, [ + "guidanceScale" + ]); + if (parentObject !== void 0 && fromGuidanceScale != null) { + setValueByPath(parentObject, ["parameters", "guidanceScale"], fromGuidanceScale); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (parentObject !== void 0 && fromSeed != null) { + setValueByPath(parentObject, ["parameters", "seed"], fromSeed); + } + const fromSafetyFilterLevel = getValueByPath(fromObject, [ + "safetyFilterLevel" + ]); + if (parentObject !== void 0 && fromSafetyFilterLevel != null) { + setValueByPath(parentObject, ["parameters", "safetySetting"], fromSafetyFilterLevel); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (parentObject !== void 0 && fromPersonGeneration != null) { + setValueByPath(parentObject, ["parameters", "personGeneration"], fromPersonGeneration); + } + const fromIncludeSafetyAttributes = getValueByPath(fromObject, [ + "includeSafetyAttributes" + ]); + if (parentObject !== void 0 && fromIncludeSafetyAttributes != null) { + setValueByPath(parentObject, ["parameters", "includeSafetyAttributes"], fromIncludeSafetyAttributes); + } + const fromIncludeRaiReason = getValueByPath(fromObject, [ + "includeRaiReason" + ]); + if (parentObject !== void 0 && fromIncludeRaiReason != null) { + setValueByPath(parentObject, ["parameters", "includeRaiReason"], fromIncludeRaiReason); + } + const fromLanguage = getValueByPath(fromObject, ["language"]); + if (parentObject !== void 0 && fromLanguage != null) { + setValueByPath(parentObject, ["parameters", "language"], fromLanguage); + } + const fromOutputMimeType = getValueByPath(fromObject, [ + "outputMimeType" + ]); + if (parentObject !== void 0 && fromOutputMimeType != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "mimeType"], fromOutputMimeType); + } + const fromOutputCompressionQuality = getValueByPath(fromObject, [ + "outputCompressionQuality" + ]); + if (parentObject !== void 0 && fromOutputCompressionQuality != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "compressionQuality"], fromOutputCompressionQuality); + } + const fromAddWatermark = getValueByPath(fromObject, ["addWatermark"]); + if (parentObject !== void 0 && fromAddWatermark != null) { + setValueByPath(parentObject, ["parameters", "addWatermark"], fromAddWatermark); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (parentObject !== void 0 && fromLabels != null) { + setValueByPath(parentObject, ["labels"], fromLabels); + } + const fromEditMode = getValueByPath(fromObject, ["editMode"]); + if (parentObject !== void 0 && fromEditMode != null) { + setValueByPath(parentObject, ["parameters", "editMode"], fromEditMode); + } + const fromBaseSteps = getValueByPath(fromObject, ["baseSteps"]); + if (parentObject !== void 0 && fromBaseSteps != null) { + setValueByPath(parentObject, ["parameters", "editConfig", "baseSteps"], fromBaseSteps); + } + return toObject; +} +function editImageParametersInternalToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (fromPrompt != null) { + setValueByPath(toObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromReferenceImages = getValueByPath(fromObject, [ + "referenceImages" + ]); + if (fromReferenceImages != null) { + let transformedList = fromReferenceImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return referenceImageAPIInternalToVertex(item); + }); + } + setValueByPath(toObject, ["instances[0]", "referenceImages"], transformedList); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + editImageConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function editImageResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromGeneratedImages = getValueByPath(fromObject, [ + "predictions" + ]); + if (fromGeneratedImages != null) { + let transformedList = fromGeneratedImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedImageFromVertex(item); + }); + } + setValueByPath(toObject, ["generatedImages"], transformedList); + } + return toObject; +} +function embedContentConfigToMldev(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromTaskType = getValueByPath(fromObject, ["taskType"]); + if (parentObject !== void 0 && fromTaskType != null) { + setValueByPath(parentObject, ["requests[]", "taskType"], fromTaskType); + } + const fromTitle = getValueByPath(fromObject, ["title"]); + if (parentObject !== void 0 && fromTitle != null) { + setValueByPath(parentObject, ["requests[]", "title"], fromTitle); + } + const fromOutputDimensionality = getValueByPath(fromObject, [ + "outputDimensionality" + ]); + if (parentObject !== void 0 && fromOutputDimensionality != null) { + setValueByPath(parentObject, ["requests[]", "outputDimensionality"], fromOutputDimensionality); + } + if (getValueByPath(fromObject, ["mimeType"]) !== void 0) { + throw new Error("mimeType parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["autoTruncate"]) !== void 0) { + throw new Error("autoTruncate parameter is not supported in Gemini API."); + } + return toObject; +} +function embedContentConfigToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + let discriminatorTaskType = getValueByPath(rootObject, [ + "embeddingApiType" + ]); + if (discriminatorTaskType === void 0) { + discriminatorTaskType = "PREDICT"; + } + if (discriminatorTaskType === "PREDICT") { + const fromTaskType = getValueByPath(fromObject, ["taskType"]); + if (parentObject !== void 0 && fromTaskType != null) { + setValueByPath(parentObject, ["instances[]", "task_type"], fromTaskType); + } + } else if (discriminatorTaskType === "EMBED_CONTENT") { + const fromTaskType = getValueByPath(fromObject, ["taskType"]); + if (parentObject !== void 0 && fromTaskType != null) { + setValueByPath(parentObject, ["taskType"], fromTaskType); + } + } + let discriminatorTitle = getValueByPath(rootObject, [ + "embeddingApiType" + ]); + if (discriminatorTitle === void 0) { + discriminatorTitle = "PREDICT"; + } + if (discriminatorTitle === "PREDICT") { + const fromTitle = getValueByPath(fromObject, ["title"]); + if (parentObject !== void 0 && fromTitle != null) { + setValueByPath(parentObject, ["instances[]", "title"], fromTitle); + } + } else if (discriminatorTitle === "EMBED_CONTENT") { + const fromTitle = getValueByPath(fromObject, ["title"]); + if (parentObject !== void 0 && fromTitle != null) { + setValueByPath(parentObject, ["title"], fromTitle); + } + } + let discriminatorOutputDimensionality = getValueByPath(rootObject, [ + "embeddingApiType" + ]); + if (discriminatorOutputDimensionality === void 0) { + discriminatorOutputDimensionality = "PREDICT"; + } + if (discriminatorOutputDimensionality === "PREDICT") { + const fromOutputDimensionality = getValueByPath(fromObject, [ + "outputDimensionality" + ]); + if (parentObject !== void 0 && fromOutputDimensionality != null) { + setValueByPath(parentObject, ["parameters", "outputDimensionality"], fromOutputDimensionality); + } + } else if (discriminatorOutputDimensionality === "EMBED_CONTENT") { + const fromOutputDimensionality = getValueByPath(fromObject, [ + "outputDimensionality" + ]); + if (parentObject !== void 0 && fromOutputDimensionality != null) { + setValueByPath(parentObject, ["outputDimensionality"], fromOutputDimensionality); + } + } + let discriminatorMimeType = getValueByPath(rootObject, [ + "embeddingApiType" + ]); + if (discriminatorMimeType === void 0) { + discriminatorMimeType = "PREDICT"; + } + if (discriminatorMimeType === "PREDICT") { + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (parentObject !== void 0 && fromMimeType != null) { + setValueByPath(parentObject, ["instances[]", "mimeType"], fromMimeType); + } + } + let discriminatorAutoTruncate = getValueByPath(rootObject, [ + "embeddingApiType" + ]); + if (discriminatorAutoTruncate === void 0) { + discriminatorAutoTruncate = "PREDICT"; + } + if (discriminatorAutoTruncate === "PREDICT") { + const fromAutoTruncate = getValueByPath(fromObject, [ + "autoTruncate" + ]); + if (parentObject !== void 0 && fromAutoTruncate != null) { + setValueByPath(parentObject, ["parameters", "autoTruncate"], fromAutoTruncate); + } + } else if (discriminatorAutoTruncate === "EMBED_CONTENT") { + const fromAutoTruncate = getValueByPath(fromObject, [ + "autoTruncate" + ]); + if (parentObject !== void 0 && fromAutoTruncate != null) { + setValueByPath(parentObject, ["autoTruncate"], fromAutoTruncate); + } + } + return toObject; +} +function embedContentParametersPrivateToMldev(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContentsForEmbed(apiClient, fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["requests[]", "content"], transformedList); + } + const fromContent = getValueByPath(fromObject, ["content"]); + if (fromContent != null) { + contentToMldev$1(tContent(fromContent)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + embedContentConfigToMldev(fromConfig, toObject); + } + const fromModelForEmbedContent = getValueByPath(fromObject, ["model"]); + if (fromModelForEmbedContent !== void 0) { + setValueByPath(toObject, ["requests[]", "model"], tModel(apiClient, fromModelForEmbedContent)); + } + return toObject; +} +function embedContentParametersPrivateToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + let discriminatorContents = getValueByPath(rootObject, [ + "embeddingApiType" + ]); + if (discriminatorContents === void 0) { + discriminatorContents = "PREDICT"; + } + if (discriminatorContents === "PREDICT") { + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContentsForEmbed(apiClient, fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["instances[]", "content"], transformedList); + } + } + let discriminatorContent = getValueByPath(rootObject, [ + "embeddingApiType" + ]); + if (discriminatorContent === void 0) { + discriminatorContent = "PREDICT"; + } + if (discriminatorContent === "EMBED_CONTENT") { + const fromContent = getValueByPath(fromObject, ["content"]); + if (fromContent != null) { + setValueByPath(toObject, ["content"], tContent(fromContent)); + } + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + embedContentConfigToVertex(fromConfig, toObject, rootObject); + } + return toObject; +} +function embedContentResponseFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromEmbeddings = getValueByPath(fromObject, ["embeddings"]); + if (fromEmbeddings != null) { + let transformedList = fromEmbeddings; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["embeddings"], transformedList); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + return toObject; +} +function embedContentResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromEmbeddings = getValueByPath(fromObject, [ + "predictions[]", + "embeddings" + ]); + if (fromEmbeddings != null) { + let transformedList = fromEmbeddings; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return contentEmbeddingFromVertex(item); + }); + } + setValueByPath(toObject, ["embeddings"], transformedList); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + if (rootObject && getValueByPath(rootObject, ["embeddingApiType"]) === "EMBED_CONTENT") { + const embedding = getValueByPath(fromObject, ["embedding"]); + const usageMetadata = getValueByPath(fromObject, ["usageMetadata"]); + const truncated = getValueByPath(fromObject, ["truncated"]); + if (embedding) { + const stats = {}; + if (usageMetadata && usageMetadata["promptTokenCount"]) { + stats.tokenCount = usageMetadata["promptTokenCount"]; + } + if (truncated) { + stats.truncated = truncated; + } + embedding.statistics = stats; + setValueByPath(toObject, ["embeddings"], [embedding]); + } + } + return toObject; +} +function endpointFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["endpoint"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromDeployedModelId = getValueByPath(fromObject, [ + "deployedModelId" + ]); + if (fromDeployedModelId != null) { + setValueByPath(toObject, ["deployedModelId"], fromDeployedModelId); + } + return toObject; +} +function fileDataToMldev$1(fromObject, _rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromFileUri = getValueByPath(fromObject, ["fileUri"]); + if (fromFileUri != null) { + setValueByPath(toObject, ["fileUri"], fromFileUri); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function functionCallToMldev$1(fromObject, _rootObject) { + const toObject = {}; + const fromId = getValueByPath(fromObject, ["id"]); + if (fromId != null) { + setValueByPath(toObject, ["id"], fromId); + } + const fromArgs = getValueByPath(fromObject, ["args"]); + if (fromArgs != null) { + setValueByPath(toObject, ["args"], fromArgs); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + if (getValueByPath(fromObject, ["partialArgs"]) !== void 0) { + throw new Error("partialArgs parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["willContinue"]) !== void 0) { + throw new Error("willContinue parameter is not supported in Gemini API."); + } + return toObject; +} +function functionCallingConfigToMldev(fromObject, _rootObject) { + const toObject = {}; + const fromAllowedFunctionNames = getValueByPath(fromObject, [ + "allowedFunctionNames" + ]); + if (fromAllowedFunctionNames != null) { + setValueByPath(toObject, ["allowedFunctionNames"], fromAllowedFunctionNames); + } + const fromMode = getValueByPath(fromObject, ["mode"]); + if (fromMode != null) { + setValueByPath(toObject, ["mode"], fromMode); + } + if (getValueByPath(fromObject, ["streamFunctionCallArguments"]) !== void 0) { + throw new Error("streamFunctionCallArguments parameter is not supported in Gemini API."); + } + return toObject; +} +function functionDeclarationToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromDescription = getValueByPath(fromObject, ["description"]); + if (fromDescription != null) { + setValueByPath(toObject, ["description"], fromDescription); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromParameters = getValueByPath(fromObject, ["parameters"]); + if (fromParameters != null) { + setValueByPath(toObject, ["parameters"], fromParameters); + } + const fromParametersJsonSchema = getValueByPath(fromObject, [ + "parametersJsonSchema" + ]); + if (fromParametersJsonSchema != null) { + setValueByPath(toObject, ["parametersJsonSchema"], fromParametersJsonSchema); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], fromResponse); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + if (getValueByPath(fromObject, ["behavior"]) !== void 0) { + throw new Error("behavior parameter is not supported in Vertex AI."); + } + return toObject; +} +function generateContentConfigToMldev(apiClient, fromObject, parentObject, rootObject) { + const toObject = {}; + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["systemInstruction"], contentToMldev$1(tContent(fromSystemInstruction))); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (fromTemperature != null) { + setValueByPath(toObject, ["temperature"], fromTemperature); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (fromTopP != null) { + setValueByPath(toObject, ["topP"], fromTopP); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (fromTopK != null) { + setValueByPath(toObject, ["topK"], fromTopK); + } + const fromCandidateCount = getValueByPath(fromObject, [ + "candidateCount" + ]); + if (fromCandidateCount != null) { + setValueByPath(toObject, ["candidateCount"], fromCandidateCount); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (fromMaxOutputTokens != null) { + setValueByPath(toObject, ["maxOutputTokens"], fromMaxOutputTokens); + } + const fromStopSequences = getValueByPath(fromObject, [ + "stopSequences" + ]); + if (fromStopSequences != null) { + setValueByPath(toObject, ["stopSequences"], fromStopSequences); + } + const fromResponseLogprobs = getValueByPath(fromObject, [ + "responseLogprobs" + ]); + if (fromResponseLogprobs != null) { + setValueByPath(toObject, ["responseLogprobs"], fromResponseLogprobs); + } + const fromLogprobs = getValueByPath(fromObject, ["logprobs"]); + if (fromLogprobs != null) { + setValueByPath(toObject, ["logprobs"], fromLogprobs); + } + const fromPresencePenalty = getValueByPath(fromObject, [ + "presencePenalty" + ]); + if (fromPresencePenalty != null) { + setValueByPath(toObject, ["presencePenalty"], fromPresencePenalty); + } + const fromFrequencyPenalty = getValueByPath(fromObject, [ + "frequencyPenalty" + ]); + if (fromFrequencyPenalty != null) { + setValueByPath(toObject, ["frequencyPenalty"], fromFrequencyPenalty); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (fromSeed != null) { + setValueByPath(toObject, ["seed"], fromSeed); + } + const fromResponseMimeType = getValueByPath(fromObject, [ + "responseMimeType" + ]); + if (fromResponseMimeType != null) { + setValueByPath(toObject, ["responseMimeType"], fromResponseMimeType); + } + const fromResponseSchema = getValueByPath(fromObject, [ + "responseSchema" + ]); + if (fromResponseSchema != null) { + setValueByPath(toObject, ["responseSchema"], tSchema(fromResponseSchema)); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + if (getValueByPath(fromObject, ["routingConfig"]) !== void 0) { + throw new Error("routingConfig parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["modelSelectionConfig"]) !== void 0) { + throw new Error("modelSelectionConfig parameter is not supported in Gemini API."); + } + const fromSafetySettings = getValueByPath(fromObject, [ + "safetySettings" + ]); + if (parentObject !== void 0 && fromSafetySettings != null) { + let transformedList = fromSafetySettings; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return safetySettingToMldev(item); + }); + } + setValueByPath(parentObject, ["safetySettings"], transformedList); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = tTools(fromTools); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToMldev$1(tTool(item)); + }); + } + setValueByPath(parentObject, ["tools"], transformedList); + } + const fromToolConfig = getValueByPath(fromObject, ["toolConfig"]); + if (parentObject !== void 0 && fromToolConfig != null) { + setValueByPath(parentObject, ["toolConfig"], toolConfigToMldev(fromToolConfig)); + } + if (getValueByPath(fromObject, ["labels"]) !== void 0) { + throw new Error("labels parameter is not supported in Gemini API."); + } + const fromCachedContent = getValueByPath(fromObject, [ + "cachedContent" + ]); + if (parentObject !== void 0 && fromCachedContent != null) { + setValueByPath(parentObject, ["cachedContent"], tCachedContentName(apiClient, fromCachedContent)); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (fromResponseModalities != null) { + setValueByPath(toObject, ["responseModalities"], fromResponseModalities); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (fromSpeechConfig != null) { + setValueByPath(toObject, ["speechConfig"], tSpeechConfig(fromSpeechConfig)); + } + if (getValueByPath(fromObject, ["audioTimestamp"]) !== void 0) { + throw new Error("audioTimestamp parameter is not supported in Gemini API."); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (fromThinkingConfig != null) { + setValueByPath(toObject, ["thinkingConfig"], fromThinkingConfig); + } + const fromImageConfig = getValueByPath(fromObject, ["imageConfig"]); + if (fromImageConfig != null) { + setValueByPath(toObject, ["imageConfig"], imageConfigToMldev(fromImageConfig)); + } + const fromEnableEnhancedCivicAnswers = getValueByPath(fromObject, [ + "enableEnhancedCivicAnswers" + ]); + if (fromEnableEnhancedCivicAnswers != null) { + setValueByPath(toObject, ["enableEnhancedCivicAnswers"], fromEnableEnhancedCivicAnswers); + } + if (getValueByPath(fromObject, ["modelArmorConfig"]) !== void 0) { + throw new Error("modelArmorConfig parameter is not supported in Gemini API."); + } + return toObject; +} +function generateContentConfigToVertex(apiClient, fromObject, parentObject, rootObject) { + const toObject = {}; + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["systemInstruction"], tContent(fromSystemInstruction)); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (fromTemperature != null) { + setValueByPath(toObject, ["temperature"], fromTemperature); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (fromTopP != null) { + setValueByPath(toObject, ["topP"], fromTopP); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (fromTopK != null) { + setValueByPath(toObject, ["topK"], fromTopK); + } + const fromCandidateCount = getValueByPath(fromObject, [ + "candidateCount" + ]); + if (fromCandidateCount != null) { + setValueByPath(toObject, ["candidateCount"], fromCandidateCount); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (fromMaxOutputTokens != null) { + setValueByPath(toObject, ["maxOutputTokens"], fromMaxOutputTokens); + } + const fromStopSequences = getValueByPath(fromObject, [ + "stopSequences" + ]); + if (fromStopSequences != null) { + setValueByPath(toObject, ["stopSequences"], fromStopSequences); + } + const fromResponseLogprobs = getValueByPath(fromObject, [ + "responseLogprobs" + ]); + if (fromResponseLogprobs != null) { + setValueByPath(toObject, ["responseLogprobs"], fromResponseLogprobs); + } + const fromLogprobs = getValueByPath(fromObject, ["logprobs"]); + if (fromLogprobs != null) { + setValueByPath(toObject, ["logprobs"], fromLogprobs); + } + const fromPresencePenalty = getValueByPath(fromObject, [ + "presencePenalty" + ]); + if (fromPresencePenalty != null) { + setValueByPath(toObject, ["presencePenalty"], fromPresencePenalty); + } + const fromFrequencyPenalty = getValueByPath(fromObject, [ + "frequencyPenalty" + ]); + if (fromFrequencyPenalty != null) { + setValueByPath(toObject, ["frequencyPenalty"], fromFrequencyPenalty); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (fromSeed != null) { + setValueByPath(toObject, ["seed"], fromSeed); + } + const fromResponseMimeType = getValueByPath(fromObject, [ + "responseMimeType" + ]); + if (fromResponseMimeType != null) { + setValueByPath(toObject, ["responseMimeType"], fromResponseMimeType); + } + const fromResponseSchema = getValueByPath(fromObject, [ + "responseSchema" + ]); + if (fromResponseSchema != null) { + setValueByPath(toObject, ["responseSchema"], tSchema(fromResponseSchema)); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + const fromRoutingConfig = getValueByPath(fromObject, [ + "routingConfig" + ]); + if (fromRoutingConfig != null) { + setValueByPath(toObject, ["routingConfig"], fromRoutingConfig); + } + const fromModelSelectionConfig = getValueByPath(fromObject, [ + "modelSelectionConfig" + ]); + if (fromModelSelectionConfig != null) { + setValueByPath(toObject, ["modelConfig"], fromModelSelectionConfig); + } + const fromSafetySettings = getValueByPath(fromObject, [ + "safetySettings" + ]); + if (parentObject !== void 0 && fromSafetySettings != null) { + let transformedList = fromSafetySettings; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(parentObject, ["safetySettings"], transformedList); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = tTools(fromTools); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToVertex(tTool(item)); + }); + } + setValueByPath(parentObject, ["tools"], transformedList); + } + const fromToolConfig = getValueByPath(fromObject, ["toolConfig"]); + if (parentObject !== void 0 && fromToolConfig != null) { + setValueByPath(parentObject, ["toolConfig"], fromToolConfig); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (parentObject !== void 0 && fromLabels != null) { + setValueByPath(parentObject, ["labels"], fromLabels); + } + const fromCachedContent = getValueByPath(fromObject, [ + "cachedContent" + ]); + if (parentObject !== void 0 && fromCachedContent != null) { + setValueByPath(parentObject, ["cachedContent"], tCachedContentName(apiClient, fromCachedContent)); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (fromResponseModalities != null) { + setValueByPath(toObject, ["responseModalities"], fromResponseModalities); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (fromSpeechConfig != null) { + setValueByPath(toObject, ["speechConfig"], tSpeechConfig(fromSpeechConfig)); + } + const fromAudioTimestamp = getValueByPath(fromObject, [ + "audioTimestamp" + ]); + if (fromAudioTimestamp != null) { + setValueByPath(toObject, ["audioTimestamp"], fromAudioTimestamp); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (fromThinkingConfig != null) { + setValueByPath(toObject, ["thinkingConfig"], fromThinkingConfig); + } + const fromImageConfig = getValueByPath(fromObject, ["imageConfig"]); + if (fromImageConfig != null) { + setValueByPath(toObject, ["imageConfig"], imageConfigToVertex(fromImageConfig)); + } + if (getValueByPath(fromObject, ["enableEnhancedCivicAnswers"]) !== void 0) { + throw new Error("enableEnhancedCivicAnswers parameter is not supported in Vertex AI."); + } + const fromModelArmorConfig = getValueByPath(fromObject, [ + "modelArmorConfig" + ]); + if (parentObject !== void 0 && fromModelArmorConfig != null) { + setValueByPath(parentObject, ["modelArmorConfig"], fromModelArmorConfig); + } + return toObject; +} +function generateContentParametersToMldev(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return contentToMldev$1(item); + }); + } + setValueByPath(toObject, ["contents"], transformedList); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["generationConfig"], generateContentConfigToMldev(apiClient, fromConfig, toObject)); + } + return toObject; +} +function generateContentParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromContents = getValueByPath(fromObject, ["contents"]); + if (fromContents != null) { + let transformedList = tContents(fromContents); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["contents"], transformedList); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["generationConfig"], generateContentConfigToVertex(apiClient, fromConfig, toObject)); + } + return toObject; +} +function generateContentResponseFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromCandidates = getValueByPath(fromObject, ["candidates"]); + if (fromCandidates != null) { + let transformedList = fromCandidates; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return candidateFromMldev(item); + }); + } + setValueByPath(toObject, ["candidates"], transformedList); + } + const fromModelVersion = getValueByPath(fromObject, ["modelVersion"]); + if (fromModelVersion != null) { + setValueByPath(toObject, ["modelVersion"], fromModelVersion); + } + const fromPromptFeedback = getValueByPath(fromObject, [ + "promptFeedback" + ]); + if (fromPromptFeedback != null) { + setValueByPath(toObject, ["promptFeedback"], fromPromptFeedback); + } + const fromResponseId = getValueByPath(fromObject, ["responseId"]); + if (fromResponseId != null) { + setValueByPath(toObject, ["responseId"], fromResponseId); + } + const fromUsageMetadata = getValueByPath(fromObject, [ + "usageMetadata" + ]); + if (fromUsageMetadata != null) { + setValueByPath(toObject, ["usageMetadata"], fromUsageMetadata); + } + return toObject; +} +function generateContentResponseFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromCandidates = getValueByPath(fromObject, ["candidates"]); + if (fromCandidates != null) { + let transformedList = fromCandidates; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["candidates"], transformedList); + } + const fromCreateTime = getValueByPath(fromObject, ["createTime"]); + if (fromCreateTime != null) { + setValueByPath(toObject, ["createTime"], fromCreateTime); + } + const fromModelVersion = getValueByPath(fromObject, ["modelVersion"]); + if (fromModelVersion != null) { + setValueByPath(toObject, ["modelVersion"], fromModelVersion); + } + const fromPromptFeedback = getValueByPath(fromObject, [ + "promptFeedback" + ]); + if (fromPromptFeedback != null) { + setValueByPath(toObject, ["promptFeedback"], fromPromptFeedback); + } + const fromResponseId = getValueByPath(fromObject, ["responseId"]); + if (fromResponseId != null) { + setValueByPath(toObject, ["responseId"], fromResponseId); + } + const fromUsageMetadata = getValueByPath(fromObject, [ + "usageMetadata" + ]); + if (fromUsageMetadata != null) { + setValueByPath(toObject, ["usageMetadata"], fromUsageMetadata); + } + return toObject; +} +function generateImagesConfigToMldev(fromObject, parentObject, _rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["outputGcsUri"]) !== void 0) { + throw new Error("outputGcsUri parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["negativePrompt"]) !== void 0) { + throw new Error("negativePrompt parameter is not supported in Gemini API."); + } + const fromNumberOfImages = getValueByPath(fromObject, [ + "numberOfImages" + ]); + if (parentObject !== void 0 && fromNumberOfImages != null) { + setValueByPath(parentObject, ["parameters", "sampleCount"], fromNumberOfImages); + } + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (parentObject !== void 0 && fromAspectRatio != null) { + setValueByPath(parentObject, ["parameters", "aspectRatio"], fromAspectRatio); + } + const fromGuidanceScale = getValueByPath(fromObject, [ + "guidanceScale" + ]); + if (parentObject !== void 0 && fromGuidanceScale != null) { + setValueByPath(parentObject, ["parameters", "guidanceScale"], fromGuidanceScale); + } + if (getValueByPath(fromObject, ["seed"]) !== void 0) { + throw new Error("seed parameter is not supported in Gemini API."); + } + const fromSafetyFilterLevel = getValueByPath(fromObject, [ + "safetyFilterLevel" + ]); + if (parentObject !== void 0 && fromSafetyFilterLevel != null) { + setValueByPath(parentObject, ["parameters", "safetySetting"], fromSafetyFilterLevel); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (parentObject !== void 0 && fromPersonGeneration != null) { + setValueByPath(parentObject, ["parameters", "personGeneration"], fromPersonGeneration); + } + const fromIncludeSafetyAttributes = getValueByPath(fromObject, [ + "includeSafetyAttributes" + ]); + if (parentObject !== void 0 && fromIncludeSafetyAttributes != null) { + setValueByPath(parentObject, ["parameters", "includeSafetyAttributes"], fromIncludeSafetyAttributes); + } + const fromIncludeRaiReason = getValueByPath(fromObject, [ + "includeRaiReason" + ]); + if (parentObject !== void 0 && fromIncludeRaiReason != null) { + setValueByPath(parentObject, ["parameters", "includeRaiReason"], fromIncludeRaiReason); + } + const fromLanguage = getValueByPath(fromObject, ["language"]); + if (parentObject !== void 0 && fromLanguage != null) { + setValueByPath(parentObject, ["parameters", "language"], fromLanguage); + } + const fromOutputMimeType = getValueByPath(fromObject, [ + "outputMimeType" + ]); + if (parentObject !== void 0 && fromOutputMimeType != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "mimeType"], fromOutputMimeType); + } + const fromOutputCompressionQuality = getValueByPath(fromObject, [ + "outputCompressionQuality" + ]); + if (parentObject !== void 0 && fromOutputCompressionQuality != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "compressionQuality"], fromOutputCompressionQuality); + } + if (getValueByPath(fromObject, ["addWatermark"]) !== void 0) { + throw new Error("addWatermark parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["labels"]) !== void 0) { + throw new Error("labels parameter is not supported in Gemini API."); + } + const fromImageSize = getValueByPath(fromObject, ["imageSize"]); + if (parentObject !== void 0 && fromImageSize != null) { + setValueByPath(parentObject, ["parameters", "sampleImageSize"], fromImageSize); + } + if (getValueByPath(fromObject, ["enhancePrompt"]) !== void 0) { + throw new Error("enhancePrompt parameter is not supported in Gemini API."); + } + return toObject; +} +function generateImagesConfigToVertex(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromOutputGcsUri = getValueByPath(fromObject, ["outputGcsUri"]); + if (parentObject !== void 0 && fromOutputGcsUri != null) { + setValueByPath(parentObject, ["parameters", "storageUri"], fromOutputGcsUri); + } + const fromNegativePrompt = getValueByPath(fromObject, [ + "negativePrompt" + ]); + if (parentObject !== void 0 && fromNegativePrompt != null) { + setValueByPath(parentObject, ["parameters", "negativePrompt"], fromNegativePrompt); + } + const fromNumberOfImages = getValueByPath(fromObject, [ + "numberOfImages" + ]); + if (parentObject !== void 0 && fromNumberOfImages != null) { + setValueByPath(parentObject, ["parameters", "sampleCount"], fromNumberOfImages); + } + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (parentObject !== void 0 && fromAspectRatio != null) { + setValueByPath(parentObject, ["parameters", "aspectRatio"], fromAspectRatio); + } + const fromGuidanceScale = getValueByPath(fromObject, [ + "guidanceScale" + ]); + if (parentObject !== void 0 && fromGuidanceScale != null) { + setValueByPath(parentObject, ["parameters", "guidanceScale"], fromGuidanceScale); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (parentObject !== void 0 && fromSeed != null) { + setValueByPath(parentObject, ["parameters", "seed"], fromSeed); + } + const fromSafetyFilterLevel = getValueByPath(fromObject, [ + "safetyFilterLevel" + ]); + if (parentObject !== void 0 && fromSafetyFilterLevel != null) { + setValueByPath(parentObject, ["parameters", "safetySetting"], fromSafetyFilterLevel); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (parentObject !== void 0 && fromPersonGeneration != null) { + setValueByPath(parentObject, ["parameters", "personGeneration"], fromPersonGeneration); + } + const fromIncludeSafetyAttributes = getValueByPath(fromObject, [ + "includeSafetyAttributes" + ]); + if (parentObject !== void 0 && fromIncludeSafetyAttributes != null) { + setValueByPath(parentObject, ["parameters", "includeSafetyAttributes"], fromIncludeSafetyAttributes); + } + const fromIncludeRaiReason = getValueByPath(fromObject, [ + "includeRaiReason" + ]); + if (parentObject !== void 0 && fromIncludeRaiReason != null) { + setValueByPath(parentObject, ["parameters", "includeRaiReason"], fromIncludeRaiReason); + } + const fromLanguage = getValueByPath(fromObject, ["language"]); + if (parentObject !== void 0 && fromLanguage != null) { + setValueByPath(parentObject, ["parameters", "language"], fromLanguage); + } + const fromOutputMimeType = getValueByPath(fromObject, [ + "outputMimeType" + ]); + if (parentObject !== void 0 && fromOutputMimeType != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "mimeType"], fromOutputMimeType); + } + const fromOutputCompressionQuality = getValueByPath(fromObject, [ + "outputCompressionQuality" + ]); + if (parentObject !== void 0 && fromOutputCompressionQuality != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "compressionQuality"], fromOutputCompressionQuality); + } + const fromAddWatermark = getValueByPath(fromObject, ["addWatermark"]); + if (parentObject !== void 0 && fromAddWatermark != null) { + setValueByPath(parentObject, ["parameters", "addWatermark"], fromAddWatermark); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (parentObject !== void 0 && fromLabels != null) { + setValueByPath(parentObject, ["labels"], fromLabels); + } + const fromImageSize = getValueByPath(fromObject, ["imageSize"]); + if (parentObject !== void 0 && fromImageSize != null) { + setValueByPath(parentObject, ["parameters", "sampleImageSize"], fromImageSize); + } + const fromEnhancePrompt = getValueByPath(fromObject, [ + "enhancePrompt" + ]); + if (parentObject !== void 0 && fromEnhancePrompt != null) { + setValueByPath(parentObject, ["parameters", "enhancePrompt"], fromEnhancePrompt); + } + return toObject; +} +function generateImagesParametersToMldev(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (fromPrompt != null) { + setValueByPath(toObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + generateImagesConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function generateImagesParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (fromPrompt != null) { + setValueByPath(toObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + generateImagesConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function generateImagesResponseFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromGeneratedImages = getValueByPath(fromObject, [ + "predictions" + ]); + if (fromGeneratedImages != null) { + let transformedList = fromGeneratedImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedImageFromMldev(item); + }); + } + setValueByPath(toObject, ["generatedImages"], transformedList); + } + const fromPositivePromptSafetyAttributes = getValueByPath(fromObject, [ + "positivePromptSafetyAttributes" + ]); + if (fromPositivePromptSafetyAttributes != null) { + setValueByPath(toObject, ["positivePromptSafetyAttributes"], safetyAttributesFromMldev(fromPositivePromptSafetyAttributes)); + } + return toObject; +} +function generateImagesResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromGeneratedImages = getValueByPath(fromObject, [ + "predictions" + ]); + if (fromGeneratedImages != null) { + let transformedList = fromGeneratedImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedImageFromVertex(item); + }); + } + setValueByPath(toObject, ["generatedImages"], transformedList); + } + const fromPositivePromptSafetyAttributes = getValueByPath(fromObject, [ + "positivePromptSafetyAttributes" + ]); + if (fromPositivePromptSafetyAttributes != null) { + setValueByPath(toObject, ["positivePromptSafetyAttributes"], safetyAttributesFromVertex(fromPositivePromptSafetyAttributes)); + } + return toObject; +} +function generateVideosConfigToMldev(fromObject, parentObject, rootObject) { + const toObject = {}; + const fromNumberOfVideos = getValueByPath(fromObject, [ + "numberOfVideos" + ]); + if (parentObject !== void 0 && fromNumberOfVideos != null) { + setValueByPath(parentObject, ["parameters", "sampleCount"], fromNumberOfVideos); + } + if (getValueByPath(fromObject, ["outputGcsUri"]) !== void 0) { + throw new Error("outputGcsUri parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["fps"]) !== void 0) { + throw new Error("fps parameter is not supported in Gemini API."); + } + const fromDurationSeconds = getValueByPath(fromObject, [ + "durationSeconds" + ]); + if (parentObject !== void 0 && fromDurationSeconds != null) { + setValueByPath(parentObject, ["parameters", "durationSeconds"], fromDurationSeconds); + } + if (getValueByPath(fromObject, ["seed"]) !== void 0) { + throw new Error("seed parameter is not supported in Gemini API."); + } + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (parentObject !== void 0 && fromAspectRatio != null) { + setValueByPath(parentObject, ["parameters", "aspectRatio"], fromAspectRatio); + } + const fromResolution = getValueByPath(fromObject, ["resolution"]); + if (parentObject !== void 0 && fromResolution != null) { + setValueByPath(parentObject, ["parameters", "resolution"], fromResolution); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (parentObject !== void 0 && fromPersonGeneration != null) { + setValueByPath(parentObject, ["parameters", "personGeneration"], fromPersonGeneration); + } + if (getValueByPath(fromObject, ["pubsubTopic"]) !== void 0) { + throw new Error("pubsubTopic parameter is not supported in Gemini API."); + } + const fromNegativePrompt = getValueByPath(fromObject, [ + "negativePrompt" + ]); + if (parentObject !== void 0 && fromNegativePrompt != null) { + setValueByPath(parentObject, ["parameters", "negativePrompt"], fromNegativePrompt); + } + const fromEnhancePrompt = getValueByPath(fromObject, [ + "enhancePrompt" + ]); + if (parentObject !== void 0 && fromEnhancePrompt != null) { + setValueByPath(parentObject, ["parameters", "enhancePrompt"], fromEnhancePrompt); + } + if (getValueByPath(fromObject, ["generateAudio"]) !== void 0) { + throw new Error("generateAudio parameter is not supported in Gemini API."); + } + const fromLastFrame = getValueByPath(fromObject, ["lastFrame"]); + if (parentObject !== void 0 && fromLastFrame != null) { + setValueByPath(parentObject, ["instances[0]", "lastFrame"], imageToMldev(fromLastFrame)); + } + const fromReferenceImages = getValueByPath(fromObject, [ + "referenceImages" + ]); + if (parentObject !== void 0 && fromReferenceImages != null) { + let transformedList = fromReferenceImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return videoGenerationReferenceImageToMldev(item); + }); + } + setValueByPath(parentObject, ["instances[0]", "referenceImages"], transformedList); + } + if (getValueByPath(fromObject, ["mask"]) !== void 0) { + throw new Error("mask parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["compressionQuality"]) !== void 0) { + throw new Error("compressionQuality parameter is not supported in Gemini API."); + } + return toObject; +} +function generateVideosConfigToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + const fromNumberOfVideos = getValueByPath(fromObject, [ + "numberOfVideos" + ]); + if (parentObject !== void 0 && fromNumberOfVideos != null) { + setValueByPath(parentObject, ["parameters", "sampleCount"], fromNumberOfVideos); + } + const fromOutputGcsUri = getValueByPath(fromObject, ["outputGcsUri"]); + if (parentObject !== void 0 && fromOutputGcsUri != null) { + setValueByPath(parentObject, ["parameters", "storageUri"], fromOutputGcsUri); + } + const fromFps = getValueByPath(fromObject, ["fps"]); + if (parentObject !== void 0 && fromFps != null) { + setValueByPath(parentObject, ["parameters", "fps"], fromFps); + } + const fromDurationSeconds = getValueByPath(fromObject, [ + "durationSeconds" + ]); + if (parentObject !== void 0 && fromDurationSeconds != null) { + setValueByPath(parentObject, ["parameters", "durationSeconds"], fromDurationSeconds); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (parentObject !== void 0 && fromSeed != null) { + setValueByPath(parentObject, ["parameters", "seed"], fromSeed); + } + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (parentObject !== void 0 && fromAspectRatio != null) { + setValueByPath(parentObject, ["parameters", "aspectRatio"], fromAspectRatio); + } + const fromResolution = getValueByPath(fromObject, ["resolution"]); + if (parentObject !== void 0 && fromResolution != null) { + setValueByPath(parentObject, ["parameters", "resolution"], fromResolution); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (parentObject !== void 0 && fromPersonGeneration != null) { + setValueByPath(parentObject, ["parameters", "personGeneration"], fromPersonGeneration); + } + const fromPubsubTopic = getValueByPath(fromObject, ["pubsubTopic"]); + if (parentObject !== void 0 && fromPubsubTopic != null) { + setValueByPath(parentObject, ["parameters", "pubsubTopic"], fromPubsubTopic); + } + const fromNegativePrompt = getValueByPath(fromObject, [ + "negativePrompt" + ]); + if (parentObject !== void 0 && fromNegativePrompt != null) { + setValueByPath(parentObject, ["parameters", "negativePrompt"], fromNegativePrompt); + } + const fromEnhancePrompt = getValueByPath(fromObject, [ + "enhancePrompt" + ]); + if (parentObject !== void 0 && fromEnhancePrompt != null) { + setValueByPath(parentObject, ["parameters", "enhancePrompt"], fromEnhancePrompt); + } + const fromGenerateAudio = getValueByPath(fromObject, [ + "generateAudio" + ]); + if (parentObject !== void 0 && fromGenerateAudio != null) { + setValueByPath(parentObject, ["parameters", "generateAudio"], fromGenerateAudio); + } + const fromLastFrame = getValueByPath(fromObject, ["lastFrame"]); + if (parentObject !== void 0 && fromLastFrame != null) { + setValueByPath(parentObject, ["instances[0]", "lastFrame"], imageToVertex(fromLastFrame)); + } + const fromReferenceImages = getValueByPath(fromObject, [ + "referenceImages" + ]); + if (parentObject !== void 0 && fromReferenceImages != null) { + let transformedList = fromReferenceImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return videoGenerationReferenceImageToVertex(item); + }); + } + setValueByPath(parentObject, ["instances[0]", "referenceImages"], transformedList); + } + const fromMask = getValueByPath(fromObject, ["mask"]); + if (parentObject !== void 0 && fromMask != null) { + setValueByPath(parentObject, ["instances[0]", "mask"], videoGenerationMaskToVertex(fromMask)); + } + const fromCompressionQuality = getValueByPath(fromObject, [ + "compressionQuality" + ]); + if (parentObject !== void 0 && fromCompressionQuality != null) { + setValueByPath(parentObject, ["parameters", "compressionQuality"], fromCompressionQuality); + } + return toObject; +} +function generateVideosOperationFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromResponse = getValueByPath(fromObject, [ + "response", + "generateVideoResponse" + ]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], generateVideosResponseFromMldev(fromResponse)); + } + return toObject; +} +function generateVideosOperationFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], generateVideosResponseFromVertex(fromResponse)); + } + return toObject; +} +function generateVideosParametersToMldev(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (fromPrompt != null) { + setValueByPath(toObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromImage = getValueByPath(fromObject, ["image"]); + if (fromImage != null) { + setValueByPath(toObject, ["instances[0]", "image"], imageToMldev(fromImage)); + } + const fromVideo = getValueByPath(fromObject, ["video"]); + if (fromVideo != null) { + setValueByPath(toObject, ["instances[0]", "video"], videoToMldev(fromVideo)); + } + const fromSource = getValueByPath(fromObject, ["source"]); + if (fromSource != null) { + generateVideosSourceToMldev(fromSource, toObject); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + generateVideosConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function generateVideosParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (fromPrompt != null) { + setValueByPath(toObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromImage = getValueByPath(fromObject, ["image"]); + if (fromImage != null) { + setValueByPath(toObject, ["instances[0]", "image"], imageToVertex(fromImage)); + } + const fromVideo = getValueByPath(fromObject, ["video"]); + if (fromVideo != null) { + setValueByPath(toObject, ["instances[0]", "video"], videoToVertex(fromVideo)); + } + const fromSource = getValueByPath(fromObject, ["source"]); + if (fromSource != null) { + generateVideosSourceToVertex(fromSource, toObject); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + generateVideosConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function generateVideosResponseFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromGeneratedVideos = getValueByPath(fromObject, [ + "generatedSamples" + ]); + if (fromGeneratedVideos != null) { + let transformedList = fromGeneratedVideos; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedVideoFromMldev(item); + }); + } + setValueByPath(toObject, ["generatedVideos"], transformedList); + } + const fromRaiMediaFilteredCount = getValueByPath(fromObject, [ + "raiMediaFilteredCount" + ]); + if (fromRaiMediaFilteredCount != null) { + setValueByPath(toObject, ["raiMediaFilteredCount"], fromRaiMediaFilteredCount); + } + const fromRaiMediaFilteredReasons = getValueByPath(fromObject, [ + "raiMediaFilteredReasons" + ]); + if (fromRaiMediaFilteredReasons != null) { + setValueByPath(toObject, ["raiMediaFilteredReasons"], fromRaiMediaFilteredReasons); + } + return toObject; +} +function generateVideosResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromGeneratedVideos = getValueByPath(fromObject, ["videos"]); + if (fromGeneratedVideos != null) { + let transformedList = fromGeneratedVideos; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedVideoFromVertex(item); + }); + } + setValueByPath(toObject, ["generatedVideos"], transformedList); + } + const fromRaiMediaFilteredCount = getValueByPath(fromObject, [ + "raiMediaFilteredCount" + ]); + if (fromRaiMediaFilteredCount != null) { + setValueByPath(toObject, ["raiMediaFilteredCount"], fromRaiMediaFilteredCount); + } + const fromRaiMediaFilteredReasons = getValueByPath(fromObject, [ + "raiMediaFilteredReasons" + ]); + if (fromRaiMediaFilteredReasons != null) { + setValueByPath(toObject, ["raiMediaFilteredReasons"], fromRaiMediaFilteredReasons); + } + return toObject; +} +function generateVideosSourceToMldev(fromObject, parentObject, rootObject) { + const toObject = {}; + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (parentObject !== void 0 && fromPrompt != null) { + setValueByPath(parentObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromImage = getValueByPath(fromObject, ["image"]); + if (parentObject !== void 0 && fromImage != null) { + setValueByPath(parentObject, ["instances[0]", "image"], imageToMldev(fromImage)); + } + const fromVideo = getValueByPath(fromObject, ["video"]); + if (parentObject !== void 0 && fromVideo != null) { + setValueByPath(parentObject, ["instances[0]", "video"], videoToMldev(fromVideo)); + } + return toObject; +} +function generateVideosSourceToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (parentObject !== void 0 && fromPrompt != null) { + setValueByPath(parentObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromImage = getValueByPath(fromObject, ["image"]); + if (parentObject !== void 0 && fromImage != null) { + setValueByPath(parentObject, ["instances[0]", "image"], imageToVertex(fromImage)); + } + const fromVideo = getValueByPath(fromObject, ["video"]); + if (parentObject !== void 0 && fromVideo != null) { + setValueByPath(parentObject, ["instances[0]", "video"], videoToVertex(fromVideo)); + } + return toObject; +} +function generatedImageFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromImage = getValueByPath(fromObject, ["_self"]); + if (fromImage != null) { + setValueByPath(toObject, ["image"], imageFromMldev(fromImage)); + } + const fromRaiFilteredReason = getValueByPath(fromObject, [ + "raiFilteredReason" + ]); + if (fromRaiFilteredReason != null) { + setValueByPath(toObject, ["raiFilteredReason"], fromRaiFilteredReason); + } + const fromSafetyAttributes = getValueByPath(fromObject, ["_self"]); + if (fromSafetyAttributes != null) { + setValueByPath(toObject, ["safetyAttributes"], safetyAttributesFromMldev(fromSafetyAttributes)); + } + return toObject; +} +function generatedImageFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromImage = getValueByPath(fromObject, ["_self"]); + if (fromImage != null) { + setValueByPath(toObject, ["image"], imageFromVertex(fromImage)); + } + const fromRaiFilteredReason = getValueByPath(fromObject, [ + "raiFilteredReason" + ]); + if (fromRaiFilteredReason != null) { + setValueByPath(toObject, ["raiFilteredReason"], fromRaiFilteredReason); + } + const fromSafetyAttributes = getValueByPath(fromObject, ["_self"]); + if (fromSafetyAttributes != null) { + setValueByPath(toObject, ["safetyAttributes"], safetyAttributesFromVertex(fromSafetyAttributes)); + } + const fromEnhancedPrompt = getValueByPath(fromObject, ["prompt"]); + if (fromEnhancedPrompt != null) { + setValueByPath(toObject, ["enhancedPrompt"], fromEnhancedPrompt); + } + return toObject; +} +function generatedImageMaskFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromMask = getValueByPath(fromObject, ["_self"]); + if (fromMask != null) { + setValueByPath(toObject, ["mask"], imageFromVertex(fromMask)); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (fromLabels != null) { + let transformedList = fromLabels; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["labels"], transformedList); + } + return toObject; +} +function generatedVideoFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromVideo = getValueByPath(fromObject, ["video"]); + if (fromVideo != null) { + setValueByPath(toObject, ["video"], videoFromMldev(fromVideo)); + } + return toObject; +} +function generatedVideoFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromVideo = getValueByPath(fromObject, ["_self"]); + if (fromVideo != null) { + setValueByPath(toObject, ["video"], videoFromVertex(fromVideo)); + } + return toObject; +} +function generationConfigToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromModelSelectionConfig = getValueByPath(fromObject, [ + "modelSelectionConfig" + ]); + if (fromModelSelectionConfig != null) { + setValueByPath(toObject, ["modelConfig"], fromModelSelectionConfig); + } + const fromResponseJsonSchema = getValueByPath(fromObject, [ + "responseJsonSchema" + ]); + if (fromResponseJsonSchema != null) { + setValueByPath(toObject, ["responseJsonSchema"], fromResponseJsonSchema); + } + const fromAudioTimestamp = getValueByPath(fromObject, [ + "audioTimestamp" + ]); + if (fromAudioTimestamp != null) { + setValueByPath(toObject, ["audioTimestamp"], fromAudioTimestamp); + } + const fromCandidateCount = getValueByPath(fromObject, [ + "candidateCount" + ]); + if (fromCandidateCount != null) { + setValueByPath(toObject, ["candidateCount"], fromCandidateCount); + } + const fromEnableAffectiveDialog = getValueByPath(fromObject, [ + "enableAffectiveDialog" + ]); + if (fromEnableAffectiveDialog != null) { + setValueByPath(toObject, ["enableAffectiveDialog"], fromEnableAffectiveDialog); + } + const fromFrequencyPenalty = getValueByPath(fromObject, [ + "frequencyPenalty" + ]); + if (fromFrequencyPenalty != null) { + setValueByPath(toObject, ["frequencyPenalty"], fromFrequencyPenalty); + } + const fromLogprobs = getValueByPath(fromObject, ["logprobs"]); + if (fromLogprobs != null) { + setValueByPath(toObject, ["logprobs"], fromLogprobs); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (fromMaxOutputTokens != null) { + setValueByPath(toObject, ["maxOutputTokens"], fromMaxOutputTokens); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromPresencePenalty = getValueByPath(fromObject, [ + "presencePenalty" + ]); + if (fromPresencePenalty != null) { + setValueByPath(toObject, ["presencePenalty"], fromPresencePenalty); + } + const fromResponseLogprobs = getValueByPath(fromObject, [ + "responseLogprobs" + ]); + if (fromResponseLogprobs != null) { + setValueByPath(toObject, ["responseLogprobs"], fromResponseLogprobs); + } + const fromResponseMimeType = getValueByPath(fromObject, [ + "responseMimeType" + ]); + if (fromResponseMimeType != null) { + setValueByPath(toObject, ["responseMimeType"], fromResponseMimeType); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (fromResponseModalities != null) { + setValueByPath(toObject, ["responseModalities"], fromResponseModalities); + } + const fromResponseSchema = getValueByPath(fromObject, [ + "responseSchema" + ]); + if (fromResponseSchema != null) { + setValueByPath(toObject, ["responseSchema"], fromResponseSchema); + } + const fromRoutingConfig = getValueByPath(fromObject, [ + "routingConfig" + ]); + if (fromRoutingConfig != null) { + setValueByPath(toObject, ["routingConfig"], fromRoutingConfig); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (fromSeed != null) { + setValueByPath(toObject, ["seed"], fromSeed); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (fromSpeechConfig != null) { + setValueByPath(toObject, ["speechConfig"], fromSpeechConfig); + } + const fromStopSequences = getValueByPath(fromObject, [ + "stopSequences" + ]); + if (fromStopSequences != null) { + setValueByPath(toObject, ["stopSequences"], fromStopSequences); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (fromTemperature != null) { + setValueByPath(toObject, ["temperature"], fromTemperature); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (fromThinkingConfig != null) { + setValueByPath(toObject, ["thinkingConfig"], fromThinkingConfig); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (fromTopK != null) { + setValueByPath(toObject, ["topK"], fromTopK); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (fromTopP != null) { + setValueByPath(toObject, ["topP"], fromTopP); + } + if (getValueByPath(fromObject, ["enableEnhancedCivicAnswers"]) !== void 0) { + throw new Error("enableEnhancedCivicAnswers parameter is not supported in Vertex AI."); + } + return toObject; +} +function getModelParametersToMldev(apiClient, fromObject, _rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "name"], tModel(apiClient, fromModel)); + } + return toObject; +} +function getModelParametersToVertex(apiClient, fromObject, _rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "name"], tModel(apiClient, fromModel)); + } + return toObject; +} +function googleMapsToMldev$1(fromObject, _rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["authConfig"]) !== void 0) { + throw new Error("authConfig parameter is not supported in Gemini API."); + } + const fromEnableWidget = getValueByPath(fromObject, ["enableWidget"]); + if (fromEnableWidget != null) { + setValueByPath(toObject, ["enableWidget"], fromEnableWidget); + } + return toObject; +} +function googleSearchToMldev$1(fromObject, _rootObject) { + const toObject = {}; + const fromSearchTypes = getValueByPath(fromObject, ["searchTypes"]); + if (fromSearchTypes != null) { + setValueByPath(toObject, ["searchTypes"], fromSearchTypes); + } + if (getValueByPath(fromObject, ["excludeDomains"]) !== void 0) { + throw new Error("excludeDomains parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["blockingConfidence"]) !== void 0) { + throw new Error("blockingConfidence parameter is not supported in Gemini API."); + } + const fromTimeRangeFilter = getValueByPath(fromObject, [ + "timeRangeFilter" + ]); + if (fromTimeRangeFilter != null) { + setValueByPath(toObject, ["timeRangeFilter"], fromTimeRangeFilter); + } + return toObject; +} +function imageConfigToMldev(fromObject, _rootObject) { + const toObject = {}; + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (fromAspectRatio != null) { + setValueByPath(toObject, ["aspectRatio"], fromAspectRatio); + } + const fromImageSize = getValueByPath(fromObject, ["imageSize"]); + if (fromImageSize != null) { + setValueByPath(toObject, ["imageSize"], fromImageSize); + } + if (getValueByPath(fromObject, ["personGeneration"]) !== void 0) { + throw new Error("personGeneration parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["prominentPeople"]) !== void 0) { + throw new Error("prominentPeople parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["outputMimeType"]) !== void 0) { + throw new Error("outputMimeType parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["outputCompressionQuality"]) !== void 0) { + throw new Error("outputCompressionQuality parameter is not supported in Gemini API."); + } + return toObject; +} +function imageConfigToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromAspectRatio = getValueByPath(fromObject, ["aspectRatio"]); + if (fromAspectRatio != null) { + setValueByPath(toObject, ["aspectRatio"], fromAspectRatio); + } + const fromImageSize = getValueByPath(fromObject, ["imageSize"]); + if (fromImageSize != null) { + setValueByPath(toObject, ["imageSize"], fromImageSize); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (fromPersonGeneration != null) { + setValueByPath(toObject, ["personGeneration"], fromPersonGeneration); + } + const fromProminentPeople = getValueByPath(fromObject, [ + "prominentPeople" + ]); + if (fromProminentPeople != null) { + setValueByPath(toObject, ["prominentPeople"], fromProminentPeople); + } + const fromOutputMimeType = getValueByPath(fromObject, [ + "outputMimeType" + ]); + if (fromOutputMimeType != null) { + setValueByPath(toObject, ["imageOutputOptions", "mimeType"], fromOutputMimeType); + } + const fromOutputCompressionQuality = getValueByPath(fromObject, [ + "outputCompressionQuality" + ]); + if (fromOutputCompressionQuality != null) { + setValueByPath(toObject, ["imageOutputOptions", "compressionQuality"], fromOutputCompressionQuality); + } + return toObject; +} +function imageFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromImageBytes = getValueByPath(fromObject, [ + "bytesBase64Encoded" + ]); + if (fromImageBytes != null) { + setValueByPath(toObject, ["imageBytes"], tBytes(fromImageBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function imageFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (fromGcsUri != null) { + setValueByPath(toObject, ["gcsUri"], fromGcsUri); + } + const fromImageBytes = getValueByPath(fromObject, [ + "bytesBase64Encoded" + ]); + if (fromImageBytes != null) { + setValueByPath(toObject, ["imageBytes"], tBytes(fromImageBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function imageToMldev(fromObject, _rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["gcsUri"]) !== void 0) { + throw new Error("gcsUri parameter is not supported in Gemini API."); + } + const fromImageBytes = getValueByPath(fromObject, ["imageBytes"]); + if (fromImageBytes != null) { + setValueByPath(toObject, ["bytesBase64Encoded"], tBytes(fromImageBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function imageToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (fromGcsUri != null) { + setValueByPath(toObject, ["gcsUri"], fromGcsUri); + } + const fromImageBytes = getValueByPath(fromObject, ["imageBytes"]); + if (fromImageBytes != null) { + setValueByPath(toObject, ["bytesBase64Encoded"], tBytes(fromImageBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function listModelsConfigToMldev(apiClient, fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + const fromFilter = getValueByPath(fromObject, ["filter"]); + if (parentObject !== void 0 && fromFilter != null) { + setValueByPath(parentObject, ["_query", "filter"], fromFilter); + } + const fromQueryBase = getValueByPath(fromObject, ["queryBase"]); + if (parentObject !== void 0 && fromQueryBase != null) { + setValueByPath(parentObject, ["_url", "models_url"], tModelsUrl(apiClient, fromQueryBase)); + } + return toObject; +} +function listModelsConfigToVertex(apiClient, fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + const fromFilter = getValueByPath(fromObject, ["filter"]); + if (parentObject !== void 0 && fromFilter != null) { + setValueByPath(parentObject, ["_query", "filter"], fromFilter); + } + const fromQueryBase = getValueByPath(fromObject, ["queryBase"]); + if (parentObject !== void 0 && fromQueryBase != null) { + setValueByPath(parentObject, ["_url", "models_url"], tModelsUrl(apiClient, fromQueryBase)); + } + return toObject; +} +function listModelsParametersToMldev(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listModelsConfigToMldev(apiClient, fromConfig, toObject); + } + return toObject; +} +function listModelsParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listModelsConfigToVertex(apiClient, fromConfig, toObject); + } + return toObject; +} +function listModelsResponseFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromModels = getValueByPath(fromObject, ["_self"]); + if (fromModels != null) { + let transformedList = tExtractModels(fromModels); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return modelFromMldev(item); + }); + } + setValueByPath(toObject, ["models"], transformedList); + } + return toObject; +} +function listModelsResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromModels = getValueByPath(fromObject, ["_self"]); + if (fromModels != null) { + let transformedList = tExtractModels(fromModels); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return modelFromVertex(item); + }); + } + setValueByPath(toObject, ["models"], transformedList); + } + return toObject; +} +function maskReferenceConfigToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromMaskMode = getValueByPath(fromObject, ["maskMode"]); + if (fromMaskMode != null) { + setValueByPath(toObject, ["maskMode"], fromMaskMode); + } + const fromSegmentationClasses = getValueByPath(fromObject, [ + "segmentationClasses" + ]); + if (fromSegmentationClasses != null) { + setValueByPath(toObject, ["maskClasses"], fromSegmentationClasses); + } + const fromMaskDilation = getValueByPath(fromObject, ["maskDilation"]); + if (fromMaskDilation != null) { + setValueByPath(toObject, ["dilation"], fromMaskDilation); + } + return toObject; +} +function modelFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (fromDisplayName != null) { + setValueByPath(toObject, ["displayName"], fromDisplayName); + } + const fromDescription = getValueByPath(fromObject, ["description"]); + if (fromDescription != null) { + setValueByPath(toObject, ["description"], fromDescription); + } + const fromVersion = getValueByPath(fromObject, ["version"]); + if (fromVersion != null) { + setValueByPath(toObject, ["version"], fromVersion); + } + const fromTunedModelInfo = getValueByPath(fromObject, ["_self"]); + if (fromTunedModelInfo != null) { + setValueByPath(toObject, ["tunedModelInfo"], tunedModelInfoFromMldev(fromTunedModelInfo)); + } + const fromInputTokenLimit = getValueByPath(fromObject, [ + "inputTokenLimit" + ]); + if (fromInputTokenLimit != null) { + setValueByPath(toObject, ["inputTokenLimit"], fromInputTokenLimit); + } + const fromOutputTokenLimit = getValueByPath(fromObject, [ + "outputTokenLimit" + ]); + if (fromOutputTokenLimit != null) { + setValueByPath(toObject, ["outputTokenLimit"], fromOutputTokenLimit); + } + const fromSupportedActions = getValueByPath(fromObject, [ + "supportedGenerationMethods" + ]); + if (fromSupportedActions != null) { + setValueByPath(toObject, ["supportedActions"], fromSupportedActions); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (fromTemperature != null) { + setValueByPath(toObject, ["temperature"], fromTemperature); + } + const fromMaxTemperature = getValueByPath(fromObject, [ + "maxTemperature" + ]); + if (fromMaxTemperature != null) { + setValueByPath(toObject, ["maxTemperature"], fromMaxTemperature); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (fromTopP != null) { + setValueByPath(toObject, ["topP"], fromTopP); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (fromTopK != null) { + setValueByPath(toObject, ["topK"], fromTopK); + } + const fromThinking = getValueByPath(fromObject, ["thinking"]); + if (fromThinking != null) { + setValueByPath(toObject, ["thinking"], fromThinking); + } + return toObject; +} +function modelFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (fromDisplayName != null) { + setValueByPath(toObject, ["displayName"], fromDisplayName); + } + const fromDescription = getValueByPath(fromObject, ["description"]); + if (fromDescription != null) { + setValueByPath(toObject, ["description"], fromDescription); + } + const fromVersion = getValueByPath(fromObject, ["versionId"]); + if (fromVersion != null) { + setValueByPath(toObject, ["version"], fromVersion); + } + const fromEndpoints = getValueByPath(fromObject, ["deployedModels"]); + if (fromEndpoints != null) { + let transformedList = fromEndpoints; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return endpointFromVertex(item); + }); + } + setValueByPath(toObject, ["endpoints"], transformedList); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (fromLabels != null) { + setValueByPath(toObject, ["labels"], fromLabels); + } + const fromTunedModelInfo = getValueByPath(fromObject, ["_self"]); + if (fromTunedModelInfo != null) { + setValueByPath(toObject, ["tunedModelInfo"], tunedModelInfoFromVertex(fromTunedModelInfo)); + } + const fromDefaultCheckpointId = getValueByPath(fromObject, [ + "defaultCheckpointId" + ]); + if (fromDefaultCheckpointId != null) { + setValueByPath(toObject, ["defaultCheckpointId"], fromDefaultCheckpointId); + } + const fromCheckpoints = getValueByPath(fromObject, ["checkpoints"]); + if (fromCheckpoints != null) { + let transformedList = fromCheckpoints; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["checkpoints"], transformedList); + } + return toObject; +} +function partToMldev$1(fromObject, rootObject) { + const toObject = {}; + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromCodeExecutionResult = getValueByPath(fromObject, [ + "codeExecutionResult" + ]); + if (fromCodeExecutionResult != null) { + setValueByPath(toObject, ["codeExecutionResult"], fromCodeExecutionResult); + } + const fromExecutableCode = getValueByPath(fromObject, [ + "executableCode" + ]); + if (fromExecutableCode != null) { + setValueByPath(toObject, ["executableCode"], fromExecutableCode); + } + const fromFileData = getValueByPath(fromObject, ["fileData"]); + if (fromFileData != null) { + setValueByPath(toObject, ["fileData"], fileDataToMldev$1(fromFileData)); + } + const fromFunctionCall = getValueByPath(fromObject, ["functionCall"]); + if (fromFunctionCall != null) { + setValueByPath(toObject, ["functionCall"], functionCallToMldev$1(fromFunctionCall)); + } + const fromFunctionResponse = getValueByPath(fromObject, [ + "functionResponse" + ]); + if (fromFunctionResponse != null) { + setValueByPath(toObject, ["functionResponse"], fromFunctionResponse); + } + const fromInlineData = getValueByPath(fromObject, ["inlineData"]); + if (fromInlineData != null) { + setValueByPath(toObject, ["inlineData"], blobToMldev$1(fromInlineData)); + } + const fromText = getValueByPath(fromObject, ["text"]); + if (fromText != null) { + setValueByPath(toObject, ["text"], fromText); + } + const fromThought = getValueByPath(fromObject, ["thought"]); + if (fromThought != null) { + setValueByPath(toObject, ["thought"], fromThought); + } + const fromThoughtSignature = getValueByPath(fromObject, [ + "thoughtSignature" + ]); + if (fromThoughtSignature != null) { + setValueByPath(toObject, ["thoughtSignature"], fromThoughtSignature); + } + const fromVideoMetadata = getValueByPath(fromObject, [ + "videoMetadata" + ]); + if (fromVideoMetadata != null) { + setValueByPath(toObject, ["videoMetadata"], fromVideoMetadata); + } + return toObject; +} +function productImageToVertex(fromObject, rootObject) { + const toObject = {}; + const fromProductImage = getValueByPath(fromObject, ["productImage"]); + if (fromProductImage != null) { + setValueByPath(toObject, ["image"], imageToVertex(fromProductImage)); + } + return toObject; +} +function recontextImageConfigToVertex(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromNumberOfImages = getValueByPath(fromObject, [ + "numberOfImages" + ]); + if (parentObject !== void 0 && fromNumberOfImages != null) { + setValueByPath(parentObject, ["parameters", "sampleCount"], fromNumberOfImages); + } + const fromBaseSteps = getValueByPath(fromObject, ["baseSteps"]); + if (parentObject !== void 0 && fromBaseSteps != null) { + setValueByPath(parentObject, ["parameters", "baseSteps"], fromBaseSteps); + } + const fromOutputGcsUri = getValueByPath(fromObject, ["outputGcsUri"]); + if (parentObject !== void 0 && fromOutputGcsUri != null) { + setValueByPath(parentObject, ["parameters", "storageUri"], fromOutputGcsUri); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (parentObject !== void 0 && fromSeed != null) { + setValueByPath(parentObject, ["parameters", "seed"], fromSeed); + } + const fromSafetyFilterLevel = getValueByPath(fromObject, [ + "safetyFilterLevel" + ]); + if (parentObject !== void 0 && fromSafetyFilterLevel != null) { + setValueByPath(parentObject, ["parameters", "safetySetting"], fromSafetyFilterLevel); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (parentObject !== void 0 && fromPersonGeneration != null) { + setValueByPath(parentObject, ["parameters", "personGeneration"], fromPersonGeneration); + } + const fromAddWatermark = getValueByPath(fromObject, ["addWatermark"]); + if (parentObject !== void 0 && fromAddWatermark != null) { + setValueByPath(parentObject, ["parameters", "addWatermark"], fromAddWatermark); + } + const fromOutputMimeType = getValueByPath(fromObject, [ + "outputMimeType" + ]); + if (parentObject !== void 0 && fromOutputMimeType != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "mimeType"], fromOutputMimeType); + } + const fromOutputCompressionQuality = getValueByPath(fromObject, [ + "outputCompressionQuality" + ]); + if (parentObject !== void 0 && fromOutputCompressionQuality != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "compressionQuality"], fromOutputCompressionQuality); + } + const fromEnhancePrompt = getValueByPath(fromObject, [ + "enhancePrompt" + ]); + if (parentObject !== void 0 && fromEnhancePrompt != null) { + setValueByPath(parentObject, ["parameters", "enhancePrompt"], fromEnhancePrompt); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (parentObject !== void 0 && fromLabels != null) { + setValueByPath(parentObject, ["labels"], fromLabels); + } + return toObject; +} +function recontextImageParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromSource = getValueByPath(fromObject, ["source"]); + if (fromSource != null) { + recontextImageSourceToVertex(fromSource, toObject); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + recontextImageConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function recontextImageResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromGeneratedImages = getValueByPath(fromObject, [ + "predictions" + ]); + if (fromGeneratedImages != null) { + let transformedList = fromGeneratedImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedImageFromVertex(item); + }); + } + setValueByPath(toObject, ["generatedImages"], transformedList); + } + return toObject; +} +function recontextImageSourceToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (parentObject !== void 0 && fromPrompt != null) { + setValueByPath(parentObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromPersonImage = getValueByPath(fromObject, ["personImage"]); + if (parentObject !== void 0 && fromPersonImage != null) { + setValueByPath(parentObject, ["instances[0]", "personImage", "image"], imageToVertex(fromPersonImage)); + } + const fromProductImages = getValueByPath(fromObject, [ + "productImages" + ]); + if (parentObject !== void 0 && fromProductImages != null) { + let transformedList = fromProductImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return productImageToVertex(item); + }); + } + setValueByPath(parentObject, ["instances[0]", "productImages"], transformedList); + } + return toObject; +} +function referenceImageAPIInternalToVertex(fromObject, rootObject) { + const toObject = {}; + const fromReferenceImage = getValueByPath(fromObject, [ + "referenceImage" + ]); + if (fromReferenceImage != null) { + setValueByPath(toObject, ["referenceImage"], imageToVertex(fromReferenceImage)); + } + const fromReferenceId = getValueByPath(fromObject, ["referenceId"]); + if (fromReferenceId != null) { + setValueByPath(toObject, ["referenceId"], fromReferenceId); + } + const fromReferenceType = getValueByPath(fromObject, [ + "referenceType" + ]); + if (fromReferenceType != null) { + setValueByPath(toObject, ["referenceType"], fromReferenceType); + } + const fromMaskImageConfig = getValueByPath(fromObject, [ + "maskImageConfig" + ]); + if (fromMaskImageConfig != null) { + setValueByPath(toObject, ["maskImageConfig"], maskReferenceConfigToVertex(fromMaskImageConfig)); + } + const fromControlImageConfig = getValueByPath(fromObject, [ + "controlImageConfig" + ]); + if (fromControlImageConfig != null) { + setValueByPath(toObject, ["controlImageConfig"], controlReferenceConfigToVertex(fromControlImageConfig)); + } + const fromStyleImageConfig = getValueByPath(fromObject, [ + "styleImageConfig" + ]); + if (fromStyleImageConfig != null) { + setValueByPath(toObject, ["styleImageConfig"], fromStyleImageConfig); + } + const fromSubjectImageConfig = getValueByPath(fromObject, [ + "subjectImageConfig" + ]); + if (fromSubjectImageConfig != null) { + setValueByPath(toObject, ["subjectImageConfig"], fromSubjectImageConfig); + } + return toObject; +} +function safetyAttributesFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromCategories = getValueByPath(fromObject, [ + "safetyAttributes", + "categories" + ]); + if (fromCategories != null) { + setValueByPath(toObject, ["categories"], fromCategories); + } + const fromScores = getValueByPath(fromObject, [ + "safetyAttributes", + "scores" + ]); + if (fromScores != null) { + setValueByPath(toObject, ["scores"], fromScores); + } + const fromContentType = getValueByPath(fromObject, ["contentType"]); + if (fromContentType != null) { + setValueByPath(toObject, ["contentType"], fromContentType); + } + return toObject; +} +function safetyAttributesFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromCategories = getValueByPath(fromObject, [ + "safetyAttributes", + "categories" + ]); + if (fromCategories != null) { + setValueByPath(toObject, ["categories"], fromCategories); + } + const fromScores = getValueByPath(fromObject, [ + "safetyAttributes", + "scores" + ]); + if (fromScores != null) { + setValueByPath(toObject, ["scores"], fromScores); + } + const fromContentType = getValueByPath(fromObject, ["contentType"]); + if (fromContentType != null) { + setValueByPath(toObject, ["contentType"], fromContentType); + } + return toObject; +} +function safetySettingToMldev(fromObject, _rootObject) { + const toObject = {}; + const fromCategory = getValueByPath(fromObject, ["category"]); + if (fromCategory != null) { + setValueByPath(toObject, ["category"], fromCategory); + } + if (getValueByPath(fromObject, ["method"]) !== void 0) { + throw new Error("method parameter is not supported in Gemini API."); + } + const fromThreshold = getValueByPath(fromObject, ["threshold"]); + if (fromThreshold != null) { + setValueByPath(toObject, ["threshold"], fromThreshold); + } + return toObject; +} +function scribbleImageToVertex(fromObject, rootObject) { + const toObject = {}; + const fromImage = getValueByPath(fromObject, ["image"]); + if (fromImage != null) { + setValueByPath(toObject, ["image"], imageToVertex(fromImage)); + } + return toObject; +} +function segmentImageConfigToVertex(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromMode = getValueByPath(fromObject, ["mode"]); + if (parentObject !== void 0 && fromMode != null) { + setValueByPath(parentObject, ["parameters", "mode"], fromMode); + } + const fromMaxPredictions = getValueByPath(fromObject, [ + "maxPredictions" + ]); + if (parentObject !== void 0 && fromMaxPredictions != null) { + setValueByPath(parentObject, ["parameters", "maxPredictions"], fromMaxPredictions); + } + const fromConfidenceThreshold = getValueByPath(fromObject, [ + "confidenceThreshold" + ]); + if (parentObject !== void 0 && fromConfidenceThreshold != null) { + setValueByPath(parentObject, ["parameters", "confidenceThreshold"], fromConfidenceThreshold); + } + const fromMaskDilation = getValueByPath(fromObject, ["maskDilation"]); + if (parentObject !== void 0 && fromMaskDilation != null) { + setValueByPath(parentObject, ["parameters", "maskDilation"], fromMaskDilation); + } + const fromBinaryColorThreshold = getValueByPath(fromObject, [ + "binaryColorThreshold" + ]); + if (parentObject !== void 0 && fromBinaryColorThreshold != null) { + setValueByPath(parentObject, ["parameters", "binaryColorThreshold"], fromBinaryColorThreshold); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (parentObject !== void 0 && fromLabels != null) { + setValueByPath(parentObject, ["labels"], fromLabels); + } + return toObject; +} +function segmentImageParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromSource = getValueByPath(fromObject, ["source"]); + if (fromSource != null) { + segmentImageSourceToVertex(fromSource, toObject); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + segmentImageConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function segmentImageResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromGeneratedMasks = getValueByPath(fromObject, ["predictions"]); + if (fromGeneratedMasks != null) { + let transformedList = fromGeneratedMasks; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedImageMaskFromVertex(item); + }); + } + setValueByPath(toObject, ["generatedMasks"], transformedList); + } + return toObject; +} +function segmentImageSourceToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + const fromPrompt = getValueByPath(fromObject, ["prompt"]); + if (parentObject !== void 0 && fromPrompt != null) { + setValueByPath(parentObject, ["instances[0]", "prompt"], fromPrompt); + } + const fromImage = getValueByPath(fromObject, ["image"]); + if (parentObject !== void 0 && fromImage != null) { + setValueByPath(parentObject, ["instances[0]", "image"], imageToVertex(fromImage)); + } + const fromScribbleImage = getValueByPath(fromObject, [ + "scribbleImage" + ]); + if (parentObject !== void 0 && fromScribbleImage != null) { + setValueByPath(parentObject, ["instances[0]", "scribble"], scribbleImageToVertex(fromScribbleImage)); + } + return toObject; +} +function toolConfigToMldev(fromObject, rootObject) { + const toObject = {}; + const fromRetrievalConfig = getValueByPath(fromObject, [ + "retrievalConfig" + ]); + if (fromRetrievalConfig != null) { + setValueByPath(toObject, ["retrievalConfig"], fromRetrievalConfig); + } + const fromFunctionCallingConfig = getValueByPath(fromObject, [ + "functionCallingConfig" + ]); + if (fromFunctionCallingConfig != null) { + setValueByPath(toObject, ["functionCallingConfig"], functionCallingConfigToMldev(fromFunctionCallingConfig)); + } + return toObject; +} +function toolToMldev$1(fromObject, rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["retrieval"]) !== void 0) { + throw new Error("retrieval parameter is not supported in Gemini API."); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + const fromFileSearch = getValueByPath(fromObject, ["fileSearch"]); + if (fromFileSearch != null) { + setValueByPath(toObject, ["fileSearch"], fromFileSearch); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], googleSearchToMldev$1(fromGoogleSearch)); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + if (getValueByPath(fromObject, ["enterpriseWebSearch"]) !== void 0) { + throw new Error("enterpriseWebSearch parameter is not supported in Gemini API."); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], googleMapsToMldev$1(fromGoogleMaps)); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + const fromMcpServers = getValueByPath(fromObject, ["mcpServers"]); + if (fromMcpServers != null) { + let transformedList = fromMcpServers; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["mcpServers"], transformedList); + } + return toObject; +} +function toolToVertex(fromObject, rootObject) { + const toObject = {}; + const fromRetrieval = getValueByPath(fromObject, ["retrieval"]); + if (fromRetrieval != null) { + setValueByPath(toObject, ["retrieval"], fromRetrieval); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + if (getValueByPath(fromObject, ["fileSearch"]) !== void 0) { + throw new Error("fileSearch parameter is not supported in Vertex AI."); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], fromGoogleSearch); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + const fromEnterpriseWebSearch = getValueByPath(fromObject, [ + "enterpriseWebSearch" + ]); + if (fromEnterpriseWebSearch != null) { + setValueByPath(toObject, ["enterpriseWebSearch"], fromEnterpriseWebSearch); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return functionDeclarationToVertex(item); + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], fromGoogleMaps); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + if (getValueByPath(fromObject, ["mcpServers"]) !== void 0) { + throw new Error("mcpServers parameter is not supported in Vertex AI."); + } + return toObject; +} +function tunedModelInfoFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromBaseModel = getValueByPath(fromObject, ["baseModel"]); + if (fromBaseModel != null) { + setValueByPath(toObject, ["baseModel"], fromBaseModel); + } + const fromCreateTime = getValueByPath(fromObject, ["createTime"]); + if (fromCreateTime != null) { + setValueByPath(toObject, ["createTime"], fromCreateTime); + } + const fromUpdateTime = getValueByPath(fromObject, ["updateTime"]); + if (fromUpdateTime != null) { + setValueByPath(toObject, ["updateTime"], fromUpdateTime); + } + return toObject; +} +function tunedModelInfoFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromBaseModel = getValueByPath(fromObject, [ + "labels", + "google-vertex-llm-tuning-base-model-id" + ]); + if (fromBaseModel != null) { + setValueByPath(toObject, ["baseModel"], fromBaseModel); + } + const fromCreateTime = getValueByPath(fromObject, ["createTime"]); + if (fromCreateTime != null) { + setValueByPath(toObject, ["createTime"], fromCreateTime); + } + const fromUpdateTime = getValueByPath(fromObject, ["updateTime"]); + if (fromUpdateTime != null) { + setValueByPath(toObject, ["updateTime"], fromUpdateTime); + } + return toObject; +} +function updateModelConfigToMldev(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromDisplayName); + } + const fromDescription = getValueByPath(fromObject, ["description"]); + if (parentObject !== void 0 && fromDescription != null) { + setValueByPath(parentObject, ["description"], fromDescription); + } + const fromDefaultCheckpointId = getValueByPath(fromObject, [ + "defaultCheckpointId" + ]); + if (parentObject !== void 0 && fromDefaultCheckpointId != null) { + setValueByPath(parentObject, ["defaultCheckpointId"], fromDefaultCheckpointId); + } + return toObject; +} +function updateModelConfigToVertex(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromDisplayName); + } + const fromDescription = getValueByPath(fromObject, ["description"]); + if (parentObject !== void 0 && fromDescription != null) { + setValueByPath(parentObject, ["description"], fromDescription); + } + const fromDefaultCheckpointId = getValueByPath(fromObject, [ + "defaultCheckpointId" + ]); + if (parentObject !== void 0 && fromDefaultCheckpointId != null) { + setValueByPath(parentObject, ["defaultCheckpointId"], fromDefaultCheckpointId); + } + return toObject; +} +function updateModelParametersToMldev(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "name"], tModel(apiClient, fromModel)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + updateModelConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function updateModelParametersToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + updateModelConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function upscaleImageAPIConfigInternalToVertex(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromOutputGcsUri = getValueByPath(fromObject, ["outputGcsUri"]); + if (parentObject !== void 0 && fromOutputGcsUri != null) { + setValueByPath(parentObject, ["parameters", "storageUri"], fromOutputGcsUri); + } + const fromSafetyFilterLevel = getValueByPath(fromObject, [ + "safetyFilterLevel" + ]); + if (parentObject !== void 0 && fromSafetyFilterLevel != null) { + setValueByPath(parentObject, ["parameters", "safetySetting"], fromSafetyFilterLevel); + } + const fromPersonGeneration = getValueByPath(fromObject, [ + "personGeneration" + ]); + if (parentObject !== void 0 && fromPersonGeneration != null) { + setValueByPath(parentObject, ["parameters", "personGeneration"], fromPersonGeneration); + } + const fromIncludeRaiReason = getValueByPath(fromObject, [ + "includeRaiReason" + ]); + if (parentObject !== void 0 && fromIncludeRaiReason != null) { + setValueByPath(parentObject, ["parameters", "includeRaiReason"], fromIncludeRaiReason); + } + const fromOutputMimeType = getValueByPath(fromObject, [ + "outputMimeType" + ]); + if (parentObject !== void 0 && fromOutputMimeType != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "mimeType"], fromOutputMimeType); + } + const fromOutputCompressionQuality = getValueByPath(fromObject, [ + "outputCompressionQuality" + ]); + if (parentObject !== void 0 && fromOutputCompressionQuality != null) { + setValueByPath(parentObject, ["parameters", "outputOptions", "compressionQuality"], fromOutputCompressionQuality); + } + const fromEnhanceInputImage = getValueByPath(fromObject, [ + "enhanceInputImage" + ]); + if (parentObject !== void 0 && fromEnhanceInputImage != null) { + setValueByPath(parentObject, ["parameters", "upscaleConfig", "enhanceInputImage"], fromEnhanceInputImage); + } + const fromImagePreservationFactor = getValueByPath(fromObject, [ + "imagePreservationFactor" + ]); + if (parentObject !== void 0 && fromImagePreservationFactor != null) { + setValueByPath(parentObject, ["parameters", "upscaleConfig", "imagePreservationFactor"], fromImagePreservationFactor); + } + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (parentObject !== void 0 && fromLabels != null) { + setValueByPath(parentObject, ["labels"], fromLabels); + } + const fromNumberOfImages = getValueByPath(fromObject, [ + "numberOfImages" + ]); + if (parentObject !== void 0 && fromNumberOfImages != null) { + setValueByPath(parentObject, ["parameters", "sampleCount"], fromNumberOfImages); + } + const fromMode = getValueByPath(fromObject, ["mode"]); + if (parentObject !== void 0 && fromMode != null) { + setValueByPath(parentObject, ["parameters", "mode"], fromMode); + } + return toObject; +} +function upscaleImageAPIParametersInternalToVertex(apiClient, fromObject, rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["_url", "model"], tModel(apiClient, fromModel)); + } + const fromImage = getValueByPath(fromObject, ["image"]); + if (fromImage != null) { + setValueByPath(toObject, ["instances[0]", "image"], imageToVertex(fromImage)); + } + const fromUpscaleFactor = getValueByPath(fromObject, [ + "upscaleFactor" + ]); + if (fromUpscaleFactor != null) { + setValueByPath(toObject, ["parameters", "upscaleConfig", "upscaleFactor"], fromUpscaleFactor); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + upscaleImageAPIConfigInternalToVertex(fromConfig, toObject); + } + return toObject; +} +function upscaleImageResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromGeneratedImages = getValueByPath(fromObject, [ + "predictions" + ]); + if (fromGeneratedImages != null) { + let transformedList = fromGeneratedImages; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return generatedImageFromVertex(item); + }); + } + setValueByPath(toObject, ["generatedImages"], transformedList); + } + return toObject; +} +function videoFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromUri = getValueByPath(fromObject, ["uri"]); + if (fromUri != null) { + setValueByPath(toObject, ["uri"], fromUri); + } + const fromVideoBytes = getValueByPath(fromObject, ["encodedVideo"]); + if (fromVideoBytes != null) { + setValueByPath(toObject, ["videoBytes"], tBytes(fromVideoBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["encoding"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function videoFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromUri = getValueByPath(fromObject, ["gcsUri"]); + if (fromUri != null) { + setValueByPath(toObject, ["uri"], fromUri); + } + const fromVideoBytes = getValueByPath(fromObject, [ + "bytesBase64Encoded" + ]); + if (fromVideoBytes != null) { + setValueByPath(toObject, ["videoBytes"], tBytes(fromVideoBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function videoGenerationMaskToVertex(fromObject, rootObject) { + const toObject = {}; + const fromImage = getValueByPath(fromObject, ["image"]); + if (fromImage != null) { + setValueByPath(toObject, ["_self"], imageToVertex(fromImage)); + } + const fromMaskMode = getValueByPath(fromObject, ["maskMode"]); + if (fromMaskMode != null) { + setValueByPath(toObject, ["maskMode"], fromMaskMode); + } + return toObject; +} +function videoGenerationReferenceImageToMldev(fromObject, rootObject) { + const toObject = {}; + const fromImage = getValueByPath(fromObject, ["image"]); + if (fromImage != null) { + setValueByPath(toObject, ["image"], imageToMldev(fromImage)); + } + const fromReferenceType = getValueByPath(fromObject, [ + "referenceType" + ]); + if (fromReferenceType != null) { + setValueByPath(toObject, ["referenceType"], fromReferenceType); + } + return toObject; +} +function videoGenerationReferenceImageToVertex(fromObject, rootObject) { + const toObject = {}; + const fromImage = getValueByPath(fromObject, ["image"]); + if (fromImage != null) { + setValueByPath(toObject, ["image"], imageToVertex(fromImage)); + } + const fromReferenceType = getValueByPath(fromObject, [ + "referenceType" + ]); + if (fromReferenceType != null) { + setValueByPath(toObject, ["referenceType"], fromReferenceType); + } + return toObject; +} +function videoToMldev(fromObject, _rootObject) { + const toObject = {}; + const fromUri = getValueByPath(fromObject, ["uri"]); + if (fromUri != null) { + setValueByPath(toObject, ["uri"], fromUri); + } + const fromVideoBytes = getValueByPath(fromObject, ["videoBytes"]); + if (fromVideoBytes != null) { + setValueByPath(toObject, ["encodedVideo"], tBytes(fromVideoBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["encoding"], fromMimeType); + } + return toObject; +} +function videoToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromUri = getValueByPath(fromObject, ["uri"]); + if (fromUri != null) { + setValueByPath(toObject, ["gcsUri"], fromUri); + } + const fromVideoBytes = getValueByPath(fromObject, ["videoBytes"]); + if (fromVideoBytes != null) { + setValueByPath(toObject, ["bytesBase64Encoded"], tBytes(fromVideoBytes)); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function createFileSearchStoreConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromDisplayName); + } + return toObject; +} +function createFileSearchStoreParametersToMldev(fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createFileSearchStoreConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function deleteFileSearchStoreConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromForce = getValueByPath(fromObject, ["force"]); + if (parentObject !== void 0 && fromForce != null) { + setValueByPath(parentObject, ["_query", "force"], fromForce); + } + return toObject; +} +function deleteFileSearchStoreParametersToMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + deleteFileSearchStoreConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function getFileSearchStoreParametersToMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); + } + return toObject; +} +function importFileConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromCustomMetadata = getValueByPath(fromObject, [ + "customMetadata" + ]); + if (parentObject !== void 0 && fromCustomMetadata != null) { + let transformedList = fromCustomMetadata; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(parentObject, ["customMetadata"], transformedList); + } + const fromChunkingConfig = getValueByPath(fromObject, [ + "chunkingConfig" + ]); + if (parentObject !== void 0 && fromChunkingConfig != null) { + setValueByPath(parentObject, ["chunkingConfig"], fromChunkingConfig); + } + return toObject; +} +function importFileOperationFromMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); + } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromResponse = getValueByPath(fromObject, ["response"]); + if (fromResponse != null) { + setValueByPath(toObject, ["response"], importFileResponseFromMldev(fromResponse)); + } + return toObject; +} +function importFileParametersToMldev(fromObject) { + const toObject = {}; + const fromFileSearchStoreName = getValueByPath(fromObject, [ + "fileSearchStoreName" + ]); + if (fromFileSearchStoreName != null) { + setValueByPath(toObject, ["_url", "file_search_store_name"], fromFileSearchStoreName); + } + const fromFileName = getValueByPath(fromObject, ["fileName"]); + if (fromFileName != null) { + setValueByPath(toObject, ["fileName"], fromFileName); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + importFileConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function importFileResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromParent = getValueByPath(fromObject, ["parent"]); + if (fromParent != null) { + setValueByPath(toObject, ["parent"], fromParent); + } + const fromDocumentName = getValueByPath(fromObject, ["documentName"]); + if (fromDocumentName != null) { + setValueByPath(toObject, ["documentName"], fromDocumentName); + } + return toObject; +} +function listFileSearchStoresConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + return toObject; +} +function listFileSearchStoresParametersToMldev(fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listFileSearchStoresConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function listFileSearchStoresResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromFileSearchStores = getValueByPath(fromObject, [ + "fileSearchStores" + ]); + if (fromFileSearchStores != null) { + let transformedList = fromFileSearchStores; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["fileSearchStores"], transformedList); + } + return toObject; +} +function uploadToFileSearchStoreConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (parentObject !== void 0 && fromMimeType != null) { + setValueByPath(parentObject, ["mimeType"], fromMimeType); + } + const fromDisplayName = getValueByPath(fromObject, ["displayName"]); + if (parentObject !== void 0 && fromDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromDisplayName); + } + const fromCustomMetadata = getValueByPath(fromObject, [ + "customMetadata" + ]); + if (parentObject !== void 0 && fromCustomMetadata != null) { + let transformedList = fromCustomMetadata; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(parentObject, ["customMetadata"], transformedList); + } + const fromChunkingConfig = getValueByPath(fromObject, [ + "chunkingConfig" + ]); + if (parentObject !== void 0 && fromChunkingConfig != null) { + setValueByPath(parentObject, ["chunkingConfig"], fromChunkingConfig); + } + return toObject; +} +function uploadToFileSearchStoreParametersToMldev(fromObject) { + const toObject = {}; + const fromFileSearchStoreName = getValueByPath(fromObject, [ + "fileSearchStoreName" + ]); + if (fromFileSearchStoreName != null) { + setValueByPath(toObject, ["_url", "file_search_store_name"], fromFileSearchStoreName); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + uploadToFileSearchStoreConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function uploadToFileSearchStoreResumableResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; +} +var CONTENT_TYPE_HEADER = "Content-Type"; +var SERVER_TIMEOUT_HEADER = "X-Server-Timeout"; +var USER_AGENT_HEADER = "User-Agent"; +var GOOGLE_API_CLIENT_HEADER = "x-goog-api-client"; +var SDK_VERSION = "1.43.0"; +var LIBRARY_LABEL = `google-genai-sdk/${SDK_VERSION}`; +var VERTEX_AI_API_DEFAULT_VERSION = "v1beta1"; +var GOOGLE_AI_API_DEFAULT_VERSION = "v1beta"; +var DEFAULT_RETRY_ATTEMPTS = 5; +var DEFAULT_RETRY_HTTP_STATUS_CODES = [ + 408, + // Request timeout + 429, + // Too many requests + 500, + // Internal server error + 502, + // Bad gateway + 503, + // Service unavailable + 504 + // Gateway timeout +]; +var ApiClient = class { + constructor(opts) { + var _a3, _b, _c; + this.clientOptions = Object.assign({}, opts); + this.customBaseUrl = (_a3 = opts.httpOptions) === null || _a3 === void 0 ? void 0 : _a3.baseUrl; + if (this.clientOptions.vertexai) { + if (this.clientOptions.project && this.clientOptions.location) { + this.clientOptions.apiKey = void 0; + } else if (this.clientOptions.apiKey) { + this.clientOptions.project = void 0; + this.clientOptions.location = void 0; + } + } + const initHttpOptions = {}; + if (this.clientOptions.vertexai) { + if (!this.clientOptions.location && !this.clientOptions.apiKey && !this.customBaseUrl) { + this.clientOptions.location = "global"; + } + const hasSufficientAuth = this.clientOptions.project && this.clientOptions.location || this.clientOptions.apiKey; + if (!hasSufficientAuth && !this.customBaseUrl) { + throw new Error("Authentication is not set up. Please provide either a project and location, or an API key, or a custom base URL."); + } + const hasConstructorAuth = opts.project && opts.location || !!opts.apiKey; + if (this.customBaseUrl && !hasConstructorAuth) { + initHttpOptions.baseUrl = this.customBaseUrl; + this.clientOptions.project = void 0; + this.clientOptions.location = void 0; + } else if (this.clientOptions.apiKey || this.clientOptions.location === "global") { + initHttpOptions.baseUrl = "https://aiplatform.googleapis.com/"; + } else if (this.clientOptions.project && this.clientOptions.location) { + initHttpOptions.baseUrl = `https://${this.clientOptions.location}-aiplatform.googleapis.com/`; + } + initHttpOptions.apiVersion = (_b = this.clientOptions.apiVersion) !== null && _b !== void 0 ? _b : VERTEX_AI_API_DEFAULT_VERSION; + } else { + if (!this.clientOptions.apiKey) { + throw new ApiError({ + message: "API key must be set when using the Gemini API.", + status: 403 + }); + } + initHttpOptions.apiVersion = (_c = this.clientOptions.apiVersion) !== null && _c !== void 0 ? _c : GOOGLE_AI_API_DEFAULT_VERSION; + initHttpOptions.baseUrl = `https://generativelanguage.googleapis.com/`; + } + initHttpOptions.headers = this.getDefaultHeaders(); + this.clientOptions.httpOptions = initHttpOptions; + if (opts.httpOptions) { + this.clientOptions.httpOptions = this.patchHttpOptions(initHttpOptions, opts.httpOptions); + } + } + isVertexAI() { + var _a3; + return (_a3 = this.clientOptions.vertexai) !== null && _a3 !== void 0 ? _a3 : false; + } + getProject() { + return this.clientOptions.project; + } + getLocation() { + return this.clientOptions.location; + } + getCustomBaseUrl() { + return this.customBaseUrl; + } + async getAuthHeaders() { + const headers = new Headers(); + await this.clientOptions.auth.addAuthHeaders(headers); + return headers; + } + getApiVersion() { + if (this.clientOptions.httpOptions && this.clientOptions.httpOptions.apiVersion !== void 0) { + return this.clientOptions.httpOptions.apiVersion; + } + throw new Error("API version is not set."); + } + getBaseUrl() { + if (this.clientOptions.httpOptions && this.clientOptions.httpOptions.baseUrl !== void 0) { + return this.clientOptions.httpOptions.baseUrl; + } + throw new Error("Base URL is not set."); + } + getRequestUrl() { + return this.getRequestUrlInternal(this.clientOptions.httpOptions); + } + getHeaders() { + if (this.clientOptions.httpOptions && this.clientOptions.httpOptions.headers !== void 0) { + return this.clientOptions.httpOptions.headers; + } else { + throw new Error("Headers are not set."); + } + } + getRequestUrlInternal(httpOptions) { + if (!httpOptions || httpOptions.baseUrl === void 0 || httpOptions.apiVersion === void 0) { + throw new Error("HTTP options are not correctly set."); + } + const baseUrl2 = httpOptions.baseUrl.endsWith("/") ? httpOptions.baseUrl.slice(0, -1) : httpOptions.baseUrl; + const urlElement = [baseUrl2]; + if (httpOptions.apiVersion && httpOptions.apiVersion !== "") { + urlElement.push(httpOptions.apiVersion); + } + return urlElement.join("/"); + } + getBaseResourcePath() { + return `projects/${this.clientOptions.project}/locations/${this.clientOptions.location}`; + } + getApiKey() { + return this.clientOptions.apiKey; + } + getWebsocketBaseUrl() { + const baseUrl2 = this.getBaseUrl(); + const urlParts = new URL(baseUrl2); + urlParts.protocol = urlParts.protocol == "http:" ? "ws" : "wss"; + return urlParts.toString(); + } + setBaseUrl(url) { + if (this.clientOptions.httpOptions) { + this.clientOptions.httpOptions.baseUrl = url; + } else { + throw new Error("HTTP options are not correctly set."); + } + } + constructUrl(path7, httpOptions, prependProjectLocation) { + const urlElement = [this.getRequestUrlInternal(httpOptions)]; + if (prependProjectLocation) { + urlElement.push(this.getBaseResourcePath()); + } + if (path7 !== "") { + urlElement.push(path7); + } + const url = new URL(`${urlElement.join("/")}`); + return url; + } + shouldPrependVertexProjectPath(request2, httpOptions) { + if (httpOptions.baseUrl && httpOptions.baseUrlResourceScope === ResourceScope.COLLECTION) { + return false; + } + if (this.clientOptions.apiKey) { + return false; + } + if (!this.clientOptions.vertexai) { + return false; + } + if (request2.path.startsWith("projects/")) { + return false; + } + if (request2.httpMethod === "GET" && request2.path.startsWith("publishers/google/models")) { + return false; + } + return true; + } + async request(request2) { + let patchedHttpOptions = this.clientOptions.httpOptions; + if (request2.httpOptions) { + patchedHttpOptions = this.patchHttpOptions(this.clientOptions.httpOptions, request2.httpOptions); + } + const prependProjectLocation = this.shouldPrependVertexProjectPath(request2, patchedHttpOptions); + const url = this.constructUrl(request2.path, patchedHttpOptions, prependProjectLocation); + if (request2.queryParams) { + for (const [key, value] of Object.entries(request2.queryParams)) { + url.searchParams.append(key, String(value)); + } + } + let requestInit = {}; + if (request2.httpMethod === "GET") { + if (request2.body && request2.body !== "{}") { + throw new Error("Request body should be empty for GET request, but got non empty request body"); + } + } else { + requestInit.body = request2.body; + } + requestInit = await this.includeExtraHttpOptionsToRequestInit(requestInit, patchedHttpOptions, url.toString(), request2.abortSignal); + return this.unaryApiCall(url, requestInit, request2.httpMethod); + } + patchHttpOptions(baseHttpOptions, requestHttpOptions) { + const patchedHttpOptions = JSON.parse(JSON.stringify(baseHttpOptions)); + for (const [key, value] of Object.entries(requestHttpOptions)) { + if (typeof value === "object") { + patchedHttpOptions[key] = Object.assign(Object.assign({}, patchedHttpOptions[key]), value); + } else if (value !== void 0) { + patchedHttpOptions[key] = value; + } + } + return patchedHttpOptions; + } + async requestStream(request2) { + let patchedHttpOptions = this.clientOptions.httpOptions; + if (request2.httpOptions) { + patchedHttpOptions = this.patchHttpOptions(this.clientOptions.httpOptions, request2.httpOptions); + } + const prependProjectLocation = this.shouldPrependVertexProjectPath(request2, patchedHttpOptions); + const url = this.constructUrl(request2.path, patchedHttpOptions, prependProjectLocation); + if (!url.searchParams.has("alt") || url.searchParams.get("alt") !== "sse") { + url.searchParams.set("alt", "sse"); + } + let requestInit = {}; + requestInit.body = request2.body; + requestInit = await this.includeExtraHttpOptionsToRequestInit(requestInit, patchedHttpOptions, url.toString(), request2.abortSignal); + return this.streamApiCall(url, requestInit, request2.httpMethod); + } + async includeExtraHttpOptionsToRequestInit(requestInit, httpOptions, url, abortSignal) { + if (httpOptions && httpOptions.timeout || abortSignal) { + const abortController = new AbortController(); + const signal = abortController.signal; + if (httpOptions.timeout && (httpOptions === null || httpOptions === void 0 ? void 0 : httpOptions.timeout) > 0) { + const timeoutHandle = setTimeout(() => abortController.abort(), httpOptions.timeout); + if (timeoutHandle && typeof timeoutHandle.unref === "function") { + timeoutHandle.unref(); + } + } + if (abortSignal) { + abortSignal.addEventListener("abort", () => { + abortController.abort(); + }); + } + requestInit.signal = signal; + } + if (httpOptions && httpOptions.extraBody !== null) { + includeExtraBodyToRequestInit(requestInit, httpOptions.extraBody); + } + requestInit.headers = await this.getHeadersInternal(httpOptions, url); + return requestInit; + } + async unaryApiCall(url, requestInit, httpMethod) { + return this.apiCall(url.toString(), Object.assign(Object.assign({}, requestInit), { method: httpMethod })).then(async (response) => { + await throwErrorIfNotOK(response); + return new HttpResponse(response); + }).catch((e2) => { + if (e2 instanceof Error) { + throw e2; + } else { + throw new Error(JSON.stringify(e2)); + } + }); + } + async streamApiCall(url, requestInit, httpMethod) { + return this.apiCall(url.toString(), Object.assign(Object.assign({}, requestInit), { method: httpMethod })).then(async (response) => { + await throwErrorIfNotOK(response); + return this.processStreamResponse(response); + }).catch((e2) => { + if (e2 instanceof Error) { + throw e2; + } else { + throw new Error(JSON.stringify(e2)); + } + }); + } + processStreamResponse(response) { + return __asyncGenerator(this, arguments, function* processStreamResponse_1() { + var _a3; + const reader = (_a3 = response === null || response === void 0 ? void 0 : response.body) === null || _a3 === void 0 ? void 0 : _a3.getReader(); + const decoder = new TextDecoder("utf-8"); + if (!reader) { + throw new Error("Response body is empty"); + } + try { + let buffer = ""; + const dataPrefix = "data:"; + const delimiters = ["\n\n", "\r\r", "\r\n\r\n"]; + while (true) { + const { done, value } = yield __await(reader.read()); + if (done) { + if (buffer.trim().length > 0) { + throw new Error("Incomplete JSON segment at the end"); + } + break; + } + const chunkString = decoder.decode(value, { stream: true }); + try { + const chunkJson = JSON.parse(chunkString); + if ("error" in chunkJson) { + const errorJson = JSON.parse(JSON.stringify(chunkJson["error"])); + const status = errorJson["status"]; + const code = errorJson["code"]; + const errorMessage = `got status: ${status}. ${JSON.stringify(chunkJson)}`; + if (code >= 400 && code < 600) { + const apiError = new ApiError({ + message: errorMessage, + status: code + }); + throw apiError; + } + } + } catch (e2) { + const error2 = e2; + if (error2.name === "ApiError") { + throw e2; + } + } + buffer += chunkString; + let delimiterIndex = -1; + let delimiterLength = 0; + while (true) { + delimiterIndex = -1; + delimiterLength = 0; + for (const delimiter3 of delimiters) { + const index = buffer.indexOf(delimiter3); + if (index !== -1 && (delimiterIndex === -1 || index < delimiterIndex)) { + delimiterIndex = index; + delimiterLength = delimiter3.length; + } + } + if (delimiterIndex === -1) { + break; + } + const eventString = buffer.substring(0, delimiterIndex); + buffer = buffer.substring(delimiterIndex + delimiterLength); + const trimmedEvent = eventString.trim(); + if (trimmedEvent.startsWith(dataPrefix)) { + const processedChunkString = trimmedEvent.substring(dataPrefix.length).trim(); + try { + const partialResponse = new Response(processedChunkString, { + headers: response === null || response === void 0 ? void 0 : response.headers, + status: response === null || response === void 0 ? void 0 : response.status, + statusText: response === null || response === void 0 ? void 0 : response.statusText + }); + yield yield __await(new HttpResponse(partialResponse)); + } catch (e2) { + throw new Error(`exception parsing stream chunk ${processedChunkString}. ${e2}`); + } + } + } + } + } finally { + reader.releaseLock(); + } + }); + } + async apiCall(url, requestInit) { + var _a3; + if (!this.clientOptions.httpOptions || !this.clientOptions.httpOptions.retryOptions) { + return fetch(url, requestInit); + } + const retryOptions = this.clientOptions.httpOptions.retryOptions; + const runFetch = async () => { + const response = await fetch(url, requestInit); + if (response.ok) { + return response; + } + if (DEFAULT_RETRY_HTTP_STATUS_CODES.includes(response.status)) { + throw new Error(`Retryable HTTP Error: ${response.statusText}`); + } + throw new import_p_retry.AbortError(`Non-retryable exception ${response.statusText} sending request`); + }; + return (0, import_p_retry.default)(runFetch, { + // Retry attempts is one less than the number of total attempts. + retries: ((_a3 = retryOptions.attempts) !== null && _a3 !== void 0 ? _a3 : DEFAULT_RETRY_ATTEMPTS) - 1 + }); + } + getDefaultHeaders() { + const headers = {}; + const versionHeaderValue = LIBRARY_LABEL + " " + this.clientOptions.userAgentExtra; + headers[USER_AGENT_HEADER] = versionHeaderValue; + headers[GOOGLE_API_CLIENT_HEADER] = versionHeaderValue; + headers[CONTENT_TYPE_HEADER] = "application/json"; + return headers; + } + async getHeadersInternal(httpOptions, url) { + const headers = new Headers(); + if (httpOptions && httpOptions.headers) { + for (const [key, value] of Object.entries(httpOptions.headers)) { + headers.append(key, value); + } + if (httpOptions.timeout && httpOptions.timeout > 0) { + headers.append(SERVER_TIMEOUT_HEADER, String(Math.ceil(httpOptions.timeout / 1e3))); + } + } + await this.clientOptions.auth.addAuthHeaders(headers, url); + return headers; + } + getFileName(file) { + var _a3; + let fileName = ""; + if (typeof file === "string") { + fileName = file.replace(/[/\\]+$/, ""); + fileName = (_a3 = fileName.split(/[/\\]/).pop()) !== null && _a3 !== void 0 ? _a3 : ""; + } + return fileName; + } + /** + * Uploads a file asynchronously using Gemini API only, this is not supported + * in Vertex AI. + * + * @param file The string path to the file to be uploaded or a Blob object. + * @param config Optional parameters specified in the `UploadFileConfig` + * interface. @see {@link types.UploadFileConfig} + * @return A promise that resolves to a `File` object. + * @throws An error if called on a Vertex AI client. + * @throws An error if the `mimeType` is not provided and can not be inferred, + */ + async uploadFile(file, config) { + var _a3; + const fileToUpload = {}; + if (config != null) { + fileToUpload.mimeType = config.mimeType; + fileToUpload.name = config.name; + fileToUpload.displayName = config.displayName; + } + if (fileToUpload.name && !fileToUpload.name.startsWith("files/")) { + fileToUpload.name = `files/${fileToUpload.name}`; + } + const uploader = this.clientOptions.uploader; + const fileStat = await uploader.stat(file); + fileToUpload.sizeBytes = String(fileStat.size); + const mimeType = (_a3 = config === null || config === void 0 ? void 0 : config.mimeType) !== null && _a3 !== void 0 ? _a3 : fileStat.type; + if (mimeType === void 0 || mimeType === "") { + throw new Error("Can not determine mimeType. Please provide mimeType in the config."); + } + fileToUpload.mimeType = mimeType; + const body = { + file: fileToUpload + }; + const fileName = this.getFileName(file); + const path7 = formatMap("upload/v1beta/files", body["_url"]); + const uploadUrl = await this.fetchUploadUrl(path7, fileToUpload.sizeBytes, fileToUpload.mimeType, fileName, body, config === null || config === void 0 ? void 0 : config.httpOptions); + return uploader.upload(file, uploadUrl, this); + } + /** + * Uploads a file to a given file search store asynchronously using Gemini API only, this is not supported + * in Vertex AI. + * + * @param fileSearchStoreName The name of the file search store to upload the file to. + * @param file The string path to the file to be uploaded or a Blob object. + * @param config Optional parameters specified in the `UploadFileConfig` + * interface. @see {@link UploadFileConfig} + * @return A promise that resolves to a `File` object. + * @throws An error if called on a Vertex AI client. + * @throws An error if the `mimeType` is not provided and can not be inferred, + */ + async uploadFileToFileSearchStore(fileSearchStoreName, file, config) { + var _a3; + const uploader = this.clientOptions.uploader; + const fileStat = await uploader.stat(file); + const sizeBytes = String(fileStat.size); + const mimeType = (_a3 = config === null || config === void 0 ? void 0 : config.mimeType) !== null && _a3 !== void 0 ? _a3 : fileStat.type; + if (mimeType === void 0 || mimeType === "") { + throw new Error("Can not determine mimeType. Please provide mimeType in the config."); + } + const path7 = `upload/v1beta/${fileSearchStoreName}:uploadToFileSearchStore`; + const fileName = this.getFileName(file); + const body = {}; + if (config != null) { + uploadToFileSearchStoreConfigToMldev(config, body); + } + const uploadUrl = await this.fetchUploadUrl(path7, sizeBytes, mimeType, fileName, body, config === null || config === void 0 ? void 0 : config.httpOptions); + return uploader.uploadToFileSearchStore(file, uploadUrl, this); + } + /** + * Downloads a file asynchronously to the specified path. + * + * @params params - The parameters for the download request, see {@link + * types.DownloadFileParameters} + */ + async downloadFile(params) { + const downloader = this.clientOptions.downloader; + await downloader.download(params, this); + } + async fetchUploadUrl(path7, sizeBytes, mimeType, fileName, body, configHttpOptions) { + var _a3; + let httpOptions = {}; + if (configHttpOptions) { + httpOptions = configHttpOptions; + } else { + httpOptions = { + apiVersion: "", + // api-version is set in the path. + headers: Object.assign({ "Content-Type": "application/json", "X-Goog-Upload-Protocol": "resumable", "X-Goog-Upload-Command": "start", "X-Goog-Upload-Header-Content-Length": `${sizeBytes}`, "X-Goog-Upload-Header-Content-Type": `${mimeType}` }, fileName ? { "X-Goog-Upload-File-Name": fileName } : {}) + }; + } + const httpResponse = await this.request({ + path: path7, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions + }); + if (!httpResponse || !(httpResponse === null || httpResponse === void 0 ? void 0 : httpResponse.headers)) { + throw new Error("Server did not return an HttpResponse or the returned HttpResponse did not have headers."); + } + const uploadUrl = (_a3 = httpResponse === null || httpResponse === void 0 ? void 0 : httpResponse.headers) === null || _a3 === void 0 ? void 0 : _a3["x-goog-upload-url"]; + if (uploadUrl === void 0) { + throw new Error("Failed to get upload url. Server did not return the x-google-upload-url in the headers"); + } + return uploadUrl; + } +}; +async function throwErrorIfNotOK(response) { + var _a3; + if (response === void 0) { + throw new Error("response is undefined"); + } + if (!response.ok) { + const status = response.status; + let errorBody; + if ((_a3 = response.headers.get("content-type")) === null || _a3 === void 0 ? void 0 : _a3.includes("application/json")) { + errorBody = await response.json(); + } else { + errorBody = { + error: { + message: await response.text(), + code: response.status, + status: response.statusText + } + }; + } + const errorMessage = JSON.stringify(errorBody); + if (status >= 400 && status < 600) { + const apiError = new ApiError({ + message: errorMessage, + status + }); + throw apiError; + } + throw new Error(errorMessage); + } +} +function includeExtraBodyToRequestInit(requestInit, extraBody) { + if (!extraBody || Object.keys(extraBody).length === 0) { + return; + } + if (requestInit.body instanceof Blob) { + console.warn("includeExtraBodyToRequestInit: extraBody provided but current request body is a Blob. extraBody will be ignored as merging is not supported for Blob bodies."); + return; + } + let currentBodyObject = {}; + if (typeof requestInit.body === "string" && requestInit.body.length > 0) { + try { + const parsedBody = JSON.parse(requestInit.body); + if (typeof parsedBody === "object" && parsedBody !== null && !Array.isArray(parsedBody)) { + currentBodyObject = parsedBody; + } else { + console.warn("includeExtraBodyToRequestInit: Original request body is valid JSON but not a non-array object. Skip applying extraBody to the request body."); + return; + } + } catch (e2) { + console.warn("includeExtraBodyToRequestInit: Original request body is not valid JSON. Skip applying extraBody to the request body."); + return; + } + } + function deepMerge(target, source) { + const output = Object.assign({}, target); + for (const key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + const sourceValue = source[key]; + const targetValue = output[key]; + if (sourceValue && typeof sourceValue === "object" && !Array.isArray(sourceValue) && targetValue && typeof targetValue === "object" && !Array.isArray(targetValue)) { + output[key] = deepMerge(targetValue, sourceValue); + } else { + if (targetValue && sourceValue && typeof targetValue !== typeof sourceValue) { + console.warn(`includeExtraBodyToRequestInit:deepMerge: Type mismatch for key "${key}". Original type: ${typeof targetValue}, New type: ${typeof sourceValue}. Overwriting.`); + } + output[key] = sourceValue; + } + } + } + return output; + } + const mergedBody = deepMerge(currentBodyObject, extraBody); + requestInit.body = JSON.stringify(mergedBody); +} +var MCP_LABEL = "mcp_used/unknown"; +var hasMcpToolUsageFromMcpToTool = false; +function hasMcpToolUsage(tools) { + for (const tool of tools) { + if (isMcpCallableTool(tool)) { + return true; + } + if (typeof tool === "object" && "inputSchema" in tool) { + return true; + } + } + return hasMcpToolUsageFromMcpToTool; +} +function setMcpUsageHeader(headers) { + var _a3; + const existingHeader = (_a3 = headers[GOOGLE_API_CLIENT_HEADER]) !== null && _a3 !== void 0 ? _a3 : ""; + headers[GOOGLE_API_CLIENT_HEADER] = (existingHeader + ` ${MCP_LABEL}`).trimStart(); +} +function isMcpCallableTool(object) { + return object !== null && typeof object === "object" && object instanceof McpCallableTool; +} +function listAllTools(mcpClient_1) { + return __asyncGenerator(this, arguments, function* listAllTools_1(mcpClient, maxTools = 100) { + let cursor = void 0; + let numTools = 0; + while (numTools < maxTools) { + const t2 = yield __await(mcpClient.listTools({ cursor })); + for (const tool of t2.tools) { + yield yield __await(tool); + numTools++; + } + if (!t2.nextCursor) { + break; + } + cursor = t2.nextCursor; + } + }); +} +var McpCallableTool = class _McpCallableTool { + constructor(mcpClients = [], config) { + this.mcpTools = []; + this.functionNameToMcpClient = {}; + this.mcpClients = mcpClients; + this.config = config; + } + /** + * Creates a McpCallableTool. + */ + static create(mcpClients, config) { + return new _McpCallableTool(mcpClients, config); + } + /** + * Validates the function names are not duplicate and initialize the function + * name to MCP client mapping. + * + * @throws {Error} if the MCP tools from the MCP clients have duplicate tool + * names. + */ + async initialize() { + var _a3, e_1, _b, _c; + if (this.mcpTools.length > 0) { + return; + } + const functionMap = {}; + const mcpTools = []; + for (const mcpClient of this.mcpClients) { + try { + for (var _d = true, _e = (e_1 = void 0, __asyncValues(listAllTools(mcpClient))), _f; _f = await _e.next(), _a3 = _f.done, !_a3; _d = true) { + _c = _f.value; + _d = false; + const mcpTool = _c; + mcpTools.push(mcpTool); + const mcpToolName = mcpTool.name; + if (functionMap[mcpToolName]) { + throw new Error(`Duplicate function name ${mcpToolName} found in MCP tools. Please ensure function names are unique.`); + } + functionMap[mcpToolName] = mcpClient; + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (!_d && !_a3 && (_b = _e.return)) + await _b.call(_e); + } finally { + if (e_1) + throw e_1.error; + } + } + } + this.mcpTools = mcpTools; + this.functionNameToMcpClient = functionMap; + } + async tool() { + await this.initialize(); + return mcpToolsToGeminiTool(this.mcpTools, this.config); + } + async callTool(functionCalls) { + await this.initialize(); + const functionCallResponseParts = []; + for (const functionCall of functionCalls) { + if (functionCall.name in this.functionNameToMcpClient) { + const mcpClient = this.functionNameToMcpClient[functionCall.name]; + let requestOptions = void 0; + if (this.config.timeout) { + requestOptions = { + timeout: this.config.timeout + }; + } + const callToolResponse = await mcpClient.callTool( + { + name: functionCall.name, + arguments: functionCall.args + }, + // Set the result schema to undefined to allow MCP to rely on the + // default schema. + void 0, + requestOptions + ); + functionCallResponseParts.push({ + functionResponse: { + name: functionCall.name, + response: callToolResponse.isError ? { error: callToolResponse } : callToolResponse + } + }); + } + } + return functionCallResponseParts; + } +}; +async function handleWebSocketMessage$1(apiClient, onmessage, event) { + const serverMessage = new LiveMusicServerMessage(); + let data; + if (event.data instanceof Blob) { + data = JSON.parse(await event.data.text()); + } else { + data = JSON.parse(event.data); + } + Object.assign(serverMessage, data); + onmessage(serverMessage); +} +var LiveMusic = class { + constructor(apiClient, auth6, webSocketFactory) { + this.apiClient = apiClient; + this.auth = auth6; + this.webSocketFactory = webSocketFactory; + } + /** + Establishes a connection to the specified model and returns a + LiveMusicSession object representing that connection. + + @experimental + + @remarks + + @param params - The parameters for establishing a connection to the model. + @return A live session. + + @example + ```ts + let model = 'models/lyria-realtime-exp'; + const session = await ai.live.music.connect({ + model: model, + callbacks: { + onmessage: (e: MessageEvent) => { + console.log('Received message from the server: %s\n', debug(e.data)); + }, + onerror: (e: ErrorEvent) => { + console.log('Error occurred: %s\n', debug(e.error)); + }, + onclose: (e: CloseEvent) => { + console.log('Connection closed.'); + }, + }, + }); + ``` + */ + async connect(params) { + var _a3, _b; + if (this.apiClient.isVertexAI()) { + throw new Error("Live music is not supported for Vertex AI."); + } + console.warn("Live music generation is experimental and may change in future versions."); + const websocketBaseUrl = this.apiClient.getWebsocketBaseUrl(); + const apiVersion = this.apiClient.getApiVersion(); + const headers = mapToHeaders$1(this.apiClient.getDefaultHeaders()); + const apiKey = this.apiClient.getApiKey(); + const url = `${websocketBaseUrl}/ws/google.ai.generativelanguage.${apiVersion}.GenerativeService.BidiGenerateMusic?key=${apiKey}`; + let onopenResolve = () => { + }; + const onopenPromise = new Promise((resolve2) => { + onopenResolve = resolve2; + }); + const callbacks = params.callbacks; + const onopenAwaitedCallback = function() { + onopenResolve({}); + }; + const apiClient = this.apiClient; + const websocketCallbacks = { + onopen: onopenAwaitedCallback, + onmessage: (event) => { + void handleWebSocketMessage$1(apiClient, callbacks.onmessage, event); + }, + onerror: (_a3 = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onerror) !== null && _a3 !== void 0 ? _a3 : function(e2) { + }, + onclose: (_b = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onclose) !== null && _b !== void 0 ? _b : function(e2) { + } + }; + const conn = this.webSocketFactory.create(url, headersToMap$1(headers), websocketCallbacks); + conn.connect(); + await onopenPromise; + const model = tModel(this.apiClient, params.model); + const setup = { model }; + const clientMessage = { setup }; + conn.send(JSON.stringify(clientMessage)); + return new LiveMusicSession(conn, this.apiClient); + } +}; +var LiveMusicSession = class { + constructor(conn, apiClient) { + this.conn = conn; + this.apiClient = apiClient; + } + /** + Sets inputs to steer music generation. Updates the session's current + weighted prompts. + + @param params - Contains one property, `weightedPrompts`. + + - `weightedPrompts` to send to the model; weights are normalized to + sum to 1.0. + + @experimental + */ + async setWeightedPrompts(params) { + if (!params.weightedPrompts || Object.keys(params.weightedPrompts).length === 0) { + throw new Error("Weighted prompts must be set and contain at least one entry."); + } + const clientContent = liveMusicSetWeightedPromptsParametersToMldev(params); + this.conn.send(JSON.stringify({ clientContent })); + } + /** + Sets a configuration to the model. Updates the session's current + music generation config. + + @param params - Contains one property, `musicGenerationConfig`. + + - `musicGenerationConfig` to set in the model. Passing an empty or + undefined config to the model will reset the config to defaults. + + @experimental + */ + async setMusicGenerationConfig(params) { + if (!params.musicGenerationConfig) { + params.musicGenerationConfig = {}; + } + const setConfigParameters = liveMusicSetConfigParametersToMldev(params); + this.conn.send(JSON.stringify(setConfigParameters)); + } + sendPlaybackControl(playbackControl) { + const clientMessage = { playbackControl }; + this.conn.send(JSON.stringify(clientMessage)); + } + /** + * Start the music stream. + * + * @experimental + */ + play() { + this.sendPlaybackControl(LiveMusicPlaybackControl.PLAY); + } + /** + * Temporarily halt the music stream. Use `play` to resume from the current + * position. + * + * @experimental + */ + pause() { + this.sendPlaybackControl(LiveMusicPlaybackControl.PAUSE); + } + /** + * Stop the music stream and reset the state. Retains the current prompts + * and config. + * + * @experimental + */ + stop() { + this.sendPlaybackControl(LiveMusicPlaybackControl.STOP); + } + /** + * Resets the context of the music generation without stopping it. + * Retains the current prompts and config. + * + * @experimental + */ + resetContext() { + this.sendPlaybackControl(LiveMusicPlaybackControl.RESET_CONTEXT); + } + /** + Terminates the WebSocket connection. + + @experimental + */ + close() { + this.conn.close(); + } +}; +function headersToMap$1(headers) { + const headerMap = {}; + headers.forEach((value, key) => { + headerMap[key] = value; + }); + return headerMap; +} +function mapToHeaders$1(map) { + const headers = new Headers(); + for (const [key, value] of Object.entries(map)) { + headers.append(key, value); + } + return headers; +} +var FUNCTION_RESPONSE_REQUIRES_ID = "FunctionResponse request must have an `id` field from the response of a ToolCall.FunctionalCalls in Google AI."; +async function handleWebSocketMessage(apiClient, onmessage, event) { + const serverMessage = new LiveServerMessage(); + let jsonData; + if (event.data instanceof Blob) { + jsonData = await event.data.text(); + } else if (event.data instanceof ArrayBuffer) { + jsonData = new TextDecoder().decode(event.data); + } else { + jsonData = event.data; + } + const data = JSON.parse(jsonData); + if (apiClient.isVertexAI()) { + const resp = liveServerMessageFromVertex(data); + Object.assign(serverMessage, resp); + } else { + const resp = data; + Object.assign(serverMessage, resp); + } + onmessage(serverMessage); +} +var Live = class { + constructor(apiClient, auth6, webSocketFactory) { + this.apiClient = apiClient; + this.auth = auth6; + this.webSocketFactory = webSocketFactory; + this.music = new LiveMusic(this.apiClient, this.auth, this.webSocketFactory); + } + /** + Establishes a connection to the specified model with the given + configuration and returns a Session object representing that connection. + + @experimental Built-in MCP support is an experimental feature, may change in + future versions. + + @remarks + + @param params - The parameters for establishing a connection to the model. + @return A live session. + + @example + ```ts + let model: string; + if (GOOGLE_GENAI_USE_VERTEXAI) { + model = 'gemini-2.0-flash-live-preview-04-09'; + } else { + model = 'gemini-live-2.5-flash-preview'; + } + const session = await ai.live.connect({ + model: model, + config: { + responseModalities: [Modality.AUDIO], + }, + callbacks: { + onopen: () => { + console.log('Connected to the socket.'); + }, + onmessage: (e: MessageEvent) => { + console.log('Received message from the server: %s\n', debug(e.data)); + }, + onerror: (e: ErrorEvent) => { + console.log('Error occurred: %s\n', debug(e.error)); + }, + onclose: (e: CloseEvent) => { + console.log('Connection closed.'); + }, + }, + }); + ``` + */ + async connect(params) { + var _a3, _b, _c, _d, _e, _f; + if (params.config && params.config.httpOptions) { + throw new Error("The Live module does not support httpOptions at request-level in LiveConnectConfig yet. Please use the client-level httpOptions configuration instead."); + } + const websocketBaseUrl = this.apiClient.getWebsocketBaseUrl(); + const apiVersion = this.apiClient.getApiVersion(); + let url; + const clientHeaders = this.apiClient.getHeaders(); + if (params.config && params.config.tools && hasMcpToolUsage(params.config.tools)) { + setMcpUsageHeader(clientHeaders); + } + const headers = mapToHeaders(clientHeaders); + if (this.apiClient.isVertexAI()) { + const project = this.apiClient.getProject(); + const location = this.apiClient.getLocation(); + const apiKey = this.apiClient.getApiKey(); + const hasStandardAuth = !!project && !!location || !!apiKey; + if (this.apiClient.getCustomBaseUrl() && !hasStandardAuth) { + url = websocketBaseUrl; + } else { + url = `${websocketBaseUrl}/ws/google.cloud.aiplatform.${apiVersion}.LlmBidiService/BidiGenerateContent`; + await this.auth.addAuthHeaders(headers, url); + } + } else { + const apiKey = this.apiClient.getApiKey(); + let method = "BidiGenerateContent"; + let keyName = "key"; + if (apiKey === null || apiKey === void 0 ? void 0 : apiKey.startsWith("auth_tokens/")) { + console.warn("Warning: Ephemeral token support is experimental and may change in future versions."); + if (apiVersion !== "v1alpha") { + console.warn("Warning: The SDK's ephemeral token support is in v1alpha only. Please use const ai = new GoogleGenAI({apiKey: token.name, httpOptions: { apiVersion: 'v1alpha' }}); before session connection."); + } + method = "BidiGenerateContentConstrained"; + keyName = "access_token"; + } + url = `${websocketBaseUrl}/ws/google.ai.generativelanguage.${apiVersion}.GenerativeService.${method}?${keyName}=${apiKey}`; + } + let onopenResolve = () => { + }; + const onopenPromise = new Promise((resolve2) => { + onopenResolve = resolve2; + }); + const callbacks = params.callbacks; + const onopenAwaitedCallback = function() { + var _a4; + (_a4 = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onopen) === null || _a4 === void 0 ? void 0 : _a4.call(callbacks); + onopenResolve({}); + }; + const apiClient = this.apiClient; + const websocketCallbacks = { + onopen: onopenAwaitedCallback, + onmessage: (event) => { + void handleWebSocketMessage(apiClient, callbacks.onmessage, event); + }, + onerror: (_a3 = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onerror) !== null && _a3 !== void 0 ? _a3 : function(e2) { + }, + onclose: (_b = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onclose) !== null && _b !== void 0 ? _b : function(e2) { + } + }; + const conn = this.webSocketFactory.create(url, headersToMap(headers), websocketCallbacks); + conn.connect(); + await onopenPromise; + let transformedModel = tModel(this.apiClient, params.model); + if (this.apiClient.isVertexAI() && transformedModel.startsWith("publishers/")) { + const project = this.apiClient.getProject(); + const location = this.apiClient.getLocation(); + if (project && location) { + transformedModel = `projects/${project}/locations/${location}/` + transformedModel; + } + } + let clientMessage = {}; + if (this.apiClient.isVertexAI() && ((_c = params.config) === null || _c === void 0 ? void 0 : _c.responseModalities) === void 0) { + if (params.config === void 0) { + params.config = { responseModalities: [Modality.AUDIO] }; + } else { + params.config.responseModalities = [Modality.AUDIO]; + } + } + if ((_d = params.config) === null || _d === void 0 ? void 0 : _d.generationConfig) { + console.warn("Setting `LiveConnectConfig.generation_config` is deprecated, please set the fields on `LiveConnectConfig` directly. This will become an error in a future version (not before Q3 2025)."); + } + const inputTools = (_f = (_e = params.config) === null || _e === void 0 ? void 0 : _e.tools) !== null && _f !== void 0 ? _f : []; + const convertedTools = []; + for (const tool of inputTools) { + if (this.isCallableTool(tool)) { + const callableTool = tool; + convertedTools.push(await callableTool.tool()); + } else { + convertedTools.push(tool); + } + } + if (convertedTools.length > 0) { + params.config.tools = convertedTools; + } + const liveConnectParameters = { + model: transformedModel, + config: params.config, + callbacks: params.callbacks + }; + if (this.apiClient.isVertexAI()) { + clientMessage = liveConnectParametersToVertex(this.apiClient, liveConnectParameters); + } else { + clientMessage = liveConnectParametersToMldev(this.apiClient, liveConnectParameters); + } + delete clientMessage["config"]; + conn.send(JSON.stringify(clientMessage)); + return new Session(conn, this.apiClient); + } + // TODO: b/416041229 - Abstract this method to a common place. + isCallableTool(tool) { + return "callTool" in tool && typeof tool.callTool === "function"; + } +}; +var defaultLiveSendClientContentParamerters = { + turnComplete: true +}; +var Session = class { + constructor(conn, apiClient) { + this.conn = conn; + this.apiClient = apiClient; + } + tLiveClientContent(apiClient, params) { + if (params.turns !== null && params.turns !== void 0) { + let contents = []; + try { + contents = tContents(params.turns); + if (!apiClient.isVertexAI()) { + contents = contents.map((item) => contentToMldev$1(item)); + } + } catch (_a3) { + throw new Error(`Failed to parse client content "turns", type: '${typeof params.turns}'`); + } + return { + clientContent: { turns: contents, turnComplete: params.turnComplete } + }; + } + return { + clientContent: { turnComplete: params.turnComplete } + }; + } + tLiveClienttToolResponse(apiClient, params) { + let functionResponses = []; + if (params.functionResponses == null) { + throw new Error("functionResponses is required."); + } + if (!Array.isArray(params.functionResponses)) { + functionResponses = [params.functionResponses]; + } else { + functionResponses = params.functionResponses; + } + if (functionResponses.length === 0) { + throw new Error("functionResponses is required."); + } + for (const functionResponse of functionResponses) { + if (typeof functionResponse !== "object" || functionResponse === null || !("name" in functionResponse) || !("response" in functionResponse)) { + throw new Error(`Could not parse function response, type '${typeof functionResponse}'.`); + } + if (!apiClient.isVertexAI() && !("id" in functionResponse)) { + throw new Error(FUNCTION_RESPONSE_REQUIRES_ID); + } + } + const clientMessage = { + toolResponse: { functionResponses } + }; + return clientMessage; + } + /** + Send a message over the established connection. + + @param params - Contains two **optional** properties, `turns` and + `turnComplete`. + + - `turns` will be converted to a `Content[]` + - `turnComplete: true` [default] indicates that you are done sending + content and expect a response. If `turnComplete: false`, the server + will wait for additional messages before starting generation. + + @experimental + + @remarks + There are two ways to send messages to the live API: + `sendClientContent` and `sendRealtimeInput`. + + `sendClientContent` messages are added to the model context **in order**. + Having a conversation using `sendClientContent` messages is roughly + equivalent to using the `Chat.sendMessageStream`, except that the state of + the `chat` history is stored on the API server instead of locally. + + Because of `sendClientContent`'s order guarantee, the model cannot respons + as quickly to `sendClientContent` messages as to `sendRealtimeInput` + messages. This makes the biggest difference when sending objects that have + significant preprocessing time (typically images). + + The `sendClientContent` message sends a `Content[]` + which has more options than the `Blob` sent by `sendRealtimeInput`. + + So the main use-cases for `sendClientContent` over `sendRealtimeInput` are: + + - Sending anything that can't be represented as a `Blob` (text, + `sendClientContent({turns="Hello?"}`)). + - Managing turns when not using audio input and voice activity detection. + (`sendClientContent({turnComplete:true})` or the short form + `sendClientContent()`) + - Prefilling a conversation context + ``` + sendClientContent({ + turns: [ + Content({role:user, parts:...}), + Content({role:user, parts:...}), + ... + ] + }) + ``` + @experimental + */ + sendClientContent(params) { + params = Object.assign(Object.assign({}, defaultLiveSendClientContentParamerters), params); + const clientMessage = this.tLiveClientContent(this.apiClient, params); + this.conn.send(JSON.stringify(clientMessage)); + } + /** + Send a realtime message over the established connection. + + @param params - Contains one property, `media`. + + - `media` will be converted to a `Blob` + + @experimental + + @remarks + Use `sendRealtimeInput` for realtime audio chunks and video frames (images). + + With `sendRealtimeInput` the api will respond to audio automatically + based on voice activity detection (VAD). + + `sendRealtimeInput` is optimized for responsivness at the expense of + deterministic ordering guarantees. Audio and video tokens are to the + context when they become available. + + Note: The Call signature expects a `Blob` object, but only a subset + of audio and image mimetypes are allowed. + */ + sendRealtimeInput(params) { + let clientMessage = {}; + if (this.apiClient.isVertexAI()) { + clientMessage = { + "realtimeInput": liveSendRealtimeInputParametersToVertex(params) + }; + } else { + clientMessage = { + "realtimeInput": liveSendRealtimeInputParametersToMldev(params) + }; + } + this.conn.send(JSON.stringify(clientMessage)); + } + /** + Send a function response message over the established connection. + + @param params - Contains property `functionResponses`. + + - `functionResponses` will be converted to a `functionResponses[]` + + @remarks + Use `sendFunctionResponse` to reply to `LiveServerToolCall` from the server. + + Use {@link types.LiveConnectConfig#tools} to configure the callable functions. + + @experimental + */ + sendToolResponse(params) { + if (params.functionResponses == null) { + throw new Error("Tool response parameters are required."); + } + const clientMessage = this.tLiveClienttToolResponse(this.apiClient, params); + this.conn.send(JSON.stringify(clientMessage)); + } + /** + Terminates the WebSocket connection. + + @experimental + + @example + ```ts + let model: string; + if (GOOGLE_GENAI_USE_VERTEXAI) { + model = 'gemini-2.0-flash-live-preview-04-09'; + } else { + model = 'gemini-live-2.5-flash-preview'; + } + const session = await ai.live.connect({ + model: model, + config: { + responseModalities: [Modality.AUDIO], + } + }); + + session.close(); + ``` + */ + close() { + this.conn.close(); + } +}; +function headersToMap(headers) { + const headerMap = {}; + headers.forEach((value, key) => { + headerMap[key] = value; + }); + return headerMap; +} +function mapToHeaders(map) { + const headers = new Headers(); + for (const [key, value] of Object.entries(map)) { + headers.append(key, value); + } + return headers; +} +var DEFAULT_MAX_REMOTE_CALLS = 10; +function shouldDisableAfc(config) { + var _a3, _b, _c; + if ((_a3 = config === null || config === void 0 ? void 0 : config.automaticFunctionCalling) === null || _a3 === void 0 ? void 0 : _a3.disable) { + return true; + } + let callableToolsPresent = false; + for (const tool of (_b = config === null || config === void 0 ? void 0 : config.tools) !== null && _b !== void 0 ? _b : []) { + if (isCallableTool(tool)) { + callableToolsPresent = true; + break; + } + } + if (!callableToolsPresent) { + return true; + } + const maxCalls = (_c = config === null || config === void 0 ? void 0 : config.automaticFunctionCalling) === null || _c === void 0 ? void 0 : _c.maximumRemoteCalls; + if (maxCalls && (maxCalls < 0 || !Number.isInteger(maxCalls)) || maxCalls == 0) { + console.warn("Invalid maximumRemoteCalls value provided for automatic function calling. Disabled automatic function calling. Please provide a valid integer value greater than 0. maximumRemoteCalls provided:", maxCalls); + return true; + } + return false; +} +function isCallableTool(tool) { + return "callTool" in tool && typeof tool.callTool === "function"; +} +function hasCallableTools(params) { + var _a3, _b, _c; + return (_c = (_b = (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.tools) === null || _b === void 0 ? void 0 : _b.some((tool) => isCallableTool(tool))) !== null && _c !== void 0 ? _c : false; +} +function findAfcIncompatibleToolIndexes(params) { + var _a3; + const afcIncompatibleToolIndexes = []; + if (!((_a3 = params === null || params === void 0 ? void 0 : params.config) === null || _a3 === void 0 ? void 0 : _a3.tools)) { + return afcIncompatibleToolIndexes; + } + params.config.tools.forEach((tool, index) => { + if (isCallableTool(tool)) { + return; + } + const geminiTool = tool; + if (geminiTool.functionDeclarations && geminiTool.functionDeclarations.length > 0) { + afcIncompatibleToolIndexes.push(index); + } + }); + return afcIncompatibleToolIndexes; +} +function shouldAppendAfcHistory(config) { + var _a3; + return !((_a3 = config === null || config === void 0 ? void 0 : config.automaticFunctionCalling) === null || _a3 === void 0 ? void 0 : _a3.ignoreCallHistory); +} +var Models = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + this.embedContent = async (params) => { + if (!this.apiClient.isVertexAI()) { + return await this.embedContentInternal(params); + } + const isVertexEmbedContentModel = params.model.includes("gemini") && params.model !== "gemini-embedding-001" || params.model.includes("maas"); + if (isVertexEmbedContentModel) { + const contents = tContents(params.contents); + if (contents.length > 1) { + throw new Error("The embedContent API for this model only supports one content at a time."); + } + const paramsPrivate = Object.assign(Object.assign({}, params), { content: contents[0], embeddingApiType: EmbeddingApiType.EMBED_CONTENT }); + return await this.embedContentInternal(paramsPrivate); + } else { + const paramsPrivate = Object.assign(Object.assign({}, params), { embeddingApiType: EmbeddingApiType.PREDICT }); + return await this.embedContentInternal(paramsPrivate); + } + }; + this.generateContent = async (params) => { + var _a3, _b, _c, _d, _e; + const transformedParams = await this.processParamsMaybeAddMcpUsage(params); + this.maybeMoveToResponseJsonSchem(params); + if (!hasCallableTools(params) || shouldDisableAfc(params.config)) { + return await this.generateContentInternal(transformedParams); + } + const incompatibleToolIndexes = findAfcIncompatibleToolIndexes(params); + if (incompatibleToolIndexes.length > 0) { + const formattedIndexes = incompatibleToolIndexes.map((index) => `tools[${index}]`).join(", "); + throw new Error(`Automatic function calling with CallableTools (or MCP objects) and basic FunctionDeclarations is not yet supported. Incompatible tools found at ${formattedIndexes}.`); + } + let response; + let functionResponseContent; + const automaticFunctionCallingHistory = tContents(transformedParams.contents); + const maxRemoteCalls = (_c = (_b = (_a3 = transformedParams.config) === null || _a3 === void 0 ? void 0 : _a3.automaticFunctionCalling) === null || _b === void 0 ? void 0 : _b.maximumRemoteCalls) !== null && _c !== void 0 ? _c : DEFAULT_MAX_REMOTE_CALLS; + let remoteCalls = 0; + while (remoteCalls < maxRemoteCalls) { + response = await this.generateContentInternal(transformedParams); + if (!response.functionCalls || response.functionCalls.length === 0) { + break; + } + const responseContent = response.candidates[0].content; + const functionResponseParts = []; + for (const tool of (_e = (_d = params.config) === null || _d === void 0 ? void 0 : _d.tools) !== null && _e !== void 0 ? _e : []) { + if (isCallableTool(tool)) { + const callableTool = tool; + const parts = await callableTool.callTool(response.functionCalls); + functionResponseParts.push(...parts); + } + } + remoteCalls++; + functionResponseContent = { + role: "user", + parts: functionResponseParts + }; + transformedParams.contents = tContents(transformedParams.contents); + transformedParams.contents.push(responseContent); + transformedParams.contents.push(functionResponseContent); + if (shouldAppendAfcHistory(transformedParams.config)) { + automaticFunctionCallingHistory.push(responseContent); + automaticFunctionCallingHistory.push(functionResponseContent); + } + } + if (shouldAppendAfcHistory(transformedParams.config)) { + response.automaticFunctionCallingHistory = automaticFunctionCallingHistory; + } + return response; + }; + this.generateContentStream = async (params) => { + var _a3, _b, _c, _d, _e; + this.maybeMoveToResponseJsonSchem(params); + if (shouldDisableAfc(params.config)) { + const transformedParams = await this.processParamsMaybeAddMcpUsage(params); + return await this.generateContentStreamInternal(transformedParams); + } + const incompatibleToolIndexes = findAfcIncompatibleToolIndexes(params); + if (incompatibleToolIndexes.length > 0) { + const formattedIndexes = incompatibleToolIndexes.map((index) => `tools[${index}]`).join(", "); + throw new Error(`Incompatible tools found at ${formattedIndexes}. Automatic function calling with CallableTools (or MCP objects) and basic FunctionDeclarations" is not yet supported.`); + } + const streamFunctionCall = (_c = (_b = (_a3 = params === null || params === void 0 ? void 0 : params.config) === null || _a3 === void 0 ? void 0 : _a3.toolConfig) === null || _b === void 0 ? void 0 : _b.functionCallingConfig) === null || _c === void 0 ? void 0 : _c.streamFunctionCallArguments; + const disableAfc = (_e = (_d = params === null || params === void 0 ? void 0 : params.config) === null || _d === void 0 ? void 0 : _d.automaticFunctionCalling) === null || _e === void 0 ? void 0 : _e.disable; + if (streamFunctionCall && !disableAfc) { + throw new Error("Running in streaming mode with 'streamFunctionCallArguments' enabled, this feature is not compatible with automatic function calling (AFC). Please set 'config.automaticFunctionCalling.disable' to true to disable AFC or leave 'config.toolConfig.functionCallingConfig.streamFunctionCallArguments' to be undefined or set to false to disable streaming function call arguments feature."); + } + return await this.processAfcStream(params); + }; + this.generateImages = async (params) => { + return await this.generateImagesInternal(params).then((apiResponse) => { + var _a3; + let positivePromptSafetyAttributes; + const generatedImages = []; + if (apiResponse === null || apiResponse === void 0 ? void 0 : apiResponse.generatedImages) { + for (const generatedImage of apiResponse.generatedImages) { + if (generatedImage && (generatedImage === null || generatedImage === void 0 ? void 0 : generatedImage.safetyAttributes) && ((_a3 = generatedImage === null || generatedImage === void 0 ? void 0 : generatedImage.safetyAttributes) === null || _a3 === void 0 ? void 0 : _a3.contentType) === "Positive Prompt") { + positivePromptSafetyAttributes = generatedImage === null || generatedImage === void 0 ? void 0 : generatedImage.safetyAttributes; + } else { + generatedImages.push(generatedImage); + } + } + } + let response; + if (positivePromptSafetyAttributes) { + response = { + generatedImages, + positivePromptSafetyAttributes, + sdkHttpResponse: apiResponse.sdkHttpResponse + }; + } else { + response = { + generatedImages, + sdkHttpResponse: apiResponse.sdkHttpResponse + }; + } + return response; + }); + }; + this.list = async (params) => { + var _a3; + const defaultConfig = { + queryBase: true + }; + const actualConfig = Object.assign(Object.assign({}, defaultConfig), params === null || params === void 0 ? void 0 : params.config); + const actualParams = { + config: actualConfig + }; + if (this.apiClient.isVertexAI()) { + if (!actualParams.config.queryBase) { + if ((_a3 = actualParams.config) === null || _a3 === void 0 ? void 0 : _a3.filter) { + throw new Error("Filtering tuned models list for Vertex AI is not currently supported"); + } else { + actualParams.config.filter = "labels.tune-type:*"; + } + } + } + return new Pager(PagedItem.PAGED_ITEM_MODELS, (x2) => this.listInternal(x2), await this.listInternal(actualParams), actualParams); + }; + this.editImage = async (params) => { + const paramsInternal = { + model: params.model, + prompt: params.prompt, + referenceImages: [], + config: params.config + }; + if (params.referenceImages) { + if (params.referenceImages) { + paramsInternal.referenceImages = params.referenceImages.map((img) => img.toReferenceImageAPI()); + } + } + return await this.editImageInternal(paramsInternal); + }; + this.upscaleImage = async (params) => { + let apiConfig = { + numberOfImages: 1, + mode: "upscale" + }; + if (params.config) { + apiConfig = Object.assign(Object.assign({}, apiConfig), params.config); + } + const apiParams = { + model: params.model, + image: params.image, + upscaleFactor: params.upscaleFactor, + config: apiConfig + }; + return await this.upscaleImageInternal(apiParams); + }; + this.generateVideos = async (params) => { + var _a3, _b, _c, _d, _e, _f; + if ((params.prompt || params.image || params.video) && params.source) { + throw new Error("Source and prompt/image/video are mutually exclusive. Please only use source."); + } + if (!this.apiClient.isVertexAI()) { + if (((_a3 = params.video) === null || _a3 === void 0 ? void 0 : _a3.uri) && ((_b = params.video) === null || _b === void 0 ? void 0 : _b.videoBytes)) { + params.video = { + uri: params.video.uri, + mimeType: params.video.mimeType + }; + } else if (((_d = (_c = params.source) === null || _c === void 0 ? void 0 : _c.video) === null || _d === void 0 ? void 0 : _d.uri) && ((_f = (_e = params.source) === null || _e === void 0 ? void 0 : _e.video) === null || _f === void 0 ? void 0 : _f.videoBytes)) { + params.source.video = { + uri: params.source.video.uri, + mimeType: params.source.video.mimeType + }; + } + } + return await this.generateVideosInternal(params); + }; + } + /** + * This logic is needed for GenerateContentConfig only. + * Previously we made GenerateContentConfig.responseSchema field to accept + * unknown. Since v1.9.0, we switch to use backend JSON schema support. + * To maintain backward compatibility, we move the data that was treated as + * JSON schema from the responseSchema field to the responseJsonSchema field. + */ + maybeMoveToResponseJsonSchem(params) { + if (params.config && params.config.responseSchema) { + if (!params.config.responseJsonSchema) { + if (Object.keys(params.config.responseSchema).includes("$schema")) { + params.config.responseJsonSchema = params.config.responseSchema; + delete params.config.responseSchema; + } + } + } + return; + } + /** + * Transforms the CallableTools in the parameters to be simply Tools, it + * copies the params into a new object and replaces the tools, it does not + * modify the original params. Also sets the MCP usage header if there are + * MCP tools in the parameters. + */ + async processParamsMaybeAddMcpUsage(params) { + var _a3, _b, _c; + const tools = (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.tools; + if (!tools) { + return params; + } + const transformedTools = await Promise.all(tools.map(async (tool) => { + if (isCallableTool(tool)) { + const callableTool = tool; + return await callableTool.tool(); + } + return tool; + })); + const newParams = { + model: params.model, + contents: params.contents, + config: Object.assign(Object.assign({}, params.config), { tools: transformedTools }) + }; + newParams.config.tools = transformedTools; + if (params.config && params.config.tools && hasMcpToolUsage(params.config.tools)) { + const headers = (_c = (_b = params.config.httpOptions) === null || _b === void 0 ? void 0 : _b.headers) !== null && _c !== void 0 ? _c : {}; + let newHeaders = Object.assign({}, headers); + if (Object.keys(newHeaders).length === 0) { + newHeaders = this.apiClient.getDefaultHeaders(); + } + setMcpUsageHeader(newHeaders); + newParams.config.httpOptions = Object.assign(Object.assign({}, params.config.httpOptions), { headers: newHeaders }); + } + return newParams; + } + async initAfcToolsMap(params) { + var _a3, _b, _c; + const afcTools = /* @__PURE__ */ new Map(); + for (const tool of (_b = (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.tools) !== null && _b !== void 0 ? _b : []) { + if (isCallableTool(tool)) { + const callableTool = tool; + const toolDeclaration = await callableTool.tool(); + for (const declaration of (_c = toolDeclaration.functionDeclarations) !== null && _c !== void 0 ? _c : []) { + if (!declaration.name) { + throw new Error("Function declaration name is required."); + } + if (afcTools.has(declaration.name)) { + throw new Error(`Duplicate tool declaration name: ${declaration.name}`); + } + afcTools.set(declaration.name, callableTool); + } + } + } + return afcTools; + } + async processAfcStream(params) { + var _a3, _b, _c; + const maxRemoteCalls = (_c = (_b = (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.automaticFunctionCalling) === null || _b === void 0 ? void 0 : _b.maximumRemoteCalls) !== null && _c !== void 0 ? _c : DEFAULT_MAX_REMOTE_CALLS; + let wereFunctionsCalled = false; + let remoteCallCount = 0; + const afcToolsMap = await this.initAfcToolsMap(params); + return function(models, afcTools, params2) { + return __asyncGenerator(this, arguments, function* () { + var _a4, e_1, _b2, _c2; + var _d, _e; + while (remoteCallCount < maxRemoteCalls) { + if (wereFunctionsCalled) { + remoteCallCount++; + wereFunctionsCalled = false; + } + const transformedParams = yield __await(models.processParamsMaybeAddMcpUsage(params2)); + const response = yield __await(models.generateContentStreamInternal(transformedParams)); + const functionResponses = []; + const responseContents = []; + try { + for (var _f = true, response_1 = (e_1 = void 0, __asyncValues(response)), response_1_1; response_1_1 = yield __await(response_1.next()), _a4 = response_1_1.done, !_a4; _f = true) { + _c2 = response_1_1.value; + _f = false; + const chunk = _c2; + yield yield __await(chunk); + if (chunk.candidates && ((_d = chunk.candidates[0]) === null || _d === void 0 ? void 0 : _d.content)) { + responseContents.push(chunk.candidates[0].content); + for (const part of (_e = chunk.candidates[0].content.parts) !== null && _e !== void 0 ? _e : []) { + if (remoteCallCount < maxRemoteCalls && part.functionCall) { + if (!part.functionCall.name) { + throw new Error("Function call name was not returned by the model."); + } + if (!afcTools.has(part.functionCall.name)) { + throw new Error(`Automatic function calling was requested, but not all the tools the model used implement the CallableTool interface. Available tools: ${afcTools.keys()}, mising tool: ${part.functionCall.name}`); + } else { + const responseParts = yield __await(afcTools.get(part.functionCall.name).callTool([part.functionCall])); + functionResponses.push(...responseParts); + } + } + } + } + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (!_f && !_a4 && (_b2 = response_1.return)) + yield __await(_b2.call(response_1)); + } finally { + if (e_1) + throw e_1.error; + } + } + if (functionResponses.length > 0) { + wereFunctionsCalled = true; + const typedResponseChunk = new GenerateContentResponse(); + typedResponseChunk.candidates = [ + { + content: { + role: "user", + parts: functionResponses + } + } + ]; + yield yield __await(typedResponseChunk); + const newContents = []; + newContents.push(...responseContents); + newContents.push({ + role: "user", + parts: functionResponses + }); + const updatedContents = tContents(params2.contents).concat(newContents); + params2.contents = updatedContents; + } else { + break; + } + } + }); + }(this, afcToolsMap, params); + } + async generateContentInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = generateContentParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:generateContent", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = generateContentResponseFromVertex(apiResponse); + const typedResp = new GenerateContentResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = generateContentParametersToMldev(this.apiClient, params); + path7 = formatMap("{model}:generateContent", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = generateContentResponseFromMldev(apiResponse); + const typedResp = new GenerateContentResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + async generateContentStreamInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = generateContentParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:streamGenerateContent?alt=sse", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + const apiClient = this.apiClient; + response = apiClient.requestStream({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }); + return response.then(function(apiResponse) { + return __asyncGenerator(this, arguments, function* () { + var _a4, e_2, _b2, _c2; + try { + for (var _d2 = true, apiResponse_1 = __asyncValues(apiResponse), apiResponse_1_1; apiResponse_1_1 = yield __await(apiResponse_1.next()), _a4 = apiResponse_1_1.done, !_a4; _d2 = true) { + _c2 = apiResponse_1_1.value; + _d2 = false; + const chunk = _c2; + const resp = generateContentResponseFromVertex(yield __await(chunk.json()), params); + resp["sdkHttpResponse"] = { + headers: chunk.headers + }; + const typedResp = new GenerateContentResponse(); + Object.assign(typedResp, resp); + yield yield __await(typedResp); + } + } catch (e_2_1) { + e_2 = { error: e_2_1 }; + } finally { + try { + if (!_d2 && !_a4 && (_b2 = apiResponse_1.return)) + yield __await(_b2.call(apiResponse_1)); + } finally { + if (e_2) + throw e_2.error; + } + } + }); + }); + } else { + const body = generateContentParametersToMldev(this.apiClient, params); + path7 = formatMap("{model}:streamGenerateContent?alt=sse", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + const apiClient = this.apiClient; + response = apiClient.requestStream({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }); + return response.then(function(apiResponse) { + return __asyncGenerator(this, arguments, function* () { + var _a4, e_3, _b2, _c2; + try { + for (var _d2 = true, apiResponse_2 = __asyncValues(apiResponse), apiResponse_2_1; apiResponse_2_1 = yield __await(apiResponse_2.next()), _a4 = apiResponse_2_1.done, !_a4; _d2 = true) { + _c2 = apiResponse_2_1.value; + _d2 = false; + const chunk = _c2; + const resp = generateContentResponseFromMldev(yield __await(chunk.json()), params); + resp["sdkHttpResponse"] = { + headers: chunk.headers + }; + const typedResp = new GenerateContentResponse(); + Object.assign(typedResp, resp); + yield yield __await(typedResp); + } + } catch (e_3_1) { + e_3 = { error: e_3_1 }; + } finally { + try { + if (!_d2 && !_a4 && (_b2 = apiResponse_2.return)) + yield __await(_b2.call(apiResponse_2)); + } finally { + if (e_3) + throw e_3.error; + } + } + }); + }); + } + } + /** + * Calculates embeddings for the given contents. Only text is supported. + * + * @param params - The parameters for embedding contents. + * @return The response from the API. + * + * @example + * ```ts + * const response = await ai.models.embedContent({ + * model: 'text-embedding-004', + * contents: [ + * 'What is your name?', + * 'What is your favorite color?', + * ], + * config: { + * outputDimensionality: 64, + * }, + * }); + * console.log(response); + * ``` + */ + async embedContentInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = embedContentParametersPrivateToVertex(this.apiClient, params, params); + const endpointUrl = tIsVertexEmbedContentModel(params.model) ? "{model}:embedContent" : "{model}:predict"; + path7 = formatMap(endpointUrl, body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = embedContentResponseFromVertex(apiResponse, params); + const typedResp = new EmbedContentResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = embedContentParametersPrivateToMldev(this.apiClient, params); + path7 = formatMap("{model}:batchEmbedContents", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = embedContentResponseFromMldev(apiResponse); + const typedResp = new EmbedContentResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Private method for generating images. + */ + async generateImagesInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = generateImagesParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:predict", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = generateImagesResponseFromVertex(apiResponse); + const typedResp = new GenerateImagesResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = generateImagesParametersToMldev(this.apiClient, params); + path7 = formatMap("{model}:predict", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = generateImagesResponseFromMldev(apiResponse); + const typedResp = new GenerateImagesResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Private method for editing an image. + */ + async editImageInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = editImageParametersInternalToVertex(this.apiClient, params); + path7 = formatMap("{model}:predict", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = editImageResponseFromVertex(apiResponse); + const typedResp = new EditImageResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + throw new Error("This method is only supported by the Vertex AI."); + } + } + /** + * Private method for upscaling an image. + */ + async upscaleImageInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = upscaleImageAPIParametersInternalToVertex(this.apiClient, params); + path7 = formatMap("{model}:predict", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = upscaleImageResponseFromVertex(apiResponse); + const typedResp = new UpscaleImageResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + throw new Error("This method is only supported by the Vertex AI."); + } + } + /** + * Recontextualizes an image. + * + * There are two types of recontextualization currently supported: + * 1) Imagen Product Recontext - Generate images of products in new scenes + * and contexts. + * 2) Virtual Try-On: Generate images of persons modeling fashion products. + * + * @param params - The parameters for recontextualizing an image. + * @return The response from the API. + * + * @example + * ```ts + * const response1 = await ai.models.recontextImage({ + * model: 'imagen-product-recontext-preview-06-30', + * source: { + * prompt: 'In a modern kitchen setting.', + * productImages: [productImage], + * }, + * config: { + * numberOfImages: 1, + * }, + * }); + * console.log(response1?.generatedImages?.[0]?.image?.imageBytes); + * + * const response2 = await ai.models.recontextImage({ + * model: 'virtual-try-on-001', + * source: { + * personImage: personImage, + * productImages: [productImage], + * }, + * config: { + * numberOfImages: 1, + * }, + * }); + * console.log(response2?.generatedImages?.[0]?.image?.imageBytes); + * ``` + */ + async recontextImage(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = recontextImageParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:predict", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = recontextImageResponseFromVertex(apiResponse); + const typedResp = new RecontextImageResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + throw new Error("This method is only supported by the Vertex AI."); + } + } + /** + * Segments an image, creating a mask of a specified area. + * + * @param params - The parameters for segmenting an image. + * @return The response from the API. + * + * @example + * ```ts + * const response = await ai.models.segmentImage({ + * model: 'image-segmentation-001', + * source: { + * image: image, + * }, + * config: { + * mode: 'foreground', + * }, + * }); + * console.log(response?.generatedMasks?.[0]?.mask?.imageBytes); + * ``` + */ + async segmentImage(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = segmentImageParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:predict", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = segmentImageResponseFromVertex(apiResponse); + const typedResp = new SegmentImageResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + throw new Error("This method is only supported by the Vertex AI."); + } + } + /** + * Fetches information about a model by name. + * + * @example + * ```ts + * const modelInfo = await ai.models.get({model: 'gemini-2.0-flash'}); + * ``` + */ + async get(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = getModelParametersToVertex(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = modelFromVertex(apiResponse); + return resp; + }); + } else { + const body = getModelParametersToMldev(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = modelFromMldev(apiResponse); + return resp; + }); + } + } + async listInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = listModelsParametersToVertex(this.apiClient, params); + path7 = formatMap("{models_url}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listModelsResponseFromVertex(apiResponse); + const typedResp = new ListModelsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = listModelsParametersToMldev(this.apiClient, params); + path7 = formatMap("{models_url}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listModelsResponseFromMldev(apiResponse); + const typedResp = new ListModelsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Updates a tuned model by its name. + * + * @param params - The parameters for updating the model. + * @return The response from the API. + * + * @example + * ```ts + * const response = await ai.models.update({ + * model: 'tuned-model-name', + * config: { + * displayName: 'New display name', + * description: 'New description', + * }, + * }); + * ``` + */ + async update(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = updateModelParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "PATCH", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = modelFromVertex(apiResponse); + return resp; + }); + } else { + const body = updateModelParametersToMldev(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "PATCH", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = modelFromMldev(apiResponse); + return resp; + }); + } + } + /** + * Deletes a tuned model by its name. + * + * @param params - The parameters for deleting the model. + * @return The response from the API. + * + * @example + * ```ts + * const response = await ai.models.delete({model: 'tuned-model-name'}); + * ``` + */ + async delete(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = deleteModelParametersToVertex(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = deleteModelResponseFromVertex(apiResponse); + const typedResp = new DeleteModelResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = deleteModelParametersToMldev(this.apiClient, params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = deleteModelResponseFromMldev(apiResponse); + const typedResp = new DeleteModelResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Counts the number of tokens in the given contents. Multimodal input is + * supported for Gemini models. + * + * @param params - The parameters for counting tokens. + * @return The response from the API. + * + * @example + * ```ts + * const response = await ai.models.countTokens({ + * model: 'gemini-2.0-flash', + * contents: 'The quick brown fox jumps over the lazy dog.' + * }); + * console.log(response); + * ``` + */ + async countTokens(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = countTokensParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:countTokens", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = countTokensResponseFromVertex(apiResponse); + const typedResp = new CountTokensResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = countTokensParametersToMldev(this.apiClient, params); + path7 = formatMap("{model}:countTokens", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = countTokensResponseFromMldev(apiResponse); + const typedResp = new CountTokensResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Given a list of contents, returns a corresponding TokensInfo containing + * the list of tokens and list of token ids. + * + * This method is not supported by the Gemini Developer API. + * + * @param params - The parameters for computing tokens. + * @return The response from the API. + * + * @example + * ```ts + * const response = await ai.models.computeTokens({ + * model: 'gemini-2.0-flash', + * contents: 'What is your name?' + * }); + * console.log(response); + * ``` + */ + async computeTokens(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = computeTokensParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:computeTokens", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = computeTokensResponseFromVertex(apiResponse); + const typedResp = new ComputeTokensResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + throw new Error("This method is only supported by the Vertex AI."); + } + } + /** + * Private method for generating videos. + */ + async generateVideosInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = generateVideosParametersToVertex(this.apiClient, params); + path7 = formatMap("{model}:predictLongRunning", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = generateVideosOperationFromVertex(apiResponse); + const typedResp = new GenerateVideosOperation(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = generateVideosParametersToMldev(this.apiClient, params); + path7 = formatMap("{model}:predictLongRunning", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = generateVideosOperationFromMldev(apiResponse); + const typedResp = new GenerateVideosOperation(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } +}; +var Operations = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + } + /** + * Gets the status of a long-running operation. + * + * @param parameters The parameters for the get operation request. + * @return The updated Operation object, with the latest status or result. + */ + async getVideosOperation(parameters) { + const operation = parameters.operation; + const config = parameters.config; + if (operation.name === void 0 || operation.name === "") { + throw new Error("Operation name is required."); + } + if (this.apiClient.isVertexAI()) { + const resourceName2 = operation.name.split("/operations/")[0]; + let httpOptions = void 0; + if (config && "httpOptions" in config) { + httpOptions = config.httpOptions; + } + const rawOperation = await this.fetchPredictVideosOperationInternal({ + operationName: operation.name, + resourceName: resourceName2, + config: { httpOptions } + }); + return operation._fromAPIResponse({ + apiResponse: rawOperation, + _isVertexAI: true + }); + } else { + const rawOperation = await this.getVideosOperationInternal({ + operationName: operation.name, + config + }); + return operation._fromAPIResponse({ + apiResponse: rawOperation, + _isVertexAI: false + }); + } + } + /** + * Gets the status of a long-running operation. + * + * @param parameters The parameters for the get operation request. + * @return The updated Operation object, with the latest status or result. + */ + async get(parameters) { + const operation = parameters.operation; + const config = parameters.config; + if (operation.name === void 0 || operation.name === "") { + throw new Error("Operation name is required."); + } + if (this.apiClient.isVertexAI()) { + const resourceName2 = operation.name.split("/operations/")[0]; + let httpOptions = void 0; + if (config && "httpOptions" in config) { + httpOptions = config.httpOptions; + } + const rawOperation = await this.fetchPredictVideosOperationInternal({ + operationName: operation.name, + resourceName: resourceName2, + config: { httpOptions } + }); + return operation._fromAPIResponse({ + apiResponse: rawOperation, + _isVertexAI: true + }); + } else { + const rawOperation = await this.getVideosOperationInternal({ + operationName: operation.name, + config + }); + return operation._fromAPIResponse({ + apiResponse: rawOperation, + _isVertexAI: false + }); + } + } + async getVideosOperationInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = getOperationParametersToVertex(params); + path7 = formatMap("{operationName}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response; + } else { + const body = getOperationParametersToMldev(params); + path7 = formatMap("{operationName}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response; + } + } + async fetchPredictVideosOperationInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = fetchPredictOperationParametersToVertex(params); + path7 = formatMap("{resourceName}:fetchPredictOperation", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response; + } else { + throw new Error("This method is only supported by the Vertex AI."); + } + } +}; +function blobToMldev(fromObject) { + const toObject = {}; + const fromData = getValueByPath(fromObject, ["data"]); + if (fromData != null) { + setValueByPath(toObject, ["data"], fromData); + } + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function contentToMldev(fromObject) { + const toObject = {}; + const fromParts = getValueByPath(fromObject, ["parts"]); + if (fromParts != null) { + let transformedList = fromParts; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return partToMldev(item); + }); + } + setValueByPath(toObject, ["parts"], transformedList); + } + const fromRole = getValueByPath(fromObject, ["role"]); + if (fromRole != null) { + setValueByPath(toObject, ["role"], fromRole); + } + return toObject; +} +function createAuthTokenConfigToMldev(apiClient, fromObject, parentObject) { + const toObject = {}; + const fromExpireTime = getValueByPath(fromObject, ["expireTime"]); + if (parentObject !== void 0 && fromExpireTime != null) { + setValueByPath(parentObject, ["expireTime"], fromExpireTime); + } + const fromNewSessionExpireTime = getValueByPath(fromObject, [ + "newSessionExpireTime" + ]); + if (parentObject !== void 0 && fromNewSessionExpireTime != null) { + setValueByPath(parentObject, ["newSessionExpireTime"], fromNewSessionExpireTime); + } + const fromUses = getValueByPath(fromObject, ["uses"]); + if (parentObject !== void 0 && fromUses != null) { + setValueByPath(parentObject, ["uses"], fromUses); + } + const fromLiveConnectConstraints = getValueByPath(fromObject, [ + "liveConnectConstraints" + ]); + if (parentObject !== void 0 && fromLiveConnectConstraints != null) { + setValueByPath(parentObject, ["bidiGenerateContentSetup"], liveConnectConstraintsToMldev(apiClient, fromLiveConnectConstraints)); + } + const fromLockAdditionalFields = getValueByPath(fromObject, [ + "lockAdditionalFields" + ]); + if (parentObject !== void 0 && fromLockAdditionalFields != null) { + setValueByPath(parentObject, ["fieldMask"], fromLockAdditionalFields); + } + return toObject; +} +function createAuthTokenParametersToMldev(apiClient, fromObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["config"], createAuthTokenConfigToMldev(apiClient, fromConfig, toObject)); + } + return toObject; +} +function fileDataToMldev(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["displayName"]) !== void 0) { + throw new Error("displayName parameter is not supported in Gemini API."); + } + const fromFileUri = getValueByPath(fromObject, ["fileUri"]); + if (fromFileUri != null) { + setValueByPath(toObject, ["fileUri"], fromFileUri); + } + const fromMimeType = getValueByPath(fromObject, ["mimeType"]); + if (fromMimeType != null) { + setValueByPath(toObject, ["mimeType"], fromMimeType); + } + return toObject; +} +function functionCallToMldev(fromObject) { + const toObject = {}; + const fromId = getValueByPath(fromObject, ["id"]); + if (fromId != null) { + setValueByPath(toObject, ["id"], fromId); + } + const fromArgs = getValueByPath(fromObject, ["args"]); + if (fromArgs != null) { + setValueByPath(toObject, ["args"], fromArgs); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + if (getValueByPath(fromObject, ["partialArgs"]) !== void 0) { + throw new Error("partialArgs parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["willContinue"]) !== void 0) { + throw new Error("willContinue parameter is not supported in Gemini API."); + } + return toObject; +} +function googleMapsToMldev(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["authConfig"]) !== void 0) { + throw new Error("authConfig parameter is not supported in Gemini API."); + } + const fromEnableWidget = getValueByPath(fromObject, ["enableWidget"]); + if (fromEnableWidget != null) { + setValueByPath(toObject, ["enableWidget"], fromEnableWidget); + } + return toObject; +} +function googleSearchToMldev(fromObject) { + const toObject = {}; + const fromSearchTypes = getValueByPath(fromObject, ["searchTypes"]); + if (fromSearchTypes != null) { + setValueByPath(toObject, ["searchTypes"], fromSearchTypes); + } + if (getValueByPath(fromObject, ["excludeDomains"]) !== void 0) { + throw new Error("excludeDomains parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["blockingConfidence"]) !== void 0) { + throw new Error("blockingConfidence parameter is not supported in Gemini API."); + } + const fromTimeRangeFilter = getValueByPath(fromObject, [ + "timeRangeFilter" + ]); + if (fromTimeRangeFilter != null) { + setValueByPath(toObject, ["timeRangeFilter"], fromTimeRangeFilter); + } + return toObject; +} +function liveConnectConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromGenerationConfig = getValueByPath(fromObject, [ + "generationConfig" + ]); + if (parentObject !== void 0 && fromGenerationConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig"], fromGenerationConfig); + } + const fromResponseModalities = getValueByPath(fromObject, [ + "responseModalities" + ]); + if (parentObject !== void 0 && fromResponseModalities != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "responseModalities"], fromResponseModalities); + } + const fromTemperature = getValueByPath(fromObject, ["temperature"]); + if (parentObject !== void 0 && fromTemperature != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "temperature"], fromTemperature); + } + const fromTopP = getValueByPath(fromObject, ["topP"]); + if (parentObject !== void 0 && fromTopP != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "topP"], fromTopP); + } + const fromTopK = getValueByPath(fromObject, ["topK"]); + if (parentObject !== void 0 && fromTopK != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "topK"], fromTopK); + } + const fromMaxOutputTokens = getValueByPath(fromObject, [ + "maxOutputTokens" + ]); + if (parentObject !== void 0 && fromMaxOutputTokens != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "maxOutputTokens"], fromMaxOutputTokens); + } + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (parentObject !== void 0 && fromMediaResolution != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "mediaResolution"], fromMediaResolution); + } + const fromSeed = getValueByPath(fromObject, ["seed"]); + if (parentObject !== void 0 && fromSeed != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "seed"], fromSeed); + } + const fromSpeechConfig = getValueByPath(fromObject, ["speechConfig"]); + if (parentObject !== void 0 && fromSpeechConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "speechConfig"], tLiveSpeechConfig(fromSpeechConfig)); + } + const fromThinkingConfig = getValueByPath(fromObject, [ + "thinkingConfig" + ]); + if (parentObject !== void 0 && fromThinkingConfig != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "thinkingConfig"], fromThinkingConfig); + } + const fromEnableAffectiveDialog = getValueByPath(fromObject, [ + "enableAffectiveDialog" + ]); + if (parentObject !== void 0 && fromEnableAffectiveDialog != null) { + setValueByPath(parentObject, ["setup", "generationConfig", "enableAffectiveDialog"], fromEnableAffectiveDialog); + } + const fromSystemInstruction = getValueByPath(fromObject, [ + "systemInstruction" + ]); + if (parentObject !== void 0 && fromSystemInstruction != null) { + setValueByPath(parentObject, ["setup", "systemInstruction"], contentToMldev(tContent(fromSystemInstruction))); + } + const fromTools = getValueByPath(fromObject, ["tools"]); + if (parentObject !== void 0 && fromTools != null) { + let transformedList = tTools(fromTools); + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return toolToMldev(tTool(item)); + }); + } + setValueByPath(parentObject, ["setup", "tools"], transformedList); + } + const fromSessionResumption = getValueByPath(fromObject, [ + "sessionResumption" + ]); + if (parentObject !== void 0 && fromSessionResumption != null) { + setValueByPath(parentObject, ["setup", "sessionResumption"], sessionResumptionConfigToMldev(fromSessionResumption)); + } + const fromInputAudioTranscription = getValueByPath(fromObject, [ + "inputAudioTranscription" + ]); + if (parentObject !== void 0 && fromInputAudioTranscription != null) { + setValueByPath(parentObject, ["setup", "inputAudioTranscription"], fromInputAudioTranscription); + } + const fromOutputAudioTranscription = getValueByPath(fromObject, [ + "outputAudioTranscription" + ]); + if (parentObject !== void 0 && fromOutputAudioTranscription != null) { + setValueByPath(parentObject, ["setup", "outputAudioTranscription"], fromOutputAudioTranscription); + } + const fromRealtimeInputConfig = getValueByPath(fromObject, [ + "realtimeInputConfig" + ]); + if (parentObject !== void 0 && fromRealtimeInputConfig != null) { + setValueByPath(parentObject, ["setup", "realtimeInputConfig"], fromRealtimeInputConfig); + } + const fromContextWindowCompression = getValueByPath(fromObject, [ + "contextWindowCompression" + ]); + if (parentObject !== void 0 && fromContextWindowCompression != null) { + setValueByPath(parentObject, ["setup", "contextWindowCompression"], fromContextWindowCompression); + } + const fromProactivity = getValueByPath(fromObject, ["proactivity"]); + if (parentObject !== void 0 && fromProactivity != null) { + setValueByPath(parentObject, ["setup", "proactivity"], fromProactivity); + } + if (getValueByPath(fromObject, ["explicitVadSignal"]) !== void 0) { + throw new Error("explicitVadSignal parameter is not supported in Gemini API."); + } + return toObject; +} +function liveConnectConstraintsToMldev(apiClient, fromObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["model"]); + if (fromModel != null) { + setValueByPath(toObject, ["setup", "model"], tModel(apiClient, fromModel)); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + setValueByPath(toObject, ["config"], liveConnectConfigToMldev(fromConfig, toObject)); + } + return toObject; +} +function partToMldev(fromObject) { + const toObject = {}; + const fromMediaResolution = getValueByPath(fromObject, [ + "mediaResolution" + ]); + if (fromMediaResolution != null) { + setValueByPath(toObject, ["mediaResolution"], fromMediaResolution); + } + const fromCodeExecutionResult = getValueByPath(fromObject, [ + "codeExecutionResult" + ]); + if (fromCodeExecutionResult != null) { + setValueByPath(toObject, ["codeExecutionResult"], fromCodeExecutionResult); + } + const fromExecutableCode = getValueByPath(fromObject, [ + "executableCode" + ]); + if (fromExecutableCode != null) { + setValueByPath(toObject, ["executableCode"], fromExecutableCode); + } + const fromFileData = getValueByPath(fromObject, ["fileData"]); + if (fromFileData != null) { + setValueByPath(toObject, ["fileData"], fileDataToMldev(fromFileData)); + } + const fromFunctionCall = getValueByPath(fromObject, ["functionCall"]); + if (fromFunctionCall != null) { + setValueByPath(toObject, ["functionCall"], functionCallToMldev(fromFunctionCall)); + } + const fromFunctionResponse = getValueByPath(fromObject, [ + "functionResponse" + ]); + if (fromFunctionResponse != null) { + setValueByPath(toObject, ["functionResponse"], fromFunctionResponse); + } + const fromInlineData = getValueByPath(fromObject, ["inlineData"]); + if (fromInlineData != null) { + setValueByPath(toObject, ["inlineData"], blobToMldev(fromInlineData)); + } + const fromText = getValueByPath(fromObject, ["text"]); + if (fromText != null) { + setValueByPath(toObject, ["text"], fromText); + } + const fromThought = getValueByPath(fromObject, ["thought"]); + if (fromThought != null) { + setValueByPath(toObject, ["thought"], fromThought); + } + const fromThoughtSignature = getValueByPath(fromObject, [ + "thoughtSignature" + ]); + if (fromThoughtSignature != null) { + setValueByPath(toObject, ["thoughtSignature"], fromThoughtSignature); + } + const fromVideoMetadata = getValueByPath(fromObject, [ + "videoMetadata" + ]); + if (fromVideoMetadata != null) { + setValueByPath(toObject, ["videoMetadata"], fromVideoMetadata); + } + return toObject; +} +function sessionResumptionConfigToMldev(fromObject) { + const toObject = {}; + const fromHandle = getValueByPath(fromObject, ["handle"]); + if (fromHandle != null) { + setValueByPath(toObject, ["handle"], fromHandle); + } + if (getValueByPath(fromObject, ["transparent"]) !== void 0) { + throw new Error("transparent parameter is not supported in Gemini API."); + } + return toObject; +} +function toolToMldev(fromObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["retrieval"]) !== void 0) { + throw new Error("retrieval parameter is not supported in Gemini API."); + } + const fromComputerUse = getValueByPath(fromObject, ["computerUse"]); + if (fromComputerUse != null) { + setValueByPath(toObject, ["computerUse"], fromComputerUse); + } + const fromFileSearch = getValueByPath(fromObject, ["fileSearch"]); + if (fromFileSearch != null) { + setValueByPath(toObject, ["fileSearch"], fromFileSearch); + } + const fromGoogleSearch = getValueByPath(fromObject, ["googleSearch"]); + if (fromGoogleSearch != null) { + setValueByPath(toObject, ["googleSearch"], googleSearchToMldev(fromGoogleSearch)); + } + const fromCodeExecution = getValueByPath(fromObject, [ + "codeExecution" + ]); + if (fromCodeExecution != null) { + setValueByPath(toObject, ["codeExecution"], fromCodeExecution); + } + if (getValueByPath(fromObject, ["enterpriseWebSearch"]) !== void 0) { + throw new Error("enterpriseWebSearch parameter is not supported in Gemini API."); + } + const fromFunctionDeclarations = getValueByPath(fromObject, [ + "functionDeclarations" + ]); + if (fromFunctionDeclarations != null) { + let transformedList = fromFunctionDeclarations; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["functionDeclarations"], transformedList); + } + const fromGoogleMaps = getValueByPath(fromObject, ["googleMaps"]); + if (fromGoogleMaps != null) { + setValueByPath(toObject, ["googleMaps"], googleMapsToMldev(fromGoogleMaps)); + } + const fromGoogleSearchRetrieval = getValueByPath(fromObject, [ + "googleSearchRetrieval" + ]); + if (fromGoogleSearchRetrieval != null) { + setValueByPath(toObject, ["googleSearchRetrieval"], fromGoogleSearchRetrieval); + } + const fromUrlContext = getValueByPath(fromObject, ["urlContext"]); + if (fromUrlContext != null) { + setValueByPath(toObject, ["urlContext"], fromUrlContext); + } + const fromMcpServers = getValueByPath(fromObject, ["mcpServers"]); + if (fromMcpServers != null) { + let transformedList = fromMcpServers; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["mcpServers"], transformedList); + } + return toObject; +} +function getFieldMasks(setup) { + const fields = []; + for (const key in setup) { + if (Object.prototype.hasOwnProperty.call(setup, key)) { + const value = setup[key]; + if (typeof value === "object" && value != null && Object.keys(value).length > 0) { + const field = Object.keys(value).map((kk) => `${key}.${kk}`); + fields.push(...field); + } else { + fields.push(key); + } + } + } + return fields.join(","); +} +function convertBidiSetupToTokenSetup(requestDict, config) { + let setupForMaskGeneration = null; + const bidiGenerateContentSetupValue = requestDict["bidiGenerateContentSetup"]; + if (typeof bidiGenerateContentSetupValue === "object" && bidiGenerateContentSetupValue !== null && "setup" in bidiGenerateContentSetupValue) { + const innerSetup = bidiGenerateContentSetupValue.setup; + if (typeof innerSetup === "object" && innerSetup !== null) { + requestDict["bidiGenerateContentSetup"] = innerSetup; + setupForMaskGeneration = innerSetup; + } else { + delete requestDict["bidiGenerateContentSetup"]; + } + } else if (bidiGenerateContentSetupValue !== void 0) { + delete requestDict["bidiGenerateContentSetup"]; + } + const preExistingFieldMask = requestDict["fieldMask"]; + if (setupForMaskGeneration) { + const generatedMaskFromBidi = getFieldMasks(setupForMaskGeneration); + if (Array.isArray(config === null || config === void 0 ? void 0 : config.lockAdditionalFields) && (config === null || config === void 0 ? void 0 : config.lockAdditionalFields.length) === 0) { + if (generatedMaskFromBidi) { + requestDict["fieldMask"] = generatedMaskFromBidi; + } else { + delete requestDict["fieldMask"]; + } + } else if ((config === null || config === void 0 ? void 0 : config.lockAdditionalFields) && config.lockAdditionalFields.length > 0 && preExistingFieldMask !== null && Array.isArray(preExistingFieldMask) && preExistingFieldMask.length > 0) { + const generationConfigFields = [ + "temperature", + "topK", + "topP", + "maxOutputTokens", + "responseModalities", + "seed", + "speechConfig" + ]; + let mappedFieldsFromPreExisting = []; + if (preExistingFieldMask.length > 0) { + mappedFieldsFromPreExisting = preExistingFieldMask.map((field) => { + if (generationConfigFields.includes(field)) { + return `generationConfig.${field}`; + } + return field; + }); + } + const finalMaskParts = []; + if (generatedMaskFromBidi) { + finalMaskParts.push(generatedMaskFromBidi); + } + if (mappedFieldsFromPreExisting.length > 0) { + finalMaskParts.push(...mappedFieldsFromPreExisting); + } + if (finalMaskParts.length > 0) { + requestDict["fieldMask"] = finalMaskParts.join(","); + } else { + delete requestDict["fieldMask"]; + } + } else { + delete requestDict["fieldMask"]; + } + } else { + if (preExistingFieldMask !== null && Array.isArray(preExistingFieldMask) && preExistingFieldMask.length > 0) { + requestDict["fieldMask"] = preExistingFieldMask.join(","); + } else { + delete requestDict["fieldMask"]; + } + } + return requestDict; +} +var Tokens = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + } + /** + * Creates an ephemeral auth token resource. + * + * @experimental + * + * @remarks + * Ephemeral auth tokens is only supported in the Gemini Developer API. + * It can be used for the session connection to the Live constrained API. + * Support in v1alpha only. + * + * @param params - The parameters for the create request. + * @return The created auth token. + * + * @example + * ```ts + * const ai = new GoogleGenAI({ + * apiKey: token.name, + * httpOptions: { apiVersion: 'v1alpha' } // Support in v1alpha only. + * }); + * + * // Case 1: If LiveEphemeralParameters is unset, unlock LiveConnectConfig + * // when using the token in Live API sessions. Each session connection can + * // use a different configuration. + * const config: CreateAuthTokenConfig = { + * uses: 3, + * expireTime: '2025-05-01T00:00:00Z', + * } + * const token = await ai.tokens.create(config); + * + * // Case 2: If LiveEphemeralParameters is set, lock all fields in + * // LiveConnectConfig when using the token in Live API sessions. For + * // example, changing `outputAudioTranscription` in the Live API + * // connection will be ignored by the API. + * const config: CreateAuthTokenConfig = + * uses: 3, + * expireTime: '2025-05-01T00:00:00Z', + * LiveEphemeralParameters: { + * model: 'gemini-2.0-flash-001', + * config: { + * 'responseModalities': ['AUDIO'], + * 'systemInstruction': 'Always answer in English.', + * } + * } + * } + * const token = await ai.tokens.create(config); + * + * // Case 3: If LiveEphemeralParameters is set and lockAdditionalFields is + * // set, lock LiveConnectConfig with set and additional fields (e.g. + * // responseModalities, systemInstruction, temperature in this example) when + * // using the token in Live API sessions. + * const config: CreateAuthTokenConfig = + * uses: 3, + * expireTime: '2025-05-01T00:00:00Z', + * LiveEphemeralParameters: { + * model: 'gemini-2.0-flash-001', + * config: { + * 'responseModalities': ['AUDIO'], + * 'systemInstruction': 'Always answer in English.', + * } + * }, + * lockAdditionalFields: ['temperature'], + * } + * const token = await ai.tokens.create(config); + * + * // Case 4: If LiveEphemeralParameters is set and lockAdditionalFields is + * // empty array, lock LiveConnectConfig with set fields (e.g. + * // responseModalities, systemInstruction in this example) when using the + * // token in Live API sessions. + * const config: CreateAuthTokenConfig = + * uses: 3, + * expireTime: '2025-05-01T00:00:00Z', + * LiveEphemeralParameters: { + * model: 'gemini-2.0-flash-001', + * config: { + * 'responseModalities': ['AUDIO'], + * 'systemInstruction': 'Always answer in English.', + * } + * }, + * lockAdditionalFields: [], + * } + * const token = await ai.tokens.create(config); + * ``` + */ + async create(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("The client.tokens.create method is only supported by the Gemini Developer API."); + } else { + const body = createAuthTokenParametersToMldev(this.apiClient, params); + path7 = formatMap("auth_tokens", body["_url"]); + queryParams = body["_query"]; + delete body["config"]; + delete body["_url"]; + delete body["_query"]; + const transformedBody = convertBidiSetupToTokenSetup(body, params.config); + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(transformedBody), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } +}; +function deleteDocumentConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromForce = getValueByPath(fromObject, ["force"]); + if (parentObject !== void 0 && fromForce != null) { + setValueByPath(parentObject, ["_query", "force"], fromForce); + } + return toObject; +} +function deleteDocumentParametersToMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + deleteDocumentConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function getDocumentParametersToMldev(fromObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); + } + return toObject; +} +function listDocumentsConfigToMldev(fromObject, parentObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + return toObject; +} +function listDocumentsParametersToMldev(fromObject) { + const toObject = {}; + const fromParent = getValueByPath(fromObject, ["parent"]); + if (fromParent != null) { + setValueByPath(toObject, ["_url", "parent"], fromParent); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listDocumentsConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function listDocumentsResponseFromMldev(fromObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromDocuments = getValueByPath(fromObject, ["documents"]); + if (fromDocuments != null) { + let transformedList = fromDocuments; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); + } + setValueByPath(toObject, ["documents"], transformedList); + } + return toObject; +} +var Documents = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + this.list = async (params) => { + return new Pager(PagedItem.PAGED_ITEM_DOCUMENTS, (x2) => this.listInternal({ parent: params.parent, config: x2.config }), await this.listInternal(params), params); + }; + } + /** + * Gets a Document. + * + * @param params - The parameters for getting a document. + * @return Document. + */ + async get(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = getDocumentParametersToMldev(params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } + /** + * Deletes a Document. + * + * @param params - The parameters for deleting a document. + */ + async delete(params) { + var _a3, _b; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = deleteDocumentParametersToMldev(params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + await this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }); + } + } + async listInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = listDocumentsParametersToMldev(params); + path7 = formatMap("{parent}/documents", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = listDocumentsResponseFromMldev(apiResponse); + const typedResp = new ListDocumentsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } +}; +var FileSearchStores = class extends BaseModule { + constructor(apiClient, documents = new Documents(apiClient)) { + super(); + this.apiClient = apiClient; + this.documents = documents; + this.list = async (params = {}) => { + return new Pager(PagedItem.PAGED_ITEM_FILE_SEARCH_STORES, (x2) => this.listInternal(x2), await this.listInternal(params), params); + }; + } + /** + * Uploads a file asynchronously to a given File Search Store. + * This method is not available in Vertex AI. + * Supported upload sources: + * - Node.js: File path (string) or Blob object. + * - Browser: Blob object (e.g., File). + * + * @remarks + * The `mimeType` can be specified in the `config` parameter. If omitted: + * - For file path (string) inputs, the `mimeType` will be inferred from the + * file extension. + * - For Blob object inputs, the `mimeType` will be set to the Blob's `type` + * property. + * + * This section can contain multiple paragraphs and code examples. + * + * @param params - Optional parameters specified in the + * `types.UploadToFileSearchStoreParameters` interface. + * @see {@link types.UploadToFileSearchStoreParameters#config} for the optional + * config in the parameters. + * @return A promise that resolves to a long running operation. + * @throws An error if called on a Vertex AI client. + * @throws An error if the `mimeType` is not provided and can not be inferred, + * the `mimeType` can be provided in the `params.config` parameter. + * @throws An error occurs if a suitable upload location cannot be established. + * + * @example + * The following code uploads a file to a given file search store. + * + * ```ts + * const operation = await ai.fileSearchStores.upload({fileSearchStoreName: 'fileSearchStores/foo-bar', file: 'file.txt', config: { + * mimeType: 'text/plain', + * }}); + * console.log(operation.name); + * ``` + */ + async uploadToFileSearchStore(params) { + if (this.apiClient.isVertexAI()) { + throw new Error("Vertex AI does not support uploading files to a file search store."); + } + return this.apiClient.uploadFileToFileSearchStore(params.fileSearchStoreName, params.file, params.config); + } + /** + * Creates a File Search Store. + * + * @param params - The parameters for creating a File Search Store. + * @return FileSearchStore. + */ + async create(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = createFileSearchStoreParametersToMldev(params); + path7 = formatMap("fileSearchStores", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } + /** + * Gets a File Search Store. + * + * @param params - The parameters for getting a File Search Store. + * @return FileSearchStore. + */ + async get(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = getFileSearchStoreParametersToMldev(params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((resp) => { + return resp; + }); + } + } + /** + * Deletes a File Search Store. + * + * @param params - The parameters for deleting a File Search Store. + */ + async delete(params) { + var _a3, _b; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = deleteFileSearchStoreParametersToMldev(params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + await this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "DELETE", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }); + } + } + async listInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = listFileSearchStoresParametersToMldev(params); + path7 = formatMap("fileSearchStores", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = listFileSearchStoresResponseFromMldev(apiResponse); + const typedResp = new ListFileSearchStoresResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + async uploadToFileSearchStoreInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = uploadToFileSearchStoreParametersToMldev(params); + path7 = formatMap("upload/v1beta/{file_search_store_name}:uploadToFileSearchStore", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = uploadToFileSearchStoreResumableResponseFromMldev(apiResponse); + const typedResp = new UploadToFileSearchStoreResumableResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + /** + * Imports a File from File Service to a FileSearchStore. + * + * This is a long-running operation, see aip.dev/151 + * + * @param params - The parameters for importing a file to a file search store. + * @return ImportFileOperation. + */ + async importFile(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = importFileParametersToMldev(params); + path7 = formatMap("{file_search_store_name}:importFile", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json(); + }); + return response.then((apiResponse) => { + const resp = importFileOperationFromMldev(apiResponse); + const typedResp = new ImportFileOperation(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } +}; +var uuid4Internal = function() { + const { crypto: crypto3 } = globalThis; + if (crypto3 === null || crypto3 === void 0 ? void 0 : crypto3.randomUUID) { + uuid4Internal = crypto3.randomUUID.bind(crypto3); + return crypto3.randomUUID(); + } + const u8 = new Uint8Array(1); + const randomByte = crypto3 ? () => crypto3.getRandomValues(u8)[0] : () => Math.random() * 255 & 255; + return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => (+c ^ randomByte() & 15 >> +c / 4).toString(16)); +}; +var uuid4 = () => uuid4Internal(); +function isAbortError(err) { + return typeof err === "object" && err !== null && // Spec-compliant fetch implementations + ("name" in err && err.name === "AbortError" || // Expo fetch + "message" in err && String(err.message).includes("FetchRequestCanceledException")); +} +var castToError = (err) => { + if (err instanceof Error) + return err; + if (typeof err === "object" && err !== null) { + try { + if (Object.prototype.toString.call(err) === "[object Error]") { + const error2 = new Error(err.message, err.cause ? { cause: err.cause } : {}); + if (err.stack) + error2.stack = err.stack; + if (err.cause && !error2.cause) + error2.cause = err.cause; + if (err.name) + error2.name = err.name; + return error2; + } + } catch (_a3) { + } + try { + return new Error(JSON.stringify(err)); + } catch (_b) { + } + } + return new Error(err); +}; +var GeminiNextGenAPIClientError = class extends Error { +}; +var APIError = class _APIError extends GeminiNextGenAPIClientError { + constructor(status, error2, message, headers) { + super(`${_APIError.makeMessage(status, error2, message)}`); + this.status = status; + this.headers = headers; + this.error = error2; + } + static makeMessage(status, error2, message) { + const msg = (error2 === null || error2 === void 0 ? void 0 : error2.message) ? typeof error2.message === "string" ? error2.message : JSON.stringify(error2.message) : error2 ? JSON.stringify(error2) : message; + if (status && msg) { + return `${status} ${msg}`; + } + if (status) { + return `${status} status code (no body)`; + } + if (msg) { + return msg; + } + return "(no status code or body)"; + } + static generate(status, errorResponse, message, headers) { + if (!status || !headers) { + return new APIConnectionError({ message, cause: castToError(errorResponse) }); + } + const error2 = errorResponse; + if (status === 400) { + return new BadRequestError(status, error2, message, headers); + } + if (status === 401) { + return new AuthenticationError(status, error2, message, headers); + } + if (status === 403) { + return new PermissionDeniedError(status, error2, message, headers); + } + if (status === 404) { + return new NotFoundError(status, error2, message, headers); + } + if (status === 409) { + return new ConflictError(status, error2, message, headers); + } + if (status === 422) { + return new UnprocessableEntityError(status, error2, message, headers); + } + if (status === 429) { + return new RateLimitError(status, error2, message, headers); + } + if (status >= 500) { + return new InternalServerError(status, error2, message, headers); + } + return new _APIError(status, error2, message, headers); + } +}; +var APIUserAbortError = class extends APIError { + constructor({ message } = {}) { + super(void 0, void 0, message || "Request was aborted.", void 0); + } +}; +var APIConnectionError = class extends APIError { + constructor({ message, cause }) { + super(void 0, void 0, message || "Connection error.", void 0); + if (cause) + this.cause = cause; + } +}; +var APIConnectionTimeoutError = class extends APIConnectionError { + constructor({ message } = {}) { + super({ message: message !== null && message !== void 0 ? message : "Request timed out." }); + } +}; +var BadRequestError = class extends APIError { +}; +var AuthenticationError = class extends APIError { +}; +var PermissionDeniedError = class extends APIError { +}; +var NotFoundError = class extends APIError { +}; +var ConflictError = class extends APIError { +}; +var UnprocessableEntityError = class extends APIError { +}; +var RateLimitError = class extends APIError { +}; +var InternalServerError = class extends APIError { +}; +var startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i; +var isAbsoluteURL = (url) => { + return startsWithSchemeRegexp.test(url); +}; +var isArrayInternal = (val) => (isArrayInternal = Array.isArray, isArrayInternal(val)); +var isArray = isArrayInternal; +var isReadonlyArrayInternal = isArray; +var isReadonlyArray = isReadonlyArrayInternal; +function isEmptyObj(obj) { + if (!obj) + return true; + for (const _k in obj) + return false; + return true; +} +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} +var validatePositiveInteger = (name, n) => { + if (typeof n !== "number" || !Number.isInteger(n)) { + throw new GeminiNextGenAPIClientError(`${name} must be an integer`); + } + if (n < 0) { + throw new GeminiNextGenAPIClientError(`${name} must be a positive integer`); + } + return n; +}; +var safeJSON = (text) => { + try { + return JSON.parse(text); + } catch (err) { + return void 0; + } +}; +var sleep$1 = (ms) => new Promise((resolve2) => setTimeout(resolve2, ms)); +var VERSION7 = "0.0.1"; +function getDetectedPlatform() { + if (typeof Deno !== "undefined" && Deno.build != null) { + return "deno"; + } + if (typeof EdgeRuntime !== "undefined") { + return "edge"; + } + if (Object.prototype.toString.call(typeof globalThis.process !== "undefined" ? globalThis.process : 0) === "[object process]") { + return "node"; + } + return "unknown"; +} +var getPlatformProperties = () => { + var _a3, _b, _c, _d, _e; + const detectedPlatform = getDetectedPlatform(); + if (detectedPlatform === "deno") { + return { + "X-Stainless-Lang": "js", + "X-Stainless-Package-Version": VERSION7, + "X-Stainless-OS": normalizePlatform(Deno.build.os), + "X-Stainless-Arch": normalizeArch(Deno.build.arch), + "X-Stainless-Runtime": "deno", + "X-Stainless-Runtime-Version": typeof Deno.version === "string" ? Deno.version : (_b = (_a3 = Deno.version) === null || _a3 === void 0 ? void 0 : _a3.deno) !== null && _b !== void 0 ? _b : "unknown" + }; + } + if (typeof EdgeRuntime !== "undefined") { + return { + "X-Stainless-Lang": "js", + "X-Stainless-Package-Version": VERSION7, + "X-Stainless-OS": "Unknown", + "X-Stainless-Arch": `other:${EdgeRuntime}`, + "X-Stainless-Runtime": "edge", + "X-Stainless-Runtime-Version": globalThis.process.version + }; + } + if (detectedPlatform === "node") { + return { + "X-Stainless-Lang": "js", + "X-Stainless-Package-Version": VERSION7, + "X-Stainless-OS": normalizePlatform((_c = globalThis.process.platform) !== null && _c !== void 0 ? _c : "unknown"), + "X-Stainless-Arch": normalizeArch((_d = globalThis.process.arch) !== null && _d !== void 0 ? _d : "unknown"), + "X-Stainless-Runtime": "node", + "X-Stainless-Runtime-Version": (_e = globalThis.process.version) !== null && _e !== void 0 ? _e : "unknown" + }; + } + const browserInfo = getBrowserInfo(); + if (browserInfo) { + return { + "X-Stainless-Lang": "js", + "X-Stainless-Package-Version": VERSION7, + "X-Stainless-OS": "Unknown", + "X-Stainless-Arch": "unknown", + "X-Stainless-Runtime": `browser:${browserInfo.browser}`, + "X-Stainless-Runtime-Version": browserInfo.version + }; + } + return { + "X-Stainless-Lang": "js", + "X-Stainless-Package-Version": VERSION7, + "X-Stainless-OS": "Unknown", + "X-Stainless-Arch": "unknown", + "X-Stainless-Runtime": "unknown", + "X-Stainless-Runtime-Version": "unknown" + }; +}; +function getBrowserInfo() { + if (typeof navigator === "undefined" || !navigator) { + return null; + } + const browserPatterns = [ + { key: "edge", pattern: /Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/ }, + { key: "ie", pattern: /MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/ }, + { key: "ie", pattern: /Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/ }, + { key: "chrome", pattern: /Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/ }, + { key: "firefox", pattern: /Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/ }, + { key: "safari", pattern: /(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/ } + ]; + for (const { key, pattern } of browserPatterns) { + const match = pattern.exec(navigator.userAgent); + if (match) { + const major = match[1] || 0; + const minor = match[2] || 0; + const patch = match[3] || 0; + return { browser: key, version: `${major}.${minor}.${patch}` }; + } + } + return null; +} +var normalizeArch = (arch2) => { + if (arch2 === "x32") + return "x32"; + if (arch2 === "x86_64" || arch2 === "x64") + return "x64"; + if (arch2 === "arm") + return "arm"; + if (arch2 === "aarch64" || arch2 === "arm64") + return "arm64"; + if (arch2) + return `other:${arch2}`; + return "unknown"; +}; +var normalizePlatform = (platform2) => { + platform2 = platform2.toLowerCase(); + if (platform2.includes("ios")) + return "iOS"; + if (platform2 === "android") + return "Android"; + if (platform2 === "darwin") + return "MacOS"; + if (platform2 === "win32") + return "Windows"; + if (platform2 === "freebsd") + return "FreeBSD"; + if (platform2 === "openbsd") + return "OpenBSD"; + if (platform2 === "linux") + return "Linux"; + if (platform2) + return `Other:${platform2}`; + return "Unknown"; +}; +var _platformHeaders; +var getPlatformHeaders = () => { + return _platformHeaders !== null && _platformHeaders !== void 0 ? _platformHeaders : _platformHeaders = getPlatformProperties(); +}; +function getDefaultFetch() { + if (typeof fetch !== "undefined") { + return fetch; + } + throw new Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new GeminiNextGenAPIClient({ fetch })` or polyfill the global, `globalThis.fetch = fetch`"); +} +function makeReadableStream(...args) { + const ReadableStream2 = globalThis.ReadableStream; + if (typeof ReadableStream2 === "undefined") { + throw new Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`"); + } + return new ReadableStream2(...args); +} +function ReadableStreamFrom(iterable) { + let iter = Symbol.asyncIterator in iterable ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator](); + return makeReadableStream({ + start() { + }, + async pull(controller) { + const { done, value } = await iter.next(); + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + async cancel() { + var _a3; + await ((_a3 = iter.return) === null || _a3 === void 0 ? void 0 : _a3.call(iter)); + } + }); +} +function ReadableStreamToAsyncIterable(stream) { + if (stream[Symbol.asyncIterator]) + return stream; + const reader = stream.getReader(); + return { + async next() { + try { + const result = await reader.read(); + if (result === null || result === void 0 ? void 0 : result.done) + reader.releaseLock(); + return result; + } catch (e2) { + reader.releaseLock(); + throw e2; + } + }, + async return() { + const cancelPromise = reader.cancel(); + reader.releaseLock(); + await cancelPromise; + return { done: true, value: void 0 }; + }, + [Symbol.asyncIterator]() { + return this; + } + }; +} +async function CancelReadableStream(stream) { + var _a3, _b; + if (stream === null || typeof stream !== "object") + return; + if (stream[Symbol.asyncIterator]) { + await ((_b = (_a3 = stream[Symbol.asyncIterator]()).return) === null || _b === void 0 ? void 0 : _b.call(_a3)); + return; + } + const reader = stream.getReader(); + const cancelPromise = reader.cancel(); + reader.releaseLock(); + await cancelPromise; +} +var FallbackEncoder = ({ headers, body }) => { + return { + bodyHeaders: { + "content-type": "application/json" + }, + body: JSON.stringify(body) + }; +}; +var checkFileSupport = () => { + var _a3; + if (typeof File === "undefined") { + const { process: process3 } = globalThis; + const isOldNode = typeof ((_a3 = process3 === null || process3 === void 0 ? void 0 : process3.versions) === null || _a3 === void 0 ? void 0 : _a3.node) === "string" && parseInt(process3.versions.node.split(".")) < 20; + throw new Error("`File` is not defined as a global, which is required for file uploads." + (isOldNode ? " Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`." : "")); + } +}; +function makeFile(fileBits, fileName, options) { + checkFileSupport(); + return new File(fileBits, fileName !== null && fileName !== void 0 ? fileName : "unknown_file", options); +} +function getName(value) { + return (typeof value === "object" && value !== null && ("name" in value && value.name && String(value.name) || "url" in value && value.url && String(value.url) || "filename" in value && value.filename && String(value.filename) || "path" in value && value.path && String(value.path)) || "").split(/[\\/]/).pop() || void 0; +} +var isAsyncIterable = (value) => value != null && typeof value === "object" && typeof value[Symbol.asyncIterator] === "function"; +var isBlobLike = (value) => value != null && typeof value === "object" && typeof value.size === "number" && typeof value.type === "string" && typeof value.text === "function" && typeof value.slice === "function" && typeof value.arrayBuffer === "function"; +var isFileLike = (value) => value != null && typeof value === "object" && typeof value.name === "string" && typeof value.lastModified === "number" && isBlobLike(value); +var isResponseLike = (value) => value != null && typeof value === "object" && typeof value.url === "string" && typeof value.blob === "function"; +async function toFile(value, name, options) { + checkFileSupport(); + value = await value; + if (isFileLike(value)) { + if (value instanceof File) { + return value; + } + return makeFile([await value.arrayBuffer()], value.name); + } + if (isResponseLike(value)) { + const blob = await value.blob(); + name || (name = new URL(value.url).pathname.split(/[\\/]/).pop()); + return makeFile(await getBytes(blob), name, options); + } + const parts = await getBytes(value); + name || (name = getName(value)); + if (!(options === null || options === void 0 ? void 0 : options.type)) { + const type = parts.find((part) => typeof part === "object" && "type" in part && part.type); + if (typeof type === "string") { + options = Object.assign(Object.assign({}, options), { type }); + } + } + return makeFile(parts, name, options); +} +async function getBytes(value) { + var _a3, e_1, _b, _c; + var _d; + let parts = []; + if (typeof value === "string" || ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc. + value instanceof ArrayBuffer) { + parts.push(value); + } else if (isBlobLike(value)) { + parts.push(value instanceof Blob ? value : await value.arrayBuffer()); + } else if (isAsyncIterable(value)) { + try { + for (var _e = true, value_1 = __asyncValues(value), value_1_1; value_1_1 = await value_1.next(), _a3 = value_1_1.done, !_a3; _e = true) { + _c = value_1_1.value; + _e = false; + const chunk = _c; + parts.push(...await getBytes(chunk)); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (!_e && !_a3 && (_b = value_1.return)) + await _b.call(value_1); + } finally { + if (e_1) + throw e_1.error; + } + } + } else { + const constructor = (_d = value === null || value === void 0 ? void 0 : value.constructor) === null || _d === void 0 ? void 0 : _d.name; + throw new Error(`Unexpected data type: ${typeof value}${constructor ? `; constructor: ${constructor}` : ""}${propsForError(value)}`); + } + return parts; +} +function propsForError(value) { + if (typeof value !== "object" || value === null) + return ""; + const props = Object.getOwnPropertyNames(value); + return `; props: [${props.map((p) => `"${p}"`).join(", ")}]`; +} +var APIResource = class { + constructor(client) { + this._client = client; + } +}; +APIResource._key = []; +function encodeURIPath(str) { + return str.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g, encodeURIComponent); +} +var EMPTY = Object.freeze(/* @__PURE__ */ Object.create(null)); +var createPathTagFunction = (pathEncoder = encodeURIPath) => function path7(statics, ...params) { + if (statics.length === 1) + return statics[0]; + let postPath = false; + const invalidSegments = []; + const path8 = statics.reduce((previousValue, currentValue, index) => { + var _a3, _b, _c; + if (/[?#]/.test(currentValue)) { + postPath = true; + } + const value = params[index]; + let encoded = (postPath ? encodeURIComponent : pathEncoder)("" + value); + if (index !== params.length && (value == null || typeof value === "object" && // handle values from other realms + value.toString === ((_c = Object.getPrototypeOf((_b = Object.getPrototypeOf((_a3 = value.hasOwnProperty) !== null && _a3 !== void 0 ? _a3 : EMPTY)) !== null && _b !== void 0 ? _b : EMPTY)) === null || _c === void 0 ? void 0 : _c.toString))) { + encoded = value + ""; + invalidSegments.push({ + start: previousValue.length + currentValue.length, + length: encoded.length, + error: `Value of type ${Object.prototype.toString.call(value).slice(8, -1)} is not a valid path parameter` + }); + } + return previousValue + currentValue + (index === params.length ? "" : encoded); + }, ""); + const pathOnly = path8.split(/[?#]/, 1)[0]; + const invalidSegmentPattern = /(^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi; + let match; + while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) { + const hasLeadingSlash = match[0].startsWith("/"); + const offset = hasLeadingSlash ? 1 : 0; + const cleanMatch = hasLeadingSlash ? match[0].slice(1) : match[0]; + invalidSegments.push({ + start: match.index + offset, + length: cleanMatch.length, + error: `Value "${cleanMatch}" can't be safely passed as a path parameter` + }); + } + invalidSegments.sort((a, b) => a.start - b.start); + if (invalidSegments.length > 0) { + let lastEnd = 0; + const underline = invalidSegments.reduce((acc, segment) => { + const spaces = " ".repeat(segment.start - lastEnd); + const arrows = "^".repeat(segment.length); + lastEnd = segment.start + segment.length; + return acc + spaces + arrows; + }, ""); + throw new GeminiNextGenAPIClientError(`Path parameters result in path with invalid segments: +${invalidSegments.map((e2) => e2.error).join("\n")} +${path8} +${underline}`); + } + return path8; +}; +var path6 = createPathTagFunction(encodeURIPath); +var BaseInteractions = class extends APIResource { + create(params, options) { + var _a3; + const { api_version = this._client.apiVersion } = params, body = __rest(params, ["api_version"]); + if ("model" in body && "agent_config" in body) { + throw new GeminiNextGenAPIClientError(`Invalid request: specified \`model\` and \`agent_config\`. If specifying \`model\`, use \`generation_config\`.`); + } + if ("agent" in body && "generation_config" in body) { + throw new GeminiNextGenAPIClientError(`Invalid request: specified \`agent\` and \`generation_config\`. If specifying \`agent\`, use \`agent_config\`.`); + } + return this._client.post(path6`/${api_version}/interactions`, Object.assign(Object.assign({ body }, options), { stream: (_a3 = params.stream) !== null && _a3 !== void 0 ? _a3 : false })); + } + /** + * Deletes the interaction by id. + * + * @example + * ```ts + * const interaction = await client.interactions.delete('id', { + * api_version: 'api_version', + * }); + * ``` + */ + delete(id, params = {}, options) { + const { api_version = this._client.apiVersion } = params !== null && params !== void 0 ? params : {}; + return this._client.delete(path6`/${api_version}/interactions/${id}`, options); + } + /** + * Cancels an interaction by id. This only applies to background interactions that are still running. + * + * @example + * ```ts + * const interaction = await client.interactions.cancel('id', { + * api_version: 'api_version', + * }); + * ``` + */ + cancel(id, params = {}, options) { + const { api_version = this._client.apiVersion } = params !== null && params !== void 0 ? params : {}; + return this._client.post(path6`/${api_version}/interactions/${id}/cancel`, options); + } + get(id, params = {}, options) { + var _a3; + const _b = params !== null && params !== void 0 ? params : {}, { api_version = this._client.apiVersion } = _b, query = __rest(_b, ["api_version"]); + return this._client.get(path6`/${api_version}/interactions/${id}`, Object.assign(Object.assign({ query }, options), { stream: (_a3 = params === null || params === void 0 ? void 0 : params.stream) !== null && _a3 !== void 0 ? _a3 : false })); + } +}; +BaseInteractions._key = Object.freeze(["interactions"]); +var Interactions = class extends BaseInteractions { +}; +function concatBytes(buffers) { + let length = 0; + for (const buffer of buffers) { + length += buffer.length; + } + const output = new Uint8Array(length); + let index = 0; + for (const buffer of buffers) { + output.set(buffer, index); + index += buffer.length; + } + return output; +} +var encodeUTF8_; +function encodeUTF8(str) { + let encoder; + return (encodeUTF8_ !== null && encodeUTF8_ !== void 0 ? encodeUTF8_ : (encoder = new globalThis.TextEncoder(), encodeUTF8_ = encoder.encode.bind(encoder)))(str); +} +var decodeUTF8_; +function decodeUTF8(bytes) { + let decoder; + return (decodeUTF8_ !== null && decodeUTF8_ !== void 0 ? decodeUTF8_ : (decoder = new globalThis.TextDecoder(), decodeUTF8_ = decoder.decode.bind(decoder)))(bytes); +} +var LineDecoder = class { + constructor() { + this.buffer = new Uint8Array(); + this.carriageReturnIndex = null; + } + decode(chunk) { + if (chunk == null) { + return []; + } + const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk) : typeof chunk === "string" ? encodeUTF8(chunk) : chunk; + this.buffer = concatBytes([this.buffer, binaryChunk]); + const lines = []; + let patternIndex; + while ((patternIndex = findNewlineIndex(this.buffer, this.carriageReturnIndex)) != null) { + if (patternIndex.carriage && this.carriageReturnIndex == null) { + this.carriageReturnIndex = patternIndex.index; + continue; + } + if (this.carriageReturnIndex != null && (patternIndex.index !== this.carriageReturnIndex + 1 || patternIndex.carriage)) { + lines.push(decodeUTF8(this.buffer.subarray(0, this.carriageReturnIndex - 1))); + this.buffer = this.buffer.subarray(this.carriageReturnIndex); + this.carriageReturnIndex = null; + continue; + } + const endIndex = this.carriageReturnIndex !== null ? patternIndex.preceding - 1 : patternIndex.preceding; + const line = decodeUTF8(this.buffer.subarray(0, endIndex)); + lines.push(line); + this.buffer = this.buffer.subarray(patternIndex.index); + this.carriageReturnIndex = null; + } + return lines; + } + flush() { + if (!this.buffer.length) { + return []; + } + return this.decode("\n"); + } +}; +LineDecoder.NEWLINE_CHARS = /* @__PURE__ */ new Set(["\n", "\r"]); +LineDecoder.NEWLINE_REGEXP = /\r\n|[\n\r]/g; +function findNewlineIndex(buffer, startIndex) { + const newline = 10; + const carriage = 13; + for (let i2 = startIndex !== null && startIndex !== void 0 ? startIndex : 0; i2 < buffer.length; i2++) { + if (buffer[i2] === newline) { + return { preceding: i2, index: i2 + 1, carriage: false }; + } + if (buffer[i2] === carriage) { + return { preceding: i2, index: i2 + 1, carriage: true }; + } + } + return null; +} +function findDoubleNewlineIndex(buffer) { + const newline = 10; + const carriage = 13; + for (let i2 = 0; i2 < buffer.length - 1; i2++) { + if (buffer[i2] === newline && buffer[i2 + 1] === newline) { + return i2 + 2; + } + if (buffer[i2] === carriage && buffer[i2 + 1] === carriage) { + return i2 + 2; + } + if (buffer[i2] === carriage && buffer[i2 + 1] === newline && i2 + 3 < buffer.length && buffer[i2 + 2] === carriage && buffer[i2 + 3] === newline) { + return i2 + 4; + } + } + return -1; +} +var levelNumbers = { + off: 0, + error: 200, + warn: 300, + info: 400, + debug: 500 +}; +var parseLogLevel = (maybeLevel, sourceName, client) => { + if (!maybeLevel) { + return void 0; + } + if (hasOwn(levelNumbers, maybeLevel)) { + return maybeLevel; + } + loggerFor(client).warn(`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(Object.keys(levelNumbers))}`); + return void 0; +}; +function noop4() { +} +function makeLogFn(fnLevel, logger, logLevel) { + if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) { + return noop4; + } else { + return logger[fnLevel].bind(logger); + } +} +var noopLogger = { + error: noop4, + warn: noop4, + info: noop4, + debug: noop4 +}; +var cachedLoggers = /* @__PURE__ */ new WeakMap(); +function loggerFor(client) { + var _a3; + const logger = client.logger; + const logLevel = (_a3 = client.logLevel) !== null && _a3 !== void 0 ? _a3 : "off"; + if (!logger) { + return noopLogger; + } + const cachedLogger = cachedLoggers.get(logger); + if (cachedLogger && cachedLogger[0] === logLevel) { + return cachedLogger[1]; + } + const levelLogger = { + error: makeLogFn("error", logger, logLevel), + warn: makeLogFn("warn", logger, logLevel), + info: makeLogFn("info", logger, logLevel), + debug: makeLogFn("debug", logger, logLevel) + }; + cachedLoggers.set(logger, [logLevel, levelLogger]); + return levelLogger; +} +var formatRequestDetails = (details) => { + if (details.options) { + details.options = Object.assign({}, details.options); + delete details.options["headers"]; + } + if (details.headers) { + details.headers = Object.fromEntries((details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(([name, value]) => [ + name, + name.toLowerCase() === "x-goog-api-key" || name.toLowerCase() === "authorization" || name.toLowerCase() === "cookie" || name.toLowerCase() === "set-cookie" ? "***" : value + ])); + } + if ("retryOfRequestLogID" in details) { + if (details.retryOfRequestLogID) { + details.retryOf = details.retryOfRequestLogID; + } + delete details.retryOfRequestLogID; + } + return details; +}; +var Stream3 = class _Stream { + constructor(iterator2, controller, client) { + this.iterator = iterator2; + this.controller = controller; + this.client = client; + } + static fromSSEResponse(response, controller, client) { + let consumed = false; + const logger = client ? loggerFor(client) : console; + function iterator2() { + return __asyncGenerator(this, arguments, function* iterator_1() { + var _a3, e_1, _b, _c; + if (consumed) { + throw new GeminiNextGenAPIClientError("Cannot iterate over a consumed stream, use `.tee()` to split the stream."); + } + consumed = true; + let done = false; + try { + try { + for (var _d = true, _e = __asyncValues(_iterSSEMessages(response, controller)), _f; _f = yield __await(_e.next()), _a3 = _f.done, !_a3; _d = true) { + _c = _f.value; + _d = false; + const sse = _c; + if (done) + continue; + if (sse.data.startsWith("[DONE]")) { + done = true; + continue; + } else { + try { + yield yield __await(JSON.parse(sse.data)); + } catch (e2) { + logger.error(`Could not parse message into JSON:`, sse.data); + logger.error(`From chunk:`, sse.raw); + throw e2; + } + } + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (!_d && !_a3 && (_b = _e.return)) + yield __await(_b.call(_e)); + } finally { + if (e_1) + throw e_1.error; + } + } + done = true; + } catch (e2) { + if (isAbortError(e2)) + return yield __await(void 0); + throw e2; + } finally { + if (!done) + controller.abort(); + } + }); + } + return new _Stream(iterator2, controller, client); + } + /** + * Generates a Stream from a newline-separated ReadableStream + * where each item is a JSON value. + */ + static fromReadableStream(readableStream, controller, client) { + let consumed = false; + function iterLines() { + return __asyncGenerator(this, arguments, function* iterLines_1() { + var _a3, e_2, _b, _c; + const lineDecoder = new LineDecoder(); + const iter = ReadableStreamToAsyncIterable(readableStream); + try { + for (var _d = true, iter_1 = __asyncValues(iter), iter_1_1; iter_1_1 = yield __await(iter_1.next()), _a3 = iter_1_1.done, !_a3; _d = true) { + _c = iter_1_1.value; + _d = false; + const chunk = _c; + for (const line of lineDecoder.decode(chunk)) { + yield yield __await(line); + } + } + } catch (e_2_1) { + e_2 = { error: e_2_1 }; + } finally { + try { + if (!_d && !_a3 && (_b = iter_1.return)) + yield __await(_b.call(iter_1)); + } finally { + if (e_2) + throw e_2.error; + } + } + for (const line of lineDecoder.flush()) { + yield yield __await(line); + } + }); + } + function iterator2() { + return __asyncGenerator(this, arguments, function* iterator_2() { + var _a3, e_3, _b, _c; + if (consumed) { + throw new GeminiNextGenAPIClientError("Cannot iterate over a consumed stream, use `.tee()` to split the stream."); + } + consumed = true; + let done = false; + try { + try { + for (var _d = true, _e = __asyncValues(iterLines()), _f; _f = yield __await(_e.next()), _a3 = _f.done, !_a3; _d = true) { + _c = _f.value; + _d = false; + const line = _c; + if (done) + continue; + if (line) + yield yield __await(JSON.parse(line)); + } + } catch (e_3_1) { + e_3 = { error: e_3_1 }; + } finally { + try { + if (!_d && !_a3 && (_b = _e.return)) + yield __await(_b.call(_e)); + } finally { + if (e_3) + throw e_3.error; + } + } + done = true; + } catch (e2) { + if (isAbortError(e2)) + return yield __await(void 0); + throw e2; + } finally { + if (!done) + controller.abort(); + } + }); + } + return new _Stream(iterator2, controller, client); + } + [Symbol.asyncIterator]() { + return this.iterator(); + } + /** + * Splits the stream into two streams which can be + * independently read from at different speeds. + */ + tee() { + const left = []; + const right = []; + const iterator2 = this.iterator(); + const teeIterator = (queue) => { + return { + next: () => { + if (queue.length === 0) { + const result = iterator2.next(); + left.push(result); + right.push(result); + } + return queue.shift(); + } + }; + }; + return [ + new _Stream(() => teeIterator(left), this.controller, this.client), + new _Stream(() => teeIterator(right), this.controller, this.client) + ]; } -}; -var endpoints_default = Endpoints; - -// -var endpointMethodsMap = /* @__PURE__ */ new Map(); -for (const [scope, endpoints] of Object.entries(endpoints_default)) { - for (const [methodName, endpoint2] of Object.entries(endpoints)) { - const [route, defaults2, decorations] = endpoint2; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url + /** + * Converts this stream to a newline-separated ReadableStream of + * JSON stringified values in the stream + * which can be turned back into a Stream with `Stream.fromReadableStream()`. + */ + toReadableStream() { + const self2 = this; + let iter; + return makeReadableStream({ + async start() { + iter = self2[Symbol.asyncIterator](); }, - defaults2 - ); - if (!endpointMethodsMap.has(scope)) { - endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + async pull(ctrl) { + try { + const { value, done } = await iter.next(); + if (done) + return ctrl.close(); + const bytes = encodeUTF8(JSON.stringify(value) + "\n"); + ctrl.enqueue(bytes); + } catch (err) { + ctrl.error(err); + } + }, + async cancel() { + var _a3; + await ((_a3 = iter.return) === null || _a3 === void 0 ? void 0 : _a3.call(iter)); + } + }); + } +}; +function _iterSSEMessages(response, controller) { + return __asyncGenerator(this, arguments, function* _iterSSEMessages_1() { + var _a3, e_4, _b, _c; + if (!response.body) { + controller.abort(); + if (typeof globalThis.navigator !== "undefined" && globalThis.navigator.product === "ReactNative") { + throw new GeminiNextGenAPIClientError(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`); + } + throw new GeminiNextGenAPIClientError(`Attempted to iterate over a response with no body`); } - endpointMethodsMap.get(scope).set(methodName, { - scope, - methodName, - endpointDefaults, - decorations + const sseDecoder = new SSEDecoder(); + const lineDecoder = new LineDecoder(); + const iter = ReadableStreamToAsyncIterable(response.body); + try { + for (var _d = true, _e = __asyncValues(iterSSEChunks(iter)), _f; _f = yield __await(_e.next()), _a3 = _f.done, !_a3; _d = true) { + _c = _f.value; + _d = false; + const sseChunk = _c; + for (const line of lineDecoder.decode(sseChunk)) { + const sse = sseDecoder.decode(line); + if (sse) + yield yield __await(sse); + } + } + } catch (e_4_1) { + e_4 = { error: e_4_1 }; + } finally { + try { + if (!_d && !_a3 && (_b = _e.return)) + yield __await(_b.call(_e)); + } finally { + if (e_4) + throw e_4.error; + } + } + for (const line of lineDecoder.flush()) { + const sse = sseDecoder.decode(line); + if (sse) + yield yield __await(sse); + } + }); +} +function iterSSEChunks(iterator2) { + return __asyncGenerator(this, arguments, function* iterSSEChunks_1() { + var _a3, e_5, _b, _c; + let data = new Uint8Array(); + try { + for (var _d = true, iterator_3 = __asyncValues(iterator2), iterator_3_1; iterator_3_1 = yield __await(iterator_3.next()), _a3 = iterator_3_1.done, !_a3; _d = true) { + _c = iterator_3_1.value; + _d = false; + const chunk = _c; + if (chunk == null) { + continue; + } + const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk) : typeof chunk === "string" ? encodeUTF8(chunk) : chunk; + let newData = new Uint8Array(data.length + binaryChunk.length); + newData.set(data); + newData.set(binaryChunk, data.length); + data = newData; + let patternIndex; + while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) { + yield yield __await(data.slice(0, patternIndex)); + data = data.slice(patternIndex); + } + } + } catch (e_5_1) { + e_5 = { error: e_5_1 }; + } finally { + try { + if (!_d && !_a3 && (_b = iterator_3.return)) + yield __await(_b.call(iterator_3)); + } finally { + if (e_5) + throw e_5.error; + } + } + if (data.length > 0) { + yield yield __await(data); + } + }); +} +var SSEDecoder = class { + constructor() { + this.event = null; + this.data = []; + this.chunks = []; + } + decode(line) { + if (line.endsWith("\r")) { + line = line.substring(0, line.length - 1); + } + if (!line) { + if (!this.event && !this.data.length) + return null; + const sse = { + event: this.event, + data: this.data.join("\n"), + raw: this.chunks + }; + this.event = null; + this.data = []; + this.chunks = []; + return sse; + } + this.chunks.push(line); + if (line.startsWith(":")) { + return null; + } + let [fieldname, _, value] = partition(line, ":"); + if (value.startsWith(" ")) { + value = value.substring(1); + } + if (fieldname === "event") { + this.event = value; + } else if (fieldname === "data") { + this.data.push(value); + } + return null; + } +}; +function partition(str, delimiter3) { + const index = str.indexOf(delimiter3); + if (index !== -1) { + return [str.substring(0, index), delimiter3, str.substring(index + delimiter3.length)]; + } + return [str, "", ""]; +} +async function defaultParseResponse(client, props) { + const { response, requestLogID, retryOfRequestLogID, startTime } = props; + const body = await (async () => { + var _a3; + if (props.options.stream) { + loggerFor(client).debug("response", response.status, response.url, response.headers, response.body); + if (props.options.__streamClass) { + return props.options.__streamClass.fromSSEResponse(response, props.controller, client); + } + return Stream3.fromSSEResponse(response, props.controller, client); + } + if (response.status === 204) { + return null; + } + if (props.options.__binaryResponse) { + return response; + } + const contentType = response.headers.get("content-type"); + const mediaType = (_a3 = contentType === null || contentType === void 0 ? void 0 : contentType.split(";")[0]) === null || _a3 === void 0 ? void 0 : _a3.trim(); + const isJSON = (mediaType === null || mediaType === void 0 ? void 0 : mediaType.includes("application/json")) || (mediaType === null || mediaType === void 0 ? void 0 : mediaType.endsWith("+json")); + if (isJSON) { + const contentLength = response.headers.get("content-length"); + if (contentLength === "0") { + return void 0; + } + const json = await response.json(); + return json; + } + const text = await response.text(); + return text; + })(); + loggerFor(client).debug(`[${requestLogID}] response parsed`, formatRequestDetails({ + retryOfRequestLogID, + url: response.url, + status: response.status, + body, + durationMs: Date.now() - startTime + })); + return body; +} +var APIPromise = class _APIPromise extends Promise { + constructor(client, responsePromise, parseResponse = defaultParseResponse) { + super((resolve2) => { + resolve2(null); }); + this.responsePromise = responsePromise; + this.parseResponse = parseResponse; + this.client = client; + } + _thenUnwrap(transform) { + return new _APIPromise(this.client, this.responsePromise, async (client, props) => transform(await this.parseResponse(client, props), props)); + } + /** + * Gets the raw `Response` instance instead of parsing the response + * data. + * + * If you want to parse the response body but still get the `Response` + * instance, you can use {@link withResponse()}. + * + * 👋 Getting the wrong TypeScript type for `Response`? + * Try setting `"moduleResolution": "NodeNext"` or add `"lib": ["DOM"]` + * to your `tsconfig.json`. + */ + asResponse() { + return this.responsePromise.then((p) => p.response); + } + /** + * Gets the parsed response data and the raw `Response` instance. + * + * If you just want to get the raw `Response` instance without parsing it, + * you can use {@link asResponse()}. + * + * 👋 Getting the wrong TypeScript type for `Response`? + * Try setting `"moduleResolution": "NodeNext"` or add `"lib": ["DOM"]` + * to your `tsconfig.json`. + */ + async withResponse() { + const [data, response] = await Promise.all([this.parse(), this.asResponse()]); + return { data, response }; + } + parse() { + if (!this.parsedPromise) { + this.parsedPromise = this.responsePromise.then((data) => this.parseResponse(this.client, data)); + } + return this.parsedPromise; + } + then(onfulfilled, onrejected) { + return this.parse().then(onfulfilled, onrejected); + } + catch(onrejected) { + return this.parse().catch(onrejected); + } + finally(onfinally) { + return this.parse().finally(onfinally); + } +}; +var brand_privateNullableHeaders = Symbol("brand.privateNullableHeaders"); +function* iterateHeaders(headers) { + if (!headers) + return; + if (brand_privateNullableHeaders in headers) { + const { values, nulls } = headers; + yield* values.entries(); + for (const name of nulls) { + yield [name, null]; + } + return; + } + let shouldClear = false; + let iter; + if (headers instanceof Headers) { + iter = headers.entries(); + } else if (isReadonlyArray(headers)) { + iter = headers; + } else { + shouldClear = true; + iter = Object.entries(headers !== null && headers !== void 0 ? headers : {}); + } + for (let row of iter) { + const name = row[0]; + if (typeof name !== "string") + throw new TypeError("expected header name to be a string"); + const values = isReadonlyArray(row[1]) ? row[1] : [row[1]]; + let didClear = false; + for (const value of values) { + if (value === void 0) + continue; + if (shouldClear && !didClear) { + didClear = true; + yield [name, null]; + } + yield [name, value]; + } } } -var handler = { - has({ scope }, methodName) { - return endpointMethodsMap.get(scope).has(methodName); - }, - getOwnPropertyDescriptor(target, methodName) { - return { - value: this.get(target, methodName), - // ensures method is in the cache - configurable: true, - writable: true, - enumerable: true - }; - }, - defineProperty(target, methodName, descriptor) { - Object.defineProperty(target.cache, methodName, descriptor); - return true; - }, - deleteProperty(target, methodName) { - delete target.cache[methodName]; - return true; - }, - ownKeys({ scope }) { - return [...endpointMethodsMap.get(scope).keys()]; - }, - set(target, methodName, value) { - return target.cache[methodName] = value; - }, - get({ octokit, scope, cache }, methodName) { - if (cache[methodName]) { - return cache[methodName]; +var buildHeaders = (newHeaders) => { + const targetHeaders = new Headers(); + const nullHeaders = /* @__PURE__ */ new Set(); + for (const headers of newHeaders) { + const seenHeaders = /* @__PURE__ */ new Set(); + for (const [name, value] of iterateHeaders(headers)) { + const lowerName = name.toLowerCase(); + if (!seenHeaders.has(lowerName)) { + targetHeaders.delete(name); + seenHeaders.add(lowerName); + } + if (value === null) { + targetHeaders.delete(name); + nullHeaders.add(lowerName); + } else { + targetHeaders.append(name, value); + nullHeaders.delete(lowerName); + } } - const method = endpointMethodsMap.get(scope).get(methodName); - if (!method) { + } + return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders }; +}; +var readEnv = (env2) => { + var _a3, _b, _c, _d, _e, _f; + if (typeof globalThis.process !== "undefined") { + return (_c = (_b = (_a3 = globalThis.process.env) === null || _a3 === void 0 ? void 0 : _a3[env2]) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : void 0; + } + if (typeof globalThis.Deno !== "undefined") { + return (_f = (_e = (_d = globalThis.Deno.env) === null || _d === void 0 ? void 0 : _d.get) === null || _e === void 0 ? void 0 : _e.call(_d, env2)) === null || _f === void 0 ? void 0 : _f.trim(); + } + return void 0; +}; +var _a; +var BaseGeminiNextGenAPIClient = class _BaseGeminiNextGenAPIClient { + /** + * API Client for interfacing with the Gemini Next Gen API API. + * + * @param {string | null | undefined} [opts.apiKey=process.env['GEMINI_API_KEY'] ?? null] + * @param {string | undefined} [opts.apiVersion=v1beta] + * @param {string} [opts.baseURL=process.env['GEMINI_NEXT_GEN_API_BASE_URL'] ?? https://generativelanguage.googleapis.com] - Override the default base URL for the API. + * @param {number} [opts.timeout=1 minute] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out. + * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls. + * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation. + * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request. + * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API. + * @param {Record} opts.defaultQuery - Default query parameters to include with every request to the API. + */ + constructor(_b) { + var _c, _d, _e, _f, _g, _h, _j; + var { baseURL = readEnv("GEMINI_NEXT_GEN_API_BASE_URL"), apiKey = (_c = readEnv("GEMINI_API_KEY")) !== null && _c !== void 0 ? _c : null, apiVersion = "v1beta" } = _b, opts = __rest(_b, ["baseURL", "apiKey", "apiVersion"]); + const options = Object.assign(Object.assign({ + apiKey, + apiVersion + }, opts), { baseURL: baseURL || `https://generativelanguage.googleapis.com` }); + this.baseURL = options.baseURL; + this.timeout = (_d = options.timeout) !== null && _d !== void 0 ? _d : _BaseGeminiNextGenAPIClient.DEFAULT_TIMEOUT; + this.logger = (_e = options.logger) !== null && _e !== void 0 ? _e : console; + const defaultLogLevel = "warn"; + this.logLevel = defaultLogLevel; + this.logLevel = (_g = (_f = parseLogLevel(options.logLevel, "ClientOptions.logLevel", this)) !== null && _f !== void 0 ? _f : parseLogLevel(readEnv("GEMINI_NEXT_GEN_API_LOG"), "process.env['GEMINI_NEXT_GEN_API_LOG']", this)) !== null && _g !== void 0 ? _g : defaultLogLevel; + this.fetchOptions = options.fetchOptions; + this.maxRetries = (_h = options.maxRetries) !== null && _h !== void 0 ? _h : 2; + this.fetch = (_j = options.fetch) !== null && _j !== void 0 ? _j : getDefaultFetch(); + this.encoder = FallbackEncoder; + this._options = options; + this.apiKey = apiKey; + this.apiVersion = apiVersion; + this.clientAdapter = options.clientAdapter; + } + /** + * Create a new client instance re-using the same options given to the current client with optional overriding. + */ + withOptions(options) { + const client = new this.constructor(Object.assign(Object.assign(Object.assign({}, this._options), { baseURL: this.baseURL, maxRetries: this.maxRetries, timeout: this.timeout, logger: this.logger, logLevel: this.logLevel, fetch: this.fetch, fetchOptions: this.fetchOptions, apiKey: this.apiKey, apiVersion: this.apiVersion }), options)); + return client; + } + /** + * Check whether the base URL is set to its default. + */ + baseURLOverridden() { + return this.baseURL !== "https://generativelanguage.googleapis.com"; + } + defaultQuery() { + return this._options.defaultQuery; + } + validateHeaders({ values, nulls }) { + if (values.has("authorization") || values.has("x-goog-api-key")) { + return; + } + if (this.apiKey && values.get("x-goog-api-key")) { + return; + } + if (nulls.has("x-goog-api-key")) { + return; + } + throw new Error('Could not resolve authentication method. Expected the apiKey to be set. Or for the "x-goog-api-key" headers to be explicitly omitted'); + } + async authHeaders(opts) { + const existingHeaders = buildHeaders([opts.headers]); + if (existingHeaders.values.has("authorization") || existingHeaders.values.has("x-goog-api-key")) { return void 0; } - const { endpointDefaults, decorations } = method; - if (decorations) { - cache[methodName] = decorate( - octokit, - scope, - methodName, - endpointDefaults, - decorations - ); + if (this.apiKey) { + return buildHeaders([{ "x-goog-api-key": this.apiKey }]); + } + if (this.clientAdapter.isVertexAI()) { + return buildHeaders([await this.clientAdapter.getAuthHeaders()]); + } + return void 0; + } + /** + * Basic re-implementation of `qs.stringify` for primitive types. + */ + stringifyQuery(query) { + return Object.entries(query).filter(([_, value]) => typeof value !== "undefined").map(([key, value]) => { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; + } + if (value === null) { + return `${encodeURIComponent(key)}=`; + } + throw new GeminiNextGenAPIClientError(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`); + }).join("&"); + } + getUserAgent() { + return `${this.constructor.name}/JS ${VERSION7}`; + } + defaultIdempotencyKey() { + return `stainless-node-retry-${uuid4()}`; + } + makeStatusError(status, error2, message, headers) { + return APIError.generate(status, error2, message, headers); + } + buildURL(path7, query, defaultBaseURL) { + const baseURL = !this.baseURLOverridden() && defaultBaseURL || this.baseURL; + const url = isAbsoluteURL(path7) ? new URL(path7) : new URL(baseURL + (baseURL.endsWith("/") && path7.startsWith("/") ? path7.slice(1) : path7)); + const defaultQuery = this.defaultQuery(); + if (!isEmptyObj(defaultQuery)) { + query = Object.assign(Object.assign({}, defaultQuery), query); + } + if (typeof query === "object" && query && !Array.isArray(query)) { + url.search = this.stringifyQuery(query); + } + return url.toString(); + } + /** + * Used as a callback for mutating the given `FinalRequestOptions` object. + + */ + async prepareOptions(options) { + if (this.clientAdapter && this.clientAdapter.isVertexAI() && !options.path.startsWith(`/${this.apiVersion}/projects/`)) { + const oldPath = options.path.slice(this.apiVersion.length + 1); + options.path = `/${this.apiVersion}/projects/${this.clientAdapter.getProject()}/locations/${this.clientAdapter.getLocation()}${oldPath}`; + } + } + /** + * Used as a callback for mutating the given `RequestInit` object. + * + * This is useful for cases where you want to add certain headers based off of + * the request properties, e.g. `method` or `url`. + */ + async prepareRequest(request2, { url, options }) { + } + get(path7, opts) { + return this.methodRequest("get", path7, opts); + } + post(path7, opts) { + return this.methodRequest("post", path7, opts); + } + patch(path7, opts) { + return this.methodRequest("patch", path7, opts); + } + put(path7, opts) { + return this.methodRequest("put", path7, opts); + } + delete(path7, opts) { + return this.methodRequest("delete", path7, opts); + } + methodRequest(method, path7, opts) { + return this.request(Promise.resolve(opts).then((opts2) => { + return Object.assign({ method, path: path7 }, opts2); + })); + } + request(options, remainingRetries = null) { + return new APIPromise(this, this.makeRequest(options, remainingRetries, void 0)); + } + async makeRequest(optionsInput, retriesRemaining, retryOfRequestLogID) { + var _b, _c, _d; + const options = await optionsInput; + const maxRetries = (_b = options.maxRetries) !== null && _b !== void 0 ? _b : this.maxRetries; + if (retriesRemaining == null) { + retriesRemaining = maxRetries; + } + await this.prepareOptions(options); + const { req, url, timeout } = await this.buildRequest(options, { + retryCount: maxRetries - retriesRemaining + }); + await this.prepareRequest(req, { url, options }); + const requestLogID = "log_" + (Math.random() * (1 << 24) | 0).toString(16).padStart(6, "0"); + const retryLogStr = retryOfRequestLogID === void 0 ? "" : `, retryOf: ${retryOfRequestLogID}`; + const startTime = Date.now(); + loggerFor(this).debug(`[${requestLogID}] sending request`, formatRequestDetails({ + retryOfRequestLogID, + method: options.method, + url, + options, + headers: req.headers + })); + if ((_c = options.signal) === null || _c === void 0 ? void 0 : _c.aborted) { + throw new APIUserAbortError(); + } + const controller = new AbortController(); + const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError); + const headersTime = Date.now(); + if (response instanceof globalThis.Error) { + const retryMessage = `retrying, ${retriesRemaining} attempts remaining`; + if ((_d = options.signal) === null || _d === void 0 ? void 0 : _d.aborted) { + throw new APIUserAbortError(); + } + const isTimeout = isAbortError(response) || /timed? ?out/i.test(String(response) + ("cause" in response ? String(response.cause) : "")); + if (retriesRemaining) { + loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? "timed out" : "failed"} - ${retryMessage}`); + loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? "timed out" : "failed"} (${retryMessage})`, formatRequestDetails({ + retryOfRequestLogID, + url, + durationMs: headersTime - startTime, + message: response.message + })); + return this.retryRequest(options, retriesRemaining, retryOfRequestLogID !== null && retryOfRequestLogID !== void 0 ? retryOfRequestLogID : requestLogID); + } + loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? "timed out" : "failed"} - error; no more retries left`); + loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? "timed out" : "failed"} (error; no more retries left)`, formatRequestDetails({ + retryOfRequestLogID, + url, + durationMs: headersTime - startTime, + message: response.message + })); + if (isTimeout) { + throw new APIConnectionTimeoutError(); + } + throw new APIConnectionError({ cause: response }); + } + const responseInfo = `[${requestLogID}${retryLogStr}] ${req.method} ${url} ${response.ok ? "succeeded" : "failed"} with status ${response.status} in ${headersTime - startTime}ms`; + if (!response.ok) { + const shouldRetry = await this.shouldRetry(response); + if (retriesRemaining && shouldRetry) { + const retryMessage2 = `retrying, ${retriesRemaining} attempts remaining`; + await CancelReadableStream(response.body); + loggerFor(this).info(`${responseInfo} - ${retryMessage2}`); + loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage2})`, formatRequestDetails({ + retryOfRequestLogID, + url: response.url, + status: response.status, + headers: response.headers, + durationMs: headersTime - startTime + })); + return this.retryRequest(options, retriesRemaining, retryOfRequestLogID !== null && retryOfRequestLogID !== void 0 ? retryOfRequestLogID : requestLogID, response.headers); + } + const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`; + loggerFor(this).info(`${responseInfo} - ${retryMessage}`); + const errText = await response.text().catch((err2) => castToError(err2).message); + const errJSON = safeJSON(errText); + const errMessage = errJSON ? void 0 : errText; + loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({ + retryOfRequestLogID, + url: response.url, + status: response.status, + headers: response.headers, + message: errMessage, + durationMs: Date.now() - startTime + })); + const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers); + throw err; + } + loggerFor(this).info(responseInfo); + loggerFor(this).debug(`[${requestLogID}] response start`, formatRequestDetails({ + retryOfRequestLogID, + url: response.url, + status: response.status, + headers: response.headers, + durationMs: headersTime - startTime + })); + return { response, options, controller, requestLogID, retryOfRequestLogID, startTime }; + } + async fetchWithTimeout(url, init, ms, controller) { + const _b = init || {}, { signal, method } = _b, options = __rest(_b, ["signal", "method"]); + const abort = this._makeAbort(controller); + if (signal) + signal.addEventListener("abort", abort, { once: true }); + const timeout = setTimeout(abort, ms); + const isReadableBody = globalThis.ReadableStream && options.body instanceof globalThis.ReadableStream || typeof options.body === "object" && options.body !== null && Symbol.asyncIterator in options.body; + const fetchOptions = Object.assign(Object.assign(Object.assign({ signal: controller.signal }, isReadableBody ? { duplex: "half" } : {}), { method: "GET" }), options); + if (method) { + fetchOptions.method = method.toUpperCase(); + } + try { + return await this.fetch.call(void 0, url, fetchOptions); + } finally { + clearTimeout(timeout); + } + } + async shouldRetry(response) { + const shouldRetryHeader = response.headers.get("x-should-retry"); + if (shouldRetryHeader === "true") + return true; + if (shouldRetryHeader === "false") + return false; + if (response.status === 408) + return true; + if (response.status === 409) + return true; + if (response.status === 429) + return true; + if (response.status >= 500) + return true; + return false; + } + async retryRequest(options, retriesRemaining, requestLogID, responseHeaders) { + var _b; + let timeoutMillis; + const retryAfterMillisHeader = responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders.get("retry-after-ms"); + if (retryAfterMillisHeader) { + const timeoutMs = parseFloat(retryAfterMillisHeader); + if (!Number.isNaN(timeoutMs)) { + timeoutMillis = timeoutMs; + } + } + const retryAfterHeader = responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders.get("retry-after"); + if (retryAfterHeader && !timeoutMillis) { + const timeoutSeconds = parseFloat(retryAfterHeader); + if (!Number.isNaN(timeoutSeconds)) { + timeoutMillis = timeoutSeconds * 1e3; + } else { + timeoutMillis = Date.parse(retryAfterHeader) - Date.now(); + } + } + if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1e3)) { + const maxRetries = (_b = options.maxRetries) !== null && _b !== void 0 ? _b : this.maxRetries; + timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries); + } + await sleep$1(timeoutMillis); + return this.makeRequest(options, retriesRemaining - 1, requestLogID); + } + calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) { + const initialRetryDelay = 0.5; + const maxRetryDelay = 8; + const numRetries = maxRetries - retriesRemaining; + const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay); + const jitter = 1 - Math.random() * 0.25; + return sleepSeconds * jitter * 1e3; + } + async buildRequest(inputOptions, { retryCount = 0 } = {}) { + var _b, _c, _d; + const options = Object.assign({}, inputOptions); + const { method, path: path7, query, defaultBaseURL } = options; + const url = this.buildURL(path7, query, defaultBaseURL); + if ("timeout" in options) + validatePositiveInteger("timeout", options.timeout); + options.timeout = (_b = options.timeout) !== null && _b !== void 0 ? _b : this.timeout; + const { bodyHeaders, body } = this.buildBody({ options }); + const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount }); + const req = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ method, headers: reqHeaders }, options.signal && { signal: options.signal }), globalThis.ReadableStream && body instanceof globalThis.ReadableStream && { duplex: "half" }), body && { body }), (_c = this.fetchOptions) !== null && _c !== void 0 ? _c : {}), (_d = options.fetchOptions) !== null && _d !== void 0 ? _d : {}); + return { req, url, timeout: options.timeout }; + } + async buildHeaders({ options, method, bodyHeaders, retryCount }) { + let idempotencyHeaders = {}; + if (this.idempotencyHeader && method !== "get") { + if (!options.idempotencyKey) + options.idempotencyKey = this.defaultIdempotencyKey(); + idempotencyHeaders[this.idempotencyHeader] = options.idempotencyKey; + } + const authHeaders = await this.authHeaders(options); + let headers = buildHeaders([ + idempotencyHeaders, + Object.assign(Object.assign({ Accept: "application/json", "User-Agent": this.getUserAgent(), "X-Stainless-Retry-Count": String(retryCount) }, options.timeout ? { "X-Stainless-Timeout": String(Math.trunc(options.timeout / 1e3)) } : {}), getPlatformHeaders()), + this._options.defaultHeaders, + bodyHeaders, + options.headers, + authHeaders + ]); + this.validateHeaders(headers); + return headers.values; + } + _makeAbort(controller) { + return () => controller.abort(); + } + buildBody({ options: { body, headers: rawHeaders } }) { + if (!body) { + return { bodyHeaders: void 0, body: void 0 }; + } + const headers = buildHeaders([rawHeaders]); + if ( + // Pass raw type verbatim + ArrayBuffer.isView(body) || body instanceof ArrayBuffer || body instanceof DataView || typeof body === "string" && // Preserve legacy string encoding behavior for now + headers.values.has("content-type") || // `Blob` is superset of `File` + globalThis.Blob && body instanceof globalThis.Blob || // `FormData` -> `multipart/form-data` + body instanceof FormData || // `URLSearchParams` -> `application/x-www-form-urlencoded` + body instanceof URLSearchParams || // Send chunked stream (each chunk has own `length`) + globalThis.ReadableStream && body instanceof globalThis.ReadableStream + ) { + return { bodyHeaders: void 0, body }; + } else if (typeof body === "object" && (Symbol.asyncIterator in body || Symbol.iterator in body && "next" in body && typeof body.next === "function")) { + return { bodyHeaders: void 0, body: ReadableStreamFrom(body) }; + } else if (typeof body === "object" && headers.values.get("content-type") === "application/x-www-form-urlencoded") { + return { + bodyHeaders: { "content-type": "application/x-www-form-urlencoded" }, + body: this.stringifyQuery(body) + }; } else { - cache[methodName] = octokit.request.defaults(endpointDefaults); + return this.encoder({ body, headers }); + } + } +}; +BaseGeminiNextGenAPIClient.DEFAULT_TIMEOUT = 6e4; +var GeminiNextGenAPIClient = class extends BaseGeminiNextGenAPIClient { + constructor() { + super(...arguments); + this.interactions = new Interactions(this); + } +}; +_a = GeminiNextGenAPIClient; +GeminiNextGenAPIClient.GeminiNextGenAPIClient = _a; +GeminiNextGenAPIClient.GeminiNextGenAPIClientError = GeminiNextGenAPIClientError; +GeminiNextGenAPIClient.APIError = APIError; +GeminiNextGenAPIClient.APIConnectionError = APIConnectionError; +GeminiNextGenAPIClient.APIConnectionTimeoutError = APIConnectionTimeoutError; +GeminiNextGenAPIClient.APIUserAbortError = APIUserAbortError; +GeminiNextGenAPIClient.NotFoundError = NotFoundError; +GeminiNextGenAPIClient.ConflictError = ConflictError; +GeminiNextGenAPIClient.RateLimitError = RateLimitError; +GeminiNextGenAPIClient.BadRequestError = BadRequestError; +GeminiNextGenAPIClient.AuthenticationError = AuthenticationError; +GeminiNextGenAPIClient.InternalServerError = InternalServerError; +GeminiNextGenAPIClient.PermissionDeniedError = PermissionDeniedError; +GeminiNextGenAPIClient.UnprocessableEntityError = UnprocessableEntityError; +GeminiNextGenAPIClient.toFile = toFile; +GeminiNextGenAPIClient.Interactions = Interactions; +var GOOGLE_API_KEY_HEADER = "x-goog-api-key"; +var REQUIRED_VERTEX_AI_SCOPE = "https://www.googleapis.com/auth/cloud-platform"; +var NodeAuth = class { + constructor(opts) { + if (opts.apiKey !== void 0) { + this.apiKey = opts.apiKey; + return; + } + const vertexAuthOptions = buildGoogleAuthOptions(opts.googleAuthOptions); + this.googleAuth = new import_google_auth_library.GoogleAuth(vertexAuthOptions); + } + async addAuthHeaders(headers, url) { + if (this.apiKey !== void 0) { + if (this.apiKey.startsWith("auth_tokens/")) { + throw new Error("Ephemeral tokens are only supported by the live API."); + } + this.addKeyHeader(headers); + return; } - return cache[methodName]; - } -}; -function endpointsToMethods(octokit) { - const newMethods = {}; - for (const scope of endpointMethodsMap.keys()) { - newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); + return this.addGoogleAuthHeaders(headers, url); } - return newMethods; -} -function decorate(octokit, scope, methodName, defaults2, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults2); - function withDecorations(...args) { - let options = requestWithDefaults.endpoint.merge(...args); - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: void 0 - }); - return requestWithDefaults(options); + addKeyHeader(headers) { + if (headers.get(GOOGLE_API_KEY_HEADER) !== null) { + return; } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn( - `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` - ); + if (this.apiKey === void 0) { + throw new Error("Trying to set API key header but apiKey is not set"); } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); + headers.append(GOOGLE_API_KEY_HEADER, this.apiKey); + } + async addGoogleAuthHeaders(headers, url) { + if (this.googleAuth === void 0) { + throw new Error("Trying to set google-auth headers but googleAuth is unset"); } - if (decorations.renamedParameters) { - const options2 = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries( - decorations.renamedParameters - )) { - if (name in options2) { - octokit.log.warn( - `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` - ); - if (!(alias in options2)) { - options2[alias] = options2[name]; - } - delete options2[name]; - } + const authHeaders = await this.googleAuth.getRequestHeaders(url); + for (const [key, value] of authHeaders) { + if (headers.get(key) !== null) { + continue; } - return requestWithDefaults(options2); + headers.append(key, value); } - return requestWithDefaults(...args); } - return Object.assign(withDecorations, requestWithDefaults); -} - -// -function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - rest: api - }; -} -restEndpointMethods.VERSION = VERSION5; -function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - ...api, - rest: api - }; -} -legacyRestEndpointMethods.VERSION = VERSION5; - -// -var VERSION6 = "0.0.0-development"; -function normalizePaginatedListResponse(response) { - if (!response.data) { - return { - ...response, - data: [] +}; +function buildGoogleAuthOptions(googleAuthOptions) { + let authOptions; + if (!googleAuthOptions) { + authOptions = { + scopes: [REQUIRED_VERTEX_AI_SCOPE] }; + return authOptions; + } else { + authOptions = googleAuthOptions; + if (!authOptions.scopes) { + authOptions.scopes = [REQUIRED_VERTEX_AI_SCOPE]; + return authOptions; + } else if (typeof authOptions.scopes === "string" && authOptions.scopes !== REQUIRED_VERTEX_AI_SCOPE || Array.isArray(authOptions.scopes) && authOptions.scopes.indexOf(REQUIRED_VERTEX_AI_SCOPE) < 0) { + throw new Error(`Invalid auth scopes. Scopes must include: ${REQUIRED_VERTEX_AI_SCOPE}`); + } + return authOptions; } - const responseNeedsNormalization = ("total_count" in response.data || "total_commits" in response.data) && !("url" in response.data); - if (!responseNeedsNormalization) - return response; - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - const totalCommits = response.data.total_commits; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - delete response.data.total_commits; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - response.data.total_commits = totalCommits; - return response; } -function iterator(octokit, route, parameters) { - const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) - return { done: true }; +var NodeDownloader = class { + async download(params, apiClient) { + if (params.downloadPath) { + const response = await downloadFile(params, apiClient); + if (response instanceof HttpResponse) { + const writer = createWriteStream(params.downloadPath); + const body = Readable.fromWeb(response.responseInternal.body); + body.pipe(writer); + await finished(writer); + } else { try { - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - url = ((normalizedResponse.headers.link || "").match( - /<([^<>]+)>;\s*rel="next"/ - ) || [])[1]; - if (!url && "total_commits" in normalizedResponse.data) { - const parsedUrl = new URL(normalizedResponse.url); - const params = parsedUrl.searchParams; - const page = parseInt(params.get("page") || "1", 10); - const per_page = parseInt(params.get("per_page") || "250", 10); - if (page * per_page < normalizedResponse.data.total_commits) { - params.set("page", String(page + 1)); - url = parsedUrl.toString(); - } - } - return { value: normalizedResponse }; + await writeFile2(params.downloadPath, response, { + encoding: "base64" + }); } catch (error2) { - if (error2.status !== 409) - throw error2; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; + throw new Error(`Failed to write file to ${params.downloadPath}: ${error2}`); } } - }) - }; -} -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = void 0; - } - return gather( - octokit, - [], - iterator(octokit, route, parameters)[Symbol.asyncIterator](), - mapFn - ); -} -function gather(octokit, results, iterator2, mapFn) { - return iterator2.next().then((result) => { - if (result.done) { - return results; } - let earlyExit = false; - function done() { - earlyExit = true; + } +}; +async function downloadFile(params, apiClient) { + var _a3, _b, _c; + const name = tFileName(params.file); + if (name !== void 0) { + return await apiClient.request({ + path: `files/${name}:download`, + httpMethod: "GET", + queryParams: { + "alt": "media" + }, + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }); + } else if (isGeneratedVideo(params.file)) { + const videoBytes = (_c = params.file.video) === null || _c === void 0 ? void 0 : _c.videoBytes; + if (typeof videoBytes === "string") { + return videoBytes; + } else { + throw new Error("Failed to download generated video, Uri or videoBytes not found."); } - results = results.concat( - mapFn ? mapFn(result.value, done) : result.value.data - ); - if (earlyExit) { - return results; + } else if (isVideo(params.file)) { + const videoBytes = params.file.videoBytes; + if (typeof videoBytes === "string") { + return videoBytes; + } else { + throw new Error("Failed to download video, Uri or videoBytes not found."); } - return gather(octokit, results, iterator2, mapFn); - }); -} -var composePaginateRest = Object.assign(paginate, { - iterator -}); -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit) - }) - }; -} -paginateRest.VERSION = VERSION6; - -// -var context = new Context(); -var baseUrl = getApiBaseUrl(); -var defaults = { - baseUrl, - request: { - agent: getProxyAgent(baseUrl), - fetch: getProxyFetch(baseUrl) + } else { + throw new Error("Unsupported file type"); } -}; -var GitHub = Octokit.plugin(restEndpointMethods, paginateRest).defaults(defaults); - -// -var context2 = new Context(); - -// -var SchemaType; -(function(SchemaType2) { - SchemaType2["STRING"] = "string"; - SchemaType2["NUMBER"] = "number"; - SchemaType2["INTEGER"] = "integer"; - SchemaType2["BOOLEAN"] = "boolean"; - SchemaType2["ARRAY"] = "array"; - SchemaType2["OBJECT"] = "object"; -})(SchemaType || (SchemaType = {})); -var ExecutableCodeLanguage; -(function(ExecutableCodeLanguage2) { - ExecutableCodeLanguage2["LANGUAGE_UNSPECIFIED"] = "language_unspecified"; - ExecutableCodeLanguage2["PYTHON"] = "python"; -})(ExecutableCodeLanguage || (ExecutableCodeLanguage = {})); -var Outcome; -(function(Outcome2) { - Outcome2["OUTCOME_UNSPECIFIED"] = "outcome_unspecified"; - Outcome2["OUTCOME_OK"] = "outcome_ok"; - Outcome2["OUTCOME_FAILED"] = "outcome_failed"; - Outcome2["OUTCOME_DEADLINE_EXCEEDED"] = "outcome_deadline_exceeded"; -})(Outcome || (Outcome = {})); -var POSSIBLE_ROLES = ["user", "model", "function", "system"]; -var HarmCategory; -(function(HarmCategory2) { - HarmCategory2["HARM_CATEGORY_UNSPECIFIED"] = "HARM_CATEGORY_UNSPECIFIED"; - HarmCategory2["HARM_CATEGORY_HATE_SPEECH"] = "HARM_CATEGORY_HATE_SPEECH"; - HarmCategory2["HARM_CATEGORY_SEXUALLY_EXPLICIT"] = "HARM_CATEGORY_SEXUALLY_EXPLICIT"; - HarmCategory2["HARM_CATEGORY_HARASSMENT"] = "HARM_CATEGORY_HARASSMENT"; - HarmCategory2["HARM_CATEGORY_DANGEROUS_CONTENT"] = "HARM_CATEGORY_DANGEROUS_CONTENT"; - HarmCategory2["HARM_CATEGORY_CIVIC_INTEGRITY"] = "HARM_CATEGORY_CIVIC_INTEGRITY"; -})(HarmCategory || (HarmCategory = {})); -var HarmBlockThreshold; -(function(HarmBlockThreshold2) { - HarmBlockThreshold2["HARM_BLOCK_THRESHOLD_UNSPECIFIED"] = "HARM_BLOCK_THRESHOLD_UNSPECIFIED"; - HarmBlockThreshold2["BLOCK_LOW_AND_ABOVE"] = "BLOCK_LOW_AND_ABOVE"; - HarmBlockThreshold2["BLOCK_MEDIUM_AND_ABOVE"] = "BLOCK_MEDIUM_AND_ABOVE"; - HarmBlockThreshold2["BLOCK_ONLY_HIGH"] = "BLOCK_ONLY_HIGH"; - HarmBlockThreshold2["BLOCK_NONE"] = "BLOCK_NONE"; -})(HarmBlockThreshold || (HarmBlockThreshold = {})); -var HarmProbability; -(function(HarmProbability2) { - HarmProbability2["HARM_PROBABILITY_UNSPECIFIED"] = "HARM_PROBABILITY_UNSPECIFIED"; - HarmProbability2["NEGLIGIBLE"] = "NEGLIGIBLE"; - HarmProbability2["LOW"] = "LOW"; - HarmProbability2["MEDIUM"] = "MEDIUM"; - HarmProbability2["HIGH"] = "HIGH"; -})(HarmProbability || (HarmProbability = {})); -var BlockReason; -(function(BlockReason2) { - BlockReason2["BLOCKED_REASON_UNSPECIFIED"] = "BLOCKED_REASON_UNSPECIFIED"; - BlockReason2["SAFETY"] = "SAFETY"; - BlockReason2["OTHER"] = "OTHER"; -})(BlockReason || (BlockReason = {})); -var FinishReason; -(function(FinishReason2) { - FinishReason2["FINISH_REASON_UNSPECIFIED"] = "FINISH_REASON_UNSPECIFIED"; - FinishReason2["STOP"] = "STOP"; - FinishReason2["MAX_TOKENS"] = "MAX_TOKENS"; - FinishReason2["SAFETY"] = "SAFETY"; - FinishReason2["RECITATION"] = "RECITATION"; - FinishReason2["LANGUAGE"] = "LANGUAGE"; - FinishReason2["BLOCKLIST"] = "BLOCKLIST"; - FinishReason2["PROHIBITED_CONTENT"] = "PROHIBITED_CONTENT"; - FinishReason2["SPII"] = "SPII"; - FinishReason2["MALFORMED_FUNCTION_CALL"] = "MALFORMED_FUNCTION_CALL"; - FinishReason2["OTHER"] = "OTHER"; -})(FinishReason || (FinishReason = {})); -var TaskType; -(function(TaskType2) { - TaskType2["TASK_TYPE_UNSPECIFIED"] = "TASK_TYPE_UNSPECIFIED"; - TaskType2["RETRIEVAL_QUERY"] = "RETRIEVAL_QUERY"; - TaskType2["RETRIEVAL_DOCUMENT"] = "RETRIEVAL_DOCUMENT"; - TaskType2["SEMANTIC_SIMILARITY"] = "SEMANTIC_SIMILARITY"; - TaskType2["CLASSIFICATION"] = "CLASSIFICATION"; - TaskType2["CLUSTERING"] = "CLUSTERING"; -})(TaskType || (TaskType = {})); -var FunctionCallingMode; -(function(FunctionCallingMode2) { - FunctionCallingMode2["MODE_UNSPECIFIED"] = "MODE_UNSPECIFIED"; - FunctionCallingMode2["AUTO"] = "AUTO"; - FunctionCallingMode2["ANY"] = "ANY"; - FunctionCallingMode2["NONE"] = "NONE"; -})(FunctionCallingMode || (FunctionCallingMode = {})); -var DynamicRetrievalMode; -(function(DynamicRetrievalMode2) { - DynamicRetrievalMode2["MODE_UNSPECIFIED"] = "MODE_UNSPECIFIED"; - DynamicRetrievalMode2["MODE_DYNAMIC"] = "MODE_DYNAMIC"; -})(DynamicRetrievalMode || (DynamicRetrievalMode = {})); -var GoogleGenerativeAIError = class extends Error { - constructor(message) { - super(`[GoogleGenerativeAI Error]: ${message}`); +} +var NodeWebSocketFactory = class { + create(url, headers, callbacks) { + return new NodeWebSocket(url, headers, callbacks); } }; -var GoogleGenerativeAIResponseError = class extends GoogleGenerativeAIError { - constructor(message, response) { - super(message); - this.response = response; +var NodeWebSocket = class { + constructor(url, headers, callbacks) { + this.url = url; + this.headers = headers; + this.callbacks = callbacks; } -}; -var GoogleGenerativeAIFetchError = class extends GoogleGenerativeAIError { - constructor(message, status, statusText, errorDetails) { - super(message); - this.status = status; - this.statusText = statusText; - this.errorDetails = errorDetails; + connect() { + this.ws = new import_websocket.default(this.url, { headers: this.headers }); + this.ws.onopen = this.callbacks.onopen; + this.ws.onerror = this.callbacks.onerror; + this.ws.onclose = this.callbacks.onclose; + this.ws.onmessage = this.callbacks.onmessage; } -}; -var GoogleGenerativeAIRequestInputError = class extends GoogleGenerativeAIError { -}; -var GoogleGenerativeAIAbortError = class extends GoogleGenerativeAIError { -}; -var DEFAULT_BASE_URL = "https://generativelanguage.googleapis.com"; -var DEFAULT_API_VERSION = "v1beta"; -var PACKAGE_VERSION = "0.24.1"; -var PACKAGE_LOG_HEADER = "genai-js"; -var Task; -(function(Task2) { - Task2["GENERATE_CONTENT"] = "generateContent"; - Task2["STREAM_GENERATE_CONTENT"] = "streamGenerateContent"; - Task2["COUNT_TOKENS"] = "countTokens"; - Task2["EMBED_CONTENT"] = "embedContent"; - Task2["BATCH_EMBED_CONTENTS"] = "batchEmbedContents"; -})(Task || (Task = {})); -var RequestUrl = class { - constructor(model, task, apiKey, stream, requestOptions) { - this.model = model; - this.task = task; - this.apiKey = apiKey; - this.stream = stream; - this.requestOptions = requestOptions; + send(message) { + if (this.ws === void 0) { + throw new Error("WebSocket is not connected"); + } + this.ws.send(message); } - toString() { - var _a2, _b; - const apiVersion = ((_a2 = this.requestOptions) === null || _a2 === void 0 ? void 0 : _a2.apiVersion) || DEFAULT_API_VERSION; - const baseUrl2 = ((_b = this.requestOptions) === null || _b === void 0 ? void 0 : _b.baseUrl) || DEFAULT_BASE_URL; - let url = `${baseUrl2}/${apiVersion}/${this.model}:${this.task}`; - if (this.stream) { - url += "?alt=sse"; + close() { + if (this.ws === void 0) { + throw new Error("WebSocket is not connected"); } - return url; + this.ws.close(); } }; -function getClientHeaders(requestOptions) { - const clientHeaders = []; - if (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.apiClient) { - clientHeaders.push(requestOptions.apiClient); +function cancelTuningJobParametersToMldev(fromObject, _rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); } - clientHeaders.push(`${PACKAGE_LOG_HEADER}/${PACKAGE_VERSION}`); - return clientHeaders.join(" "); + return toObject; } -async function getHeaders(url) { - var _a2; - const headers = new Headers(); - headers.append("Content-Type", "application/json"); - headers.append("x-goog-api-client", getClientHeaders(url.requestOptions)); - headers.append("x-goog-api-key", url.apiKey); - let customHeaders = (_a2 = url.requestOptions) === null || _a2 === void 0 ? void 0 : _a2.customHeaders; - if (customHeaders) { - if (!(customHeaders instanceof Headers)) { - try { - customHeaders = new Headers(customHeaders); - } catch (e) { - throw new GoogleGenerativeAIRequestInputError(`unable to convert customHeaders value ${JSON.stringify(customHeaders)} to Headers: ${e.message}`); - } - } - for (const [headerName, headerValue] of customHeaders.entries()) { - if (headerName === "x-goog-api-key") { - throw new GoogleGenerativeAIRequestInputError(`Cannot set reserved header name ${headerName}`); - } else if (headerName === "x-goog-api-client") { - throw new GoogleGenerativeAIRequestInputError(`Header name ${headerName} can only be set using the apiClient field`); - } - headers.append(headerName, headerValue); - } +function cancelTuningJobParametersToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); } - return headers; + return toObject; } -async function constructModelRequest(model, task, apiKey, stream, body, requestOptions) { - const url = new RequestUrl(model, task, apiKey, stream, requestOptions); - return { - url: url.toString(), - fetchOptions: Object.assign(Object.assign({}, buildFetchOptions(requestOptions)), { method: "POST", headers: await getHeaders(url), body }) - }; +function cancelTuningJobResponseFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; } -async function makeModelRequest(model, task, apiKey, stream, body, requestOptions = {}, fetchFn = fetch) { - const { url, fetchOptions } = await constructModelRequest(model, task, apiKey, stream, body, requestOptions); - return makeRequest(url, fetchOptions, fetchFn); +function cancelTuningJobResponseFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + return toObject; } -async function makeRequest(url, fetchOptions, fetchFn = fetch) { - let response; - try { - response = await fetchFn(url, fetchOptions); - } catch (e) { - handleResponseError(e, url); +function createTuningJobConfigToMldev(fromObject, parentObject, _rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["validationDataset"]) !== void 0) { + throw new Error("validationDataset parameter is not supported in Gemini API."); } - if (!response.ok) { - await handleResponseNotOk(response, url); + const fromTunedModelDisplayName = getValueByPath(fromObject, [ + "tunedModelDisplayName" + ]); + if (parentObject !== void 0 && fromTunedModelDisplayName != null) { + setValueByPath(parentObject, ["displayName"], fromTunedModelDisplayName); } - return response; -} -function handleResponseError(e, url) { - let err = e; - if (err.name === "AbortError") { - err = new GoogleGenerativeAIAbortError(`Request aborted when fetching ${url.toString()}: ${e.message}`); - err.stack = e.stack; - } else if (!(e instanceof GoogleGenerativeAIFetchError || e instanceof GoogleGenerativeAIRequestInputError)) { - err = new GoogleGenerativeAIError(`Error fetching from ${url.toString()}: ${e.message}`); - err.stack = e.stack; + if (getValueByPath(fromObject, ["description"]) !== void 0) { + throw new Error("description parameter is not supported in Gemini API."); + } + const fromEpochCount = getValueByPath(fromObject, ["epochCount"]); + if (parentObject !== void 0 && fromEpochCount != null) { + setValueByPath(parentObject, ["tuningTask", "hyperparameters", "epochCount"], fromEpochCount); + } + const fromLearningRateMultiplier = getValueByPath(fromObject, [ + "learningRateMultiplier" + ]); + if (fromLearningRateMultiplier != null) { + setValueByPath(toObject, ["tuningTask", "hyperparameters", "learningRateMultiplier"], fromLearningRateMultiplier); + } + if (getValueByPath(fromObject, ["exportLastCheckpointOnly"]) !== void 0) { + throw new Error("exportLastCheckpointOnly parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["preTunedModelCheckpointId"]) !== void 0) { + throw new Error("preTunedModelCheckpointId parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["adapterSize"]) !== void 0) { + throw new Error("adapterSize parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["tuningMode"]) !== void 0) { + throw new Error("tuningMode parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["customBaseModel"]) !== void 0) { + throw new Error("customBaseModel parameter is not supported in Gemini API."); + } + const fromBatchSize = getValueByPath(fromObject, ["batchSize"]); + if (parentObject !== void 0 && fromBatchSize != null) { + setValueByPath(parentObject, ["tuningTask", "hyperparameters", "batchSize"], fromBatchSize); + } + const fromLearningRate = getValueByPath(fromObject, ["learningRate"]); + if (parentObject !== void 0 && fromLearningRate != null) { + setValueByPath(parentObject, ["tuningTask", "hyperparameters", "learningRate"], fromLearningRate); + } + if (getValueByPath(fromObject, ["labels"]) !== void 0) { + throw new Error("labels parameter is not supported in Gemini API."); } - throw err; + if (getValueByPath(fromObject, ["beta"]) !== void 0) { + throw new Error("beta parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["baseTeacherModel"]) !== void 0) { + throw new Error("baseTeacherModel parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["tunedTeacherModelSource"]) !== void 0) { + throw new Error("tunedTeacherModelSource parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["sftLossWeightMultiplier"]) !== void 0) { + throw new Error("sftLossWeightMultiplier parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["outputUri"]) !== void 0) { + throw new Error("outputUri parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["encryptionSpec"]) !== void 0) { + throw new Error("encryptionSpec parameter is not supported in Gemini API."); + } + return toObject; } -async function handleResponseNotOk(response, url) { - let message = ""; - let errorDetails; - try { - const json = await response.json(); - message = json.error.message; - if (json.error.details) { - message += ` ${JSON.stringify(json.error.details)}`; - errorDetails = json.error.details; +function createTuningJobConfigToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + let discriminatorValidationDataset = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorValidationDataset === void 0) { + discriminatorValidationDataset = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorValidationDataset === "SUPERVISED_FINE_TUNING") { + const fromValidationDataset = getValueByPath(fromObject, [ + "validationDataset" + ]); + if (parentObject !== void 0 && fromValidationDataset != null) { + setValueByPath(parentObject, ["supervisedTuningSpec"], tuningValidationDatasetToVertex(fromValidationDataset)); + } + } else if (discriminatorValidationDataset === "PREFERENCE_TUNING") { + const fromValidationDataset = getValueByPath(fromObject, [ + "validationDataset" + ]); + if (parentObject !== void 0 && fromValidationDataset != null) { + setValueByPath(parentObject, ["preferenceOptimizationSpec"], tuningValidationDatasetToVertex(fromValidationDataset)); + } + } else if (discriminatorValidationDataset === "DISTILLATION") { + const fromValidationDataset = getValueByPath(fromObject, [ + "validationDataset" + ]); + if (parentObject !== void 0 && fromValidationDataset != null) { + setValueByPath(parentObject, ["distillationSpec"], tuningValidationDatasetToVertex(fromValidationDataset)); } - } catch (e) { } - throw new GoogleGenerativeAIFetchError(`Error fetching from ${url.toString()}: [${response.status} ${response.statusText}] ${message}`, response.status, response.statusText, errorDetails); -} -function buildFetchOptions(requestOptions) { - const fetchOptions = {}; - if ((requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.signal) !== void 0 || (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeout) >= 0) { - const controller = new AbortController(); - if ((requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeout) >= 0) { - setTimeout(() => controller.abort(), requestOptions.timeout); + const fromTunedModelDisplayName = getValueByPath(fromObject, [ + "tunedModelDisplayName" + ]); + if (parentObject !== void 0 && fromTunedModelDisplayName != null) { + setValueByPath(parentObject, ["tunedModelDisplayName"], fromTunedModelDisplayName); + } + const fromDescription = getValueByPath(fromObject, ["description"]); + if (parentObject !== void 0 && fromDescription != null) { + setValueByPath(parentObject, ["description"], fromDescription); + } + let discriminatorEpochCount = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorEpochCount === void 0) { + discriminatorEpochCount = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorEpochCount === "SUPERVISED_FINE_TUNING") { + const fromEpochCount = getValueByPath(fromObject, ["epochCount"]); + if (parentObject !== void 0 && fromEpochCount != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "hyperParameters", "epochCount"], fromEpochCount); } - if (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.signal) { - requestOptions.signal.addEventListener("abort", () => { - controller.abort(); - }); + } else if (discriminatorEpochCount === "PREFERENCE_TUNING") { + const fromEpochCount = getValueByPath(fromObject, ["epochCount"]); + if (parentObject !== void 0 && fromEpochCount != null) { + setValueByPath(parentObject, ["preferenceOptimizationSpec", "hyperParameters", "epochCount"], fromEpochCount); + } + } else if (discriminatorEpochCount === "DISTILLATION") { + const fromEpochCount = getValueByPath(fromObject, ["epochCount"]); + if (parentObject !== void 0 && fromEpochCount != null) { + setValueByPath(parentObject, ["distillationSpec", "hyperParameters", "epochCount"], fromEpochCount); } - fetchOptions.signal = controller.signal; } - return fetchOptions; -} -function addHelpers(response) { - response.text = () => { - if (response.candidates && response.candidates.length > 0) { - if (response.candidates.length > 1) { - console.warn(`This response had ${response.candidates.length} candidates. Returning text from the first candidate only. Access response.candidates directly to use the other candidates.`); - } - if (hadBadFinishReason(response.candidates[0])) { - throw new GoogleGenerativeAIResponseError(`${formatBlockErrorMessage(response)}`, response); - } - return getText(response); - } else if (response.promptFeedback) { - throw new GoogleGenerativeAIResponseError(`Text not available. ${formatBlockErrorMessage(response)}`, response); + let discriminatorLearningRateMultiplier = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorLearningRateMultiplier === void 0) { + discriminatorLearningRateMultiplier = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorLearningRateMultiplier === "SUPERVISED_FINE_TUNING") { + const fromLearningRateMultiplier = getValueByPath(fromObject, [ + "learningRateMultiplier" + ]); + if (parentObject !== void 0 && fromLearningRateMultiplier != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "hyperParameters", "learningRateMultiplier"], fromLearningRateMultiplier); } - return ""; - }; - response.functionCall = () => { - if (response.candidates && response.candidates.length > 0) { - if (response.candidates.length > 1) { - console.warn(`This response had ${response.candidates.length} candidates. Returning function calls from the first candidate only. Access response.candidates directly to use the other candidates.`); - } - if (hadBadFinishReason(response.candidates[0])) { - throw new GoogleGenerativeAIResponseError(`${formatBlockErrorMessage(response)}`, response); - } - console.warn(`response.functionCall() is deprecated. Use response.functionCalls() instead.`); - return getFunctionCalls(response)[0]; - } else if (response.promptFeedback) { - throw new GoogleGenerativeAIResponseError(`Function call not available. ${formatBlockErrorMessage(response)}`, response); + } else if (discriminatorLearningRateMultiplier === "PREFERENCE_TUNING") { + const fromLearningRateMultiplier = getValueByPath(fromObject, [ + "learningRateMultiplier" + ]); + if (parentObject !== void 0 && fromLearningRateMultiplier != null) { + setValueByPath(parentObject, [ + "preferenceOptimizationSpec", + "hyperParameters", + "learningRateMultiplier" + ], fromLearningRateMultiplier); + } + } else if (discriminatorLearningRateMultiplier === "DISTILLATION") { + const fromLearningRateMultiplier = getValueByPath(fromObject, [ + "learningRateMultiplier" + ]); + if (parentObject !== void 0 && fromLearningRateMultiplier != null) { + setValueByPath(parentObject, ["distillationSpec", "hyperParameters", "learningRateMultiplier"], fromLearningRateMultiplier); } - return void 0; - }; - response.functionCalls = () => { - if (response.candidates && response.candidates.length > 0) { - if (response.candidates.length > 1) { - console.warn(`This response had ${response.candidates.length} candidates. Returning function calls from the first candidate only. Access response.candidates directly to use the other candidates.`); - } - if (hadBadFinishReason(response.candidates[0])) { - throw new GoogleGenerativeAIResponseError(`${formatBlockErrorMessage(response)}`, response); - } - return getFunctionCalls(response); - } else if (response.promptFeedback) { - throw new GoogleGenerativeAIResponseError(`Function call not available. ${formatBlockErrorMessage(response)}`, response); + } + let discriminatorExportLastCheckpointOnly = getValueByPath(rootObject, ["config", "method"]); + if (discriminatorExportLastCheckpointOnly === void 0) { + discriminatorExportLastCheckpointOnly = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorExportLastCheckpointOnly === "SUPERVISED_FINE_TUNING") { + const fromExportLastCheckpointOnly = getValueByPath(fromObject, [ + "exportLastCheckpointOnly" + ]); + if (parentObject !== void 0 && fromExportLastCheckpointOnly != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "exportLastCheckpointOnly"], fromExportLastCheckpointOnly); } - return void 0; - }; - return response; -} -function getText(response) { - var _a2, _b, _c, _d; - const textStrings = []; - if ((_b = (_a2 = response.candidates) === null || _a2 === void 0 ? void 0 : _a2[0].content) === null || _b === void 0 ? void 0 : _b.parts) { - for (const part of (_d = (_c = response.candidates) === null || _c === void 0 ? void 0 : _c[0].content) === null || _d === void 0 ? void 0 : _d.parts) { - if (part.text) { - textStrings.push(part.text); - } - if (part.executableCode) { - textStrings.push("\n```" + part.executableCode.language + "\n" + part.executableCode.code + "\n```\n"); - } - if (part.codeExecutionResult) { - textStrings.push("\n```\n" + part.codeExecutionResult.output + "\n```\n"); - } + } else if (discriminatorExportLastCheckpointOnly === "PREFERENCE_TUNING") { + const fromExportLastCheckpointOnly = getValueByPath(fromObject, [ + "exportLastCheckpointOnly" + ]); + if (parentObject !== void 0 && fromExportLastCheckpointOnly != null) { + setValueByPath(parentObject, ["preferenceOptimizationSpec", "exportLastCheckpointOnly"], fromExportLastCheckpointOnly); + } + } else if (discriminatorExportLastCheckpointOnly === "DISTILLATION") { + const fromExportLastCheckpointOnly = getValueByPath(fromObject, [ + "exportLastCheckpointOnly" + ]); + if (parentObject !== void 0 && fromExportLastCheckpointOnly != null) { + setValueByPath(parentObject, ["distillationSpec", "exportLastCheckpointOnly"], fromExportLastCheckpointOnly); } } - if (textStrings.length > 0) { - return textStrings.join(""); - } else { - return ""; + let discriminatorAdapterSize = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorAdapterSize === void 0) { + discriminatorAdapterSize = "SUPERVISED_FINE_TUNING"; } -} -function getFunctionCalls(response) { - var _a2, _b, _c, _d; - const functionCalls = []; - if ((_b = (_a2 = response.candidates) === null || _a2 === void 0 ? void 0 : _a2[0].content) === null || _b === void 0 ? void 0 : _b.parts) { - for (const part of (_d = (_c = response.candidates) === null || _c === void 0 ? void 0 : _c[0].content) === null || _d === void 0 ? void 0 : _d.parts) { - if (part.functionCall) { - functionCalls.push(part.functionCall); - } + if (discriminatorAdapterSize === "SUPERVISED_FINE_TUNING") { + const fromAdapterSize = getValueByPath(fromObject, ["adapterSize"]); + if (parentObject !== void 0 && fromAdapterSize != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "hyperParameters", "adapterSize"], fromAdapterSize); + } + } else if (discriminatorAdapterSize === "PREFERENCE_TUNING") { + const fromAdapterSize = getValueByPath(fromObject, ["adapterSize"]); + if (parentObject !== void 0 && fromAdapterSize != null) { + setValueByPath(parentObject, ["preferenceOptimizationSpec", "hyperParameters", "adapterSize"], fromAdapterSize); + } + } else if (discriminatorAdapterSize === "DISTILLATION") { + const fromAdapterSize = getValueByPath(fromObject, ["adapterSize"]); + if (parentObject !== void 0 && fromAdapterSize != null) { + setValueByPath(parentObject, ["distillationSpec", "hyperParameters", "adapterSize"], fromAdapterSize); } } - if (functionCalls.length > 0) { - return functionCalls; - } else { - return void 0; + let discriminatorTuningMode = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorTuningMode === void 0) { + discriminatorTuningMode = "SUPERVISED_FINE_TUNING"; } -} -var badFinishReasons = [ - FinishReason.RECITATION, - FinishReason.SAFETY, - FinishReason.LANGUAGE -]; -function hadBadFinishReason(candidate) { - return !!candidate.finishReason && badFinishReasons.includes(candidate.finishReason); -} -function formatBlockErrorMessage(response) { - var _a2, _b, _c; - let message = ""; - if ((!response.candidates || response.candidates.length === 0) && response.promptFeedback) { - message += "Response was blocked"; - if ((_a2 = response.promptFeedback) === null || _a2 === void 0 ? void 0 : _a2.blockReason) { - message += ` due to ${response.promptFeedback.blockReason}`; + if (discriminatorTuningMode === "SUPERVISED_FINE_TUNING") { + const fromTuningMode = getValueByPath(fromObject, ["tuningMode"]); + if (parentObject !== void 0 && fromTuningMode != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "tuningMode"], fromTuningMode); } - if ((_b = response.promptFeedback) === null || _b === void 0 ? void 0 : _b.blockReasonMessage) { - message += `: ${response.promptFeedback.blockReasonMessage}`; + } + const fromCustomBaseModel = getValueByPath(fromObject, [ + "customBaseModel" + ]); + if (parentObject !== void 0 && fromCustomBaseModel != null) { + setValueByPath(parentObject, ["customBaseModel"], fromCustomBaseModel); + } + let discriminatorBatchSize = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorBatchSize === void 0) { + discriminatorBatchSize = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorBatchSize === "SUPERVISED_FINE_TUNING") { + const fromBatchSize = getValueByPath(fromObject, ["batchSize"]); + if (parentObject !== void 0 && fromBatchSize != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "hyperParameters", "batchSize"], fromBatchSize); } - } else if ((_c = response.candidates) === null || _c === void 0 ? void 0 : _c[0]) { - const firstCandidate = response.candidates[0]; - if (hadBadFinishReason(firstCandidate)) { - message += `Candidate was blocked due to ${firstCandidate.finishReason}`; - if (firstCandidate.finishMessage) { - message += `: ${firstCandidate.finishMessage}`; - } + } + let discriminatorLearningRate = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorLearningRate === void 0) { + discriminatorLearningRate = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorLearningRate === "SUPERVISED_FINE_TUNING") { + const fromLearningRate = getValueByPath(fromObject, [ + "learningRate" + ]); + if (parentObject !== void 0 && fromLearningRate != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "hyperParameters", "learningRate"], fromLearningRate); } } - return message; + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (parentObject !== void 0 && fromLabels != null) { + setValueByPath(parentObject, ["labels"], fromLabels); + } + const fromBeta = getValueByPath(fromObject, ["beta"]); + if (parentObject !== void 0 && fromBeta != null) { + setValueByPath(parentObject, ["preferenceOptimizationSpec", "hyperParameters", "beta"], fromBeta); + } + const fromBaseTeacherModel = getValueByPath(fromObject, [ + "baseTeacherModel" + ]); + if (parentObject !== void 0 && fromBaseTeacherModel != null) { + setValueByPath(parentObject, ["distillationSpec", "baseTeacherModel"], fromBaseTeacherModel); + } + const fromTunedTeacherModelSource = getValueByPath(fromObject, [ + "tunedTeacherModelSource" + ]); + if (parentObject !== void 0 && fromTunedTeacherModelSource != null) { + setValueByPath(parentObject, ["distillationSpec", "tunedTeacherModelSource"], fromTunedTeacherModelSource); + } + const fromSftLossWeightMultiplier = getValueByPath(fromObject, [ + "sftLossWeightMultiplier" + ]); + if (parentObject !== void 0 && fromSftLossWeightMultiplier != null) { + setValueByPath(parentObject, ["distillationSpec", "hyperParameters", "sftLossWeightMultiplier"], fromSftLossWeightMultiplier); + } + const fromOutputUri = getValueByPath(fromObject, ["outputUri"]); + if (parentObject !== void 0 && fromOutputUri != null) { + setValueByPath(parentObject, ["outputUri"], fromOutputUri); + } + const fromEncryptionSpec = getValueByPath(fromObject, [ + "encryptionSpec" + ]); + if (parentObject !== void 0 && fromEncryptionSpec != null) { + setValueByPath(parentObject, ["encryptionSpec"], fromEncryptionSpec); + } + return toObject; } -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); +function createTuningJobParametersPrivateToMldev(fromObject, rootObject) { + const toObject = {}; + const fromBaseModel = getValueByPath(fromObject, ["baseModel"]); + if (fromBaseModel != null) { + setValueByPath(toObject, ["baseModel"], fromBaseModel); + } + const fromPreTunedModel = getValueByPath(fromObject, [ + "preTunedModel" + ]); + if (fromPreTunedModel != null) { + setValueByPath(toObject, ["preTunedModel"], fromPreTunedModel); + } + const fromTrainingDataset = getValueByPath(fromObject, [ + "trainingDataset" + ]); + if (fromTrainingDataset != null) { + tuningDatasetToMldev(fromTrainingDataset); + } + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createTuningJobConfigToMldev(fromConfig, toObject); + } + return toObject; } -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) - throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) - i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; +function createTuningJobParametersPrivateToVertex(fromObject, rootObject) { + const toObject = {}; + const fromBaseModel = getValueByPath(fromObject, ["baseModel"]); + if (fromBaseModel != null) { + setValueByPath(toObject, ["baseModel"], fromBaseModel); } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } + const fromPreTunedModel = getValueByPath(fromObject, [ + "preTunedModel" + ]); + if (fromPreTunedModel != null) { + setValueByPath(toObject, ["preTunedModel"], fromPreTunedModel); } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + const fromTrainingDataset = getValueByPath(fromObject, [ + "trainingDataset" + ]); + if (fromTrainingDataset != null) { + tuningDatasetToVertex(fromTrainingDataset, toObject, rootObject); } - function fulfill(value) { - resume("next", value); + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + createTuningJobConfigToVertex(fromConfig, toObject, rootObject); } - function reject(value) { - resume("throw", value); + return toObject; +} +function getTuningJobParametersToMldev(fromObject, _rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); } - function settle(f, v) { - if (f(v), q.shift(), q.length) - resume(q[0][0], q[0][1]); + return toObject; +} +function getTuningJobParametersToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["_url", "name"], fromName); } + return toObject; } -var responseLineRE = /^data\: (.*)(?:\n\n|\r\r|\r\n\r\n)/; -function processStream(response) { - const inputStream = response.body.pipeThrough(new TextDecoderStream("utf8", { fatal: true })); - const responseStream = getResponseStream(inputStream); - const [stream1, stream2] = responseStream.tee(); - return { - stream: generateResponseSequence(stream1), - response: getResponsePromise(stream2) - }; +function listTuningJobsConfigToMldev(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + const fromFilter = getValueByPath(fromObject, ["filter"]); + if (parentObject !== void 0 && fromFilter != null) { + setValueByPath(parentObject, ["_query", "filter"], fromFilter); + } + return toObject; } -async function getResponsePromise(stream) { - const allResponses = []; - const reader = stream.getReader(); - while (true) { - const { done, value } = await reader.read(); - if (done) { - return addHelpers(aggregateResponses(allResponses)); +function listTuningJobsConfigToVertex(fromObject, parentObject, _rootObject) { + const toObject = {}; + const fromPageSize = getValueByPath(fromObject, ["pageSize"]); + if (parentObject !== void 0 && fromPageSize != null) { + setValueByPath(parentObject, ["_query", "pageSize"], fromPageSize); + } + const fromPageToken = getValueByPath(fromObject, ["pageToken"]); + if (parentObject !== void 0 && fromPageToken != null) { + setValueByPath(parentObject, ["_query", "pageToken"], fromPageToken); + } + const fromFilter = getValueByPath(fromObject, ["filter"]); + if (parentObject !== void 0 && fromFilter != null) { + setValueByPath(parentObject, ["_query", "filter"], fromFilter); + } + return toObject; +} +function listTuningJobsParametersToMldev(fromObject, rootObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listTuningJobsConfigToMldev(fromConfig, toObject); + } + return toObject; +} +function listTuningJobsParametersToVertex(fromObject, rootObject) { + const toObject = {}; + const fromConfig = getValueByPath(fromObject, ["config"]); + if (fromConfig != null) { + listTuningJobsConfigToVertex(fromConfig, toObject); + } + return toObject; +} +function listTuningJobsResponseFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromTuningJobs = getValueByPath(fromObject, ["tunedModels"]); + if (fromTuningJobs != null) { + let transformedList = fromTuningJobs; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return tuningJobFromMldev(item); + }); } - allResponses.push(value); + setValueByPath(toObject, ["tuningJobs"], transformedList); } + return toObject; } -function generateResponseSequence(stream) { - return __asyncGenerator(this, arguments, function* generateResponseSequence_1() { - const reader = stream.getReader(); - while (true) { - const { value, done } = yield __await(reader.read()); - if (done) { - break; - } - yield yield __await(addHelpers(value)); +function listTuningJobsResponseFromVertex(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromNextPageToken = getValueByPath(fromObject, [ + "nextPageToken" + ]); + if (fromNextPageToken != null) { + setValueByPath(toObject, ["nextPageToken"], fromNextPageToken); + } + const fromTuningJobs = getValueByPath(fromObject, ["tuningJobs"]); + if (fromTuningJobs != null) { + let transformedList = fromTuningJobs; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return tuningJobFromVertex(item); + }); } - }); + setValueByPath(toObject, ["tuningJobs"], transformedList); + } + return toObject; } -function getResponseStream(inputStream) { - const reader = inputStream.getReader(); - const stream = new ReadableStream({ - start(controller) { - let currentText = ""; - return pump(); - function pump() { - return reader.read().then(({ value, done }) => { - if (done) { - if (currentText.trim()) { - controller.error(new GoogleGenerativeAIError("Failed to parse stream")); - return; - } - controller.close(); - return; - } - currentText += value; - let match = currentText.match(responseLineRE); - let parsedResponse; - while (match) { - try { - parsedResponse = JSON.parse(match[1]); - } catch (e) { - controller.error(new GoogleGenerativeAIError(`Error parsing JSON response: "${match[1]}"`)); - return; - } - controller.enqueue(parsedResponse); - currentText = currentText.substring(match[0].length); - match = currentText.match(responseLineRE); - } - return pump(); - }).catch((e) => { - let err = e; - err.stack = e.stack; - if (err.name === "AbortError") { - err = new GoogleGenerativeAIAbortError("Request aborted when reading from the stream"); - } else { - err = new GoogleGenerativeAIError("Error reading from the stream"); - } - throw err; - }); - } +function tunedModelFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromModel = getValueByPath(fromObject, ["name"]); + if (fromModel != null) { + setValueByPath(toObject, ["model"], fromModel); + } + const fromEndpoint = getValueByPath(fromObject, ["name"]); + if (fromEndpoint != null) { + setValueByPath(toObject, ["endpoint"], fromEndpoint); + } + return toObject; +} +function tuningDatasetToMldev(fromObject, _rootObject) { + const toObject = {}; + if (getValueByPath(fromObject, ["gcsUri"]) !== void 0) { + throw new Error("gcsUri parameter is not supported in Gemini API."); + } + if (getValueByPath(fromObject, ["vertexDatasetResource"]) !== void 0) { + throw new Error("vertexDatasetResource parameter is not supported in Gemini API."); + } + const fromExamples = getValueByPath(fromObject, ["examples"]); + if (fromExamples != null) { + let transformedList = fromExamples; + if (Array.isArray(transformedList)) { + transformedList = transformedList.map((item) => { + return item; + }); } - }); - return stream; + setValueByPath(toObject, ["examples", "examples"], transformedList); + } + return toObject; } -function aggregateResponses(responses) { - const lastResponse = responses[responses.length - 1]; - const aggregatedResponse = { - promptFeedback: lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.promptFeedback - }; - for (const response of responses) { - if (response.candidates) { - let candidateIndex = 0; - for (const candidate of response.candidates) { - if (!aggregatedResponse.candidates) { - aggregatedResponse.candidates = []; - } - if (!aggregatedResponse.candidates[candidateIndex]) { - aggregatedResponse.candidates[candidateIndex] = { - index: candidateIndex - }; - } - aggregatedResponse.candidates[candidateIndex].citationMetadata = candidate.citationMetadata; - aggregatedResponse.candidates[candidateIndex].groundingMetadata = candidate.groundingMetadata; - aggregatedResponse.candidates[candidateIndex].finishReason = candidate.finishReason; - aggregatedResponse.candidates[candidateIndex].finishMessage = candidate.finishMessage; - aggregatedResponse.candidates[candidateIndex].safetyRatings = candidate.safetyRatings; - if (candidate.content && candidate.content.parts) { - if (!aggregatedResponse.candidates[candidateIndex].content) { - aggregatedResponse.candidates[candidateIndex].content = { - role: candidate.content.role || "user", - parts: [] - }; - } - const newPart = {}; - for (const part of candidate.content.parts) { - if (part.text) { - newPart.text = part.text; - } - if (part.functionCall) { - newPart.functionCall = part.functionCall; - } - if (part.executableCode) { - newPart.executableCode = part.executableCode; - } - if (part.codeExecutionResult) { - newPart.codeExecutionResult = part.codeExecutionResult; - } - if (Object.keys(newPart).length === 0) { - newPart.text = ""; - } - aggregatedResponse.candidates[candidateIndex].content.parts.push(newPart); - } - } - } - candidateIndex++; +function tuningDatasetToVertex(fromObject, parentObject, rootObject) { + const toObject = {}; + let discriminatorGcsUri = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorGcsUri === void 0) { + discriminatorGcsUri = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorGcsUri === "SUPERVISED_FINE_TUNING") { + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (parentObject !== void 0 && fromGcsUri != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "trainingDatasetUri"], fromGcsUri); + } + } else if (discriminatorGcsUri === "PREFERENCE_TUNING") { + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (parentObject !== void 0 && fromGcsUri != null) { + setValueByPath(parentObject, ["preferenceOptimizationSpec", "trainingDatasetUri"], fromGcsUri); + } + } else if (discriminatorGcsUri === "DISTILLATION") { + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (parentObject !== void 0 && fromGcsUri != null) { + setValueByPath(parentObject, ["distillationSpec", "promptDatasetUri"], fromGcsUri); + } + } + let discriminatorVertexDatasetResource = getValueByPath(rootObject, [ + "config", + "method" + ]); + if (discriminatorVertexDatasetResource === void 0) { + discriminatorVertexDatasetResource = "SUPERVISED_FINE_TUNING"; + } + if (discriminatorVertexDatasetResource === "SUPERVISED_FINE_TUNING") { + const fromVertexDatasetResource = getValueByPath(fromObject, [ + "vertexDatasetResource" + ]); + if (parentObject !== void 0 && fromVertexDatasetResource != null) { + setValueByPath(parentObject, ["supervisedTuningSpec", "trainingDatasetUri"], fromVertexDatasetResource); + } + } else if (discriminatorVertexDatasetResource === "PREFERENCE_TUNING") { + const fromVertexDatasetResource = getValueByPath(fromObject, [ + "vertexDatasetResource" + ]); + if (parentObject !== void 0 && fromVertexDatasetResource != null) { + setValueByPath(parentObject, ["preferenceOptimizationSpec", "trainingDatasetUri"], fromVertexDatasetResource); } - if (response.usageMetadata) { - aggregatedResponse.usageMetadata = response.usageMetadata; + } else if (discriminatorVertexDatasetResource === "DISTILLATION") { + const fromVertexDatasetResource = getValueByPath(fromObject, [ + "vertexDatasetResource" + ]); + if (parentObject !== void 0 && fromVertexDatasetResource != null) { + setValueByPath(parentObject, ["distillationSpec", "promptDatasetUri"], fromVertexDatasetResource); } } - return aggregatedResponse; -} -async function generateContentStream(apiKey, model, params, requestOptions) { - const response = await makeModelRequest( - model, - Task.STREAM_GENERATE_CONTENT, - apiKey, - /* stream */ - true, - JSON.stringify(params), - requestOptions - ); - return processStream(response); -} -async function generateContent(apiKey, model, params, requestOptions) { - const response = await makeModelRequest( - model, - Task.GENERATE_CONTENT, - apiKey, - /* stream */ - false, - JSON.stringify(params), - requestOptions - ); - const responseJson = await response.json(); - const enhancedResponse = addHelpers(responseJson); - return { - response: enhancedResponse - }; -} -function formatSystemInstruction(input) { - if (input == null) { - return void 0; - } else if (typeof input === "string") { - return { role: "system", parts: [{ text: input }] }; - } else if (input.text) { - return { role: "system", parts: [input] }; - } else if (input.parts) { - if (!input.role) { - return { role: "system", parts: input.parts }; - } else { - return input; - } + if (getValueByPath(fromObject, ["examples"]) !== void 0) { + throw new Error("examples parameter is not supported in Vertex AI."); + } + return toObject; +} +function tuningJobFromMldev(fromObject, rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromState = getValueByPath(fromObject, ["state"]); + if (fromState != null) { + setValueByPath(toObject, ["state"], tTuningJobStatus(fromState)); + } + const fromCreateTime = getValueByPath(fromObject, ["createTime"]); + if (fromCreateTime != null) { + setValueByPath(toObject, ["createTime"], fromCreateTime); + } + const fromStartTime = getValueByPath(fromObject, [ + "tuningTask", + "startTime" + ]); + if (fromStartTime != null) { + setValueByPath(toObject, ["startTime"], fromStartTime); + } + const fromEndTime = getValueByPath(fromObject, [ + "tuningTask", + "completeTime" + ]); + if (fromEndTime != null) { + setValueByPath(toObject, ["endTime"], fromEndTime); + } + const fromUpdateTime = getValueByPath(fromObject, ["updateTime"]); + if (fromUpdateTime != null) { + setValueByPath(toObject, ["updateTime"], fromUpdateTime); + } + const fromDescription = getValueByPath(fromObject, ["description"]); + if (fromDescription != null) { + setValueByPath(toObject, ["description"], fromDescription); + } + const fromBaseModel = getValueByPath(fromObject, ["baseModel"]); + if (fromBaseModel != null) { + setValueByPath(toObject, ["baseModel"], fromBaseModel); + } + const fromTunedModel = getValueByPath(fromObject, ["_self"]); + if (fromTunedModel != null) { + setValueByPath(toObject, ["tunedModel"], tunedModelFromMldev(fromTunedModel)); + } + return toObject; +} +function tuningJobFromVertex(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); + } + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); + } + const fromState = getValueByPath(fromObject, ["state"]); + if (fromState != null) { + setValueByPath(toObject, ["state"], tTuningJobStatus(fromState)); + } + const fromCreateTime = getValueByPath(fromObject, ["createTime"]); + if (fromCreateTime != null) { + setValueByPath(toObject, ["createTime"], fromCreateTime); + } + const fromStartTime = getValueByPath(fromObject, ["startTime"]); + if (fromStartTime != null) { + setValueByPath(toObject, ["startTime"], fromStartTime); + } + const fromEndTime = getValueByPath(fromObject, ["endTime"]); + if (fromEndTime != null) { + setValueByPath(toObject, ["endTime"], fromEndTime); + } + const fromUpdateTime = getValueByPath(fromObject, ["updateTime"]); + if (fromUpdateTime != null) { + setValueByPath(toObject, ["updateTime"], fromUpdateTime); + } + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + const fromDescription = getValueByPath(fromObject, ["description"]); + if (fromDescription != null) { + setValueByPath(toObject, ["description"], fromDescription); + } + const fromBaseModel = getValueByPath(fromObject, ["baseModel"]); + if (fromBaseModel != null) { + setValueByPath(toObject, ["baseModel"], fromBaseModel); + } + const fromTunedModel = getValueByPath(fromObject, ["tunedModel"]); + if (fromTunedModel != null) { + setValueByPath(toObject, ["tunedModel"], fromTunedModel); + } + const fromPreTunedModel = getValueByPath(fromObject, [ + "preTunedModel" + ]); + if (fromPreTunedModel != null) { + setValueByPath(toObject, ["preTunedModel"], fromPreTunedModel); + } + const fromSupervisedTuningSpec = getValueByPath(fromObject, [ + "supervisedTuningSpec" + ]); + if (fromSupervisedTuningSpec != null) { + setValueByPath(toObject, ["supervisedTuningSpec"], fromSupervisedTuningSpec); + } + const fromPreferenceOptimizationSpec = getValueByPath(fromObject, [ + "preferenceOptimizationSpec" + ]); + if (fromPreferenceOptimizationSpec != null) { + setValueByPath(toObject, ["preferenceOptimizationSpec"], fromPreferenceOptimizationSpec); } -} -function formatNewContent(request2) { - let newParts = []; - if (typeof request2 === "string") { - newParts = [{ text: request2 }]; - } else { - for (const partOrString of request2) { - if (typeof partOrString === "string") { - newParts.push({ text: partOrString }); - } else { - newParts.push(partOrString); - } - } + const fromDistillationSpec = getValueByPath(fromObject, [ + "distillationSpec" + ]); + if (fromDistillationSpec != null) { + setValueByPath(toObject, ["distillationSpec"], fromDistillationSpec); } - return assignRoleToPartsAndValidateSendMessageRequest(newParts); -} -function assignRoleToPartsAndValidateSendMessageRequest(parts) { - const userContent = { role: "user", parts: [] }; - const functionContent = { role: "function", parts: [] }; - let hasUserContent = false; - let hasFunctionContent = false; - for (const part of parts) { - if ("functionResponse" in part) { - functionContent.parts.push(part); - hasFunctionContent = true; - } else { - userContent.parts.push(part); - hasUserContent = true; - } + const fromTuningDataStats = getValueByPath(fromObject, [ + "tuningDataStats" + ]); + if (fromTuningDataStats != null) { + setValueByPath(toObject, ["tuningDataStats"], fromTuningDataStats); } - if (hasUserContent && hasFunctionContent) { - throw new GoogleGenerativeAIError("Within a single message, FunctionResponse cannot be mixed with other type of part in the request for sending chat message."); + const fromEncryptionSpec = getValueByPath(fromObject, [ + "encryptionSpec" + ]); + if (fromEncryptionSpec != null) { + setValueByPath(toObject, ["encryptionSpec"], fromEncryptionSpec); } - if (!hasUserContent && !hasFunctionContent) { - throw new GoogleGenerativeAIError("No content is provided for sending chat message."); + const fromPartnerModelTuningSpec = getValueByPath(fromObject, [ + "partnerModelTuningSpec" + ]); + if (fromPartnerModelTuningSpec != null) { + setValueByPath(toObject, ["partnerModelTuningSpec"], fromPartnerModelTuningSpec); } - if (hasUserContent) { - return userContent; + const fromCustomBaseModel = getValueByPath(fromObject, [ + "customBaseModel" + ]); + if (fromCustomBaseModel != null) { + setValueByPath(toObject, ["customBaseModel"], fromCustomBaseModel); } - return functionContent; -} -function formatCountTokensInput(params, modelParams) { - var _a2; - let formattedGenerateContentRequest = { - model: modelParams === null || modelParams === void 0 ? void 0 : modelParams.model, - generationConfig: modelParams === null || modelParams === void 0 ? void 0 : modelParams.generationConfig, - safetySettings: modelParams === null || modelParams === void 0 ? void 0 : modelParams.safetySettings, - tools: modelParams === null || modelParams === void 0 ? void 0 : modelParams.tools, - toolConfig: modelParams === null || modelParams === void 0 ? void 0 : modelParams.toolConfig, - systemInstruction: modelParams === null || modelParams === void 0 ? void 0 : modelParams.systemInstruction, - cachedContent: (_a2 = modelParams === null || modelParams === void 0 ? void 0 : modelParams.cachedContent) === null || _a2 === void 0 ? void 0 : _a2.name, - contents: [] - }; - const containsGenerateContentRequest = params.generateContentRequest != null; - if (params.contents) { - if (containsGenerateContentRequest) { - throw new GoogleGenerativeAIRequestInputError("CountTokensRequest must have one of contents or generateContentRequest, not both."); - } - formattedGenerateContentRequest.contents = params.contents; - } else if (containsGenerateContentRequest) { - formattedGenerateContentRequest = Object.assign(Object.assign({}, formattedGenerateContentRequest), params.generateContentRequest); - } else { - const content = formatNewContent(params); - formattedGenerateContentRequest.contents = [content]; + const fromExperiment = getValueByPath(fromObject, ["experiment"]); + if (fromExperiment != null) { + setValueByPath(toObject, ["experiment"], fromExperiment); } - return { generateContentRequest: formattedGenerateContentRequest }; -} -function formatGenerateContentInput(params) { - let formattedRequest; - if (params.contents) { - formattedRequest = params; - } else { - const content = formatNewContent(params); - formattedRequest = { contents: [content] }; + const fromLabels = getValueByPath(fromObject, ["labels"]); + if (fromLabels != null) { + setValueByPath(toObject, ["labels"], fromLabels); } - if (params.systemInstruction) { - formattedRequest.systemInstruction = formatSystemInstruction(params.systemInstruction); + const fromOutputUri = getValueByPath(fromObject, ["outputUri"]); + if (fromOutputUri != null) { + setValueByPath(toObject, ["outputUri"], fromOutputUri); } - return formattedRequest; -} -function formatEmbedContentInput(params) { - if (typeof params === "string" || Array.isArray(params)) { - const content = formatNewContent(params); - return { content }; + const fromPipelineJob = getValueByPath(fromObject, ["pipelineJob"]); + if (fromPipelineJob != null) { + setValueByPath(toObject, ["pipelineJob"], fromPipelineJob); } - return params; -} -var VALID_PART_FIELDS = [ - "text", - "inlineData", - "functionCall", - "functionResponse", - "executableCode", - "codeExecutionResult" -]; -var VALID_PARTS_PER_ROLE = { - user: ["text", "inlineData"], - function: ["functionResponse"], - model: ["text", "functionCall", "executableCode", "codeExecutionResult"], - // System instructions shouldn't be in history anyway. - system: ["text"] -}; -function validateChatHistory(history) { - let prevContent = false; - for (const currContent of history) { - const { role, parts } = currContent; - if (!prevContent && role !== "user") { - throw new GoogleGenerativeAIError(`First content should be with role 'user', got ${role}`); - } - if (!POSSIBLE_ROLES.includes(role)) { - throw new GoogleGenerativeAIError(`Each item should include role field. Got ${role} but valid roles are: ${JSON.stringify(POSSIBLE_ROLES)}`); - } - if (!Array.isArray(parts)) { - throw new GoogleGenerativeAIError("Content should have 'parts' property with an array of Parts"); - } - if (parts.length === 0) { - throw new GoogleGenerativeAIError("Each Content should have at least one part"); - } - const countFields = { - text: 0, - inlineData: 0, - functionCall: 0, - functionResponse: 0, - fileData: 0, - executableCode: 0, - codeExecutionResult: 0 - }; - for (const part of parts) { - for (const key of VALID_PART_FIELDS) { - if (key in part) { - countFields[key] += 1; - } - } - } - const validParts = VALID_PARTS_PER_ROLE[role]; - for (const key of VALID_PART_FIELDS) { - if (!validParts.includes(key) && countFields[key] > 0) { - throw new GoogleGenerativeAIError(`Content with role '${role}' can't contain '${key}' part`); - } - } - prevContent = true; + const fromServiceAccount = getValueByPath(fromObject, [ + "serviceAccount" + ]); + if (fromServiceAccount != null) { + setValueByPath(toObject, ["serviceAccount"], fromServiceAccount); + } + const fromTunedModelDisplayName = getValueByPath(fromObject, [ + "tunedModelDisplayName" + ]); + if (fromTunedModelDisplayName != null) { + setValueByPath(toObject, ["tunedModelDisplayName"], fromTunedModelDisplayName); + } + const fromVeoTuningSpec = getValueByPath(fromObject, [ + "veoTuningSpec" + ]); + if (fromVeoTuningSpec != null) { + setValueByPath(toObject, ["veoTuningSpec"], fromVeoTuningSpec); } + return toObject; } -function isValidResponse(response) { - var _a2; - if (response.candidates === void 0 || response.candidates.length === 0) { - return false; +function tuningOperationFromMldev(fromObject, _rootObject) { + const toObject = {}; + const fromSdkHttpResponse = getValueByPath(fromObject, [ + "sdkHttpResponse" + ]); + if (fromSdkHttpResponse != null) { + setValueByPath(toObject, ["sdkHttpResponse"], fromSdkHttpResponse); } - const content = (_a2 = response.candidates[0]) === null || _a2 === void 0 ? void 0 : _a2.content; - if (content === void 0) { - return false; + const fromName = getValueByPath(fromObject, ["name"]); + if (fromName != null) { + setValueByPath(toObject, ["name"], fromName); } - if (content.parts === void 0 || content.parts.length === 0) { - return false; + const fromMetadata = getValueByPath(fromObject, ["metadata"]); + if (fromMetadata != null) { + setValueByPath(toObject, ["metadata"], fromMetadata); } - for (const part of content.parts) { - if (part === void 0 || Object.keys(part).length === 0) { - return false; - } - if (part.text !== void 0 && part.text === "") { - return false; - } + const fromDone = getValueByPath(fromObject, ["done"]); + if (fromDone != null) { + setValueByPath(toObject, ["done"], fromDone); } - return true; + const fromError = getValueByPath(fromObject, ["error"]); + if (fromError != null) { + setValueByPath(toObject, ["error"], fromError); + } + return toObject; } -var SILENT_ERROR = "SILENT_ERROR"; -var ChatSession = class { - constructor(apiKey, model, params, _requestOptions = {}) { - this.model = model; - this.params = params; - this._requestOptions = _requestOptions; - this._history = []; - this._sendPromise = Promise.resolve(); - this._apiKey = apiKey; - if (params === null || params === void 0 ? void 0 : params.history) { - validateChatHistory(params.history); - this._history = params.history; - } +function tuningValidationDatasetToVertex(fromObject, _rootObject) { + const toObject = {}; + const fromGcsUri = getValueByPath(fromObject, ["gcsUri"]); + if (fromGcsUri != null) { + setValueByPath(toObject, ["validationDatasetUri"], fromGcsUri); } - /** - * Gets the chat history so far. Blocked prompts are not added to history. - * Blocked candidates are not added to history, nor are the prompts that - * generated them. - */ - async getHistory() { - await this._sendPromise; - return this._history; + const fromVertexDatasetResource = getValueByPath(fromObject, [ + "vertexDatasetResource" + ]); + if (fromVertexDatasetResource != null) { + setValueByPath(toObject, ["validationDatasetUri"], fromVertexDatasetResource); } - /** - * Sends a chat message and receives a non-streaming - * {@link GenerateContentResult}. - * - * Fields set in the optional {@link SingleRequestOptions} parameter will - * take precedence over the {@link RequestOptions} values provided to - * {@link GoogleGenerativeAI.getGenerativeModel }. - */ - async sendMessage(request2, requestOptions = {}) { - var _a2, _b, _c, _d, _e, _f; - await this._sendPromise; - const newContent = formatNewContent(request2); - const generateContentRequest = { - safetySettings: (_a2 = this.params) === null || _a2 === void 0 ? void 0 : _a2.safetySettings, - generationConfig: (_b = this.params) === null || _b === void 0 ? void 0 : _b.generationConfig, - tools: (_c = this.params) === null || _c === void 0 ? void 0 : _c.tools, - toolConfig: (_d = this.params) === null || _d === void 0 ? void 0 : _d.toolConfig, - systemInstruction: (_e = this.params) === null || _e === void 0 ? void 0 : _e.systemInstruction, - cachedContent: (_f = this.params) === null || _f === void 0 ? void 0 : _f.cachedContent, - contents: [...this._history, newContent] - }; - const chatSessionRequestOptions = Object.assign(Object.assign({}, this._requestOptions), requestOptions); - let finalResult; - this._sendPromise = this._sendPromise.then(() => generateContent(this._apiKey, this.model, generateContentRequest, chatSessionRequestOptions)).then((result) => { + return toObject; +} +var Tunings = class extends BaseModule { + constructor(apiClient) { + super(); + this.apiClient = apiClient; + this.list = async (params = {}) => { + return new Pager(PagedItem.PAGED_ITEM_TUNING_JOBS, (x2) => this.listInternal(x2), await this.listInternal(params), params); + }; + this.get = async (params) => { + return await this.getInternal(params); + }; + this.tune = async (params) => { var _a3; - if (isValidResponse(result.response)) { - this._history.push(newContent); - const responseContent = Object.assign({ - parts: [], - // Response seems to come back without a role set. - role: "model" - }, (_a3 = result.response.candidates) === null || _a3 === void 0 ? void 0 : _a3[0].content); - this._history.push(responseContent); - } else { - const blockErrorMessage = formatBlockErrorMessage(result.response); - if (blockErrorMessage) { - console.warn(`sendMessage() was unsuccessful. ${blockErrorMessage}. Inspect response object for details.`); + if (this.apiClient.isVertexAI()) { + if (params.baseModel.startsWith("projects/")) { + const preTunedModel = { + tunedModelName: params.baseModel + }; + if ((_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.preTunedModelCheckpointId) { + preTunedModel.checkpointId = params.config.preTunedModelCheckpointId; + } + const paramsPrivate = Object.assign(Object.assign({}, params), { preTunedModel }); + paramsPrivate.baseModel = void 0; + return await this.tuneInternal(paramsPrivate); + } else { + const paramsPrivate = Object.assign({}, params); + return await this.tuneInternal(paramsPrivate); } + } else { + const paramsPrivate = Object.assign({}, params); + const operation = await this.tuneMldevInternal(paramsPrivate); + let tunedModelName = ""; + if (operation["metadata"] !== void 0 && operation["metadata"]["tunedModel"] !== void 0) { + tunedModelName = operation["metadata"]["tunedModel"]; + } else if (operation["name"] !== void 0 && operation["name"].includes("/operations/")) { + tunedModelName = operation["name"].split("/operations/")[0]; + } + const tuningJob = { + name: tunedModelName, + state: JobState.JOB_STATE_QUEUED + }; + return tuningJob; } - finalResult = result; - }).catch((e) => { - this._sendPromise = Promise.resolve(); - throw e; - }); - await this._sendPromise; - return finalResult; + }; + } + async getInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = getTuningJobParametersToVertex(params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = tuningJobFromVertex(apiResponse); + return resp; + }); + } else { + const body = getTuningJobParametersToMldev(params); + path7 = formatMap("{name}", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = tuningJobFromMldev(apiResponse); + return resp; + }); + } + } + async listInternal(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = listTuningJobsParametersToVertex(params); + path7 = formatMap("tuningJobs", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listTuningJobsResponseFromVertex(apiResponse); + const typedResp = new ListTuningJobsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = listTuningJobsParametersToMldev(params); + path7 = formatMap("tunedModels", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "GET", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = listTuningJobsResponseFromMldev(apiResponse); + const typedResp = new ListTuningJobsResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } } /** - * Sends a chat message and receives the response as a - * {@link GenerateContentStreamResult} containing an iterable stream - * and a response promise. + * Cancels a tuning job. * - * Fields set in the optional {@link SingleRequestOptions} parameter will - * take precedence over the {@link RequestOptions} values provided to - * {@link GoogleGenerativeAI.getGenerativeModel }. + * @param params - The parameters for the cancel request. + * @return The empty response returned by the API. + * + * @example + * ```ts + * await ai.tunings.cancel({name: '...'}); // The server-generated resource name. + * ``` */ - async sendMessageStream(request2, requestOptions = {}) { - var _a2, _b, _c, _d, _e, _f; - await this._sendPromise; - const newContent = formatNewContent(request2); - const generateContentRequest = { - safetySettings: (_a2 = this.params) === null || _a2 === void 0 ? void 0 : _a2.safetySettings, - generationConfig: (_b = this.params) === null || _b === void 0 ? void 0 : _b.generationConfig, - tools: (_c = this.params) === null || _c === void 0 ? void 0 : _c.tools, - toolConfig: (_d = this.params) === null || _d === void 0 ? void 0 : _d.toolConfig, - systemInstruction: (_e = this.params) === null || _e === void 0 ? void 0 : _e.systemInstruction, - cachedContent: (_f = this.params) === null || _f === void 0 ? void 0 : _f.cachedContent, - contents: [...this._history, newContent] - }; - const chatSessionRequestOptions = Object.assign(Object.assign({}, this._requestOptions), requestOptions); - const streamPromise = generateContentStream(this._apiKey, this.model, generateContentRequest, chatSessionRequestOptions); - this._sendPromise = this._sendPromise.then(() => streamPromise).catch((_ignored) => { - throw new Error(SILENT_ERROR); - }).then((streamResult) => streamResult.response).then((response) => { - if (isValidResponse(response)) { - this._history.push(newContent); - const responseContent = Object.assign({}, response.candidates[0].content); - if (!responseContent.role) { - responseContent.role = "model"; - } - this._history.push(responseContent); - } else { - const blockErrorMessage = formatBlockErrorMessage(response); - if (blockErrorMessage) { - console.warn(`sendMessageStream() was unsuccessful. ${blockErrorMessage}. Inspect response object for details.`); + async cancel(params) { + var _a3, _b, _c, _d; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = cancelTuningJobParametersToVertex(params); + path7 = formatMap("{name}:cancel", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = cancelTuningJobResponseFromVertex(apiResponse); + const typedResp = new CancelTuningJobResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } else { + const body = cancelTuningJobParametersToMldev(params); + path7 = formatMap("{name}:cancel", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_c = params.config) === null || _c === void 0 ? void 0 : _c.httpOptions, + abortSignal: (_d = params.config) === null || _d === void 0 ? void 0 : _d.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = cancelTuningJobResponseFromMldev(apiResponse); + const typedResp = new CancelTuningJobResponse(); + Object.assign(typedResp, resp); + return typedResp; + }); + } + } + async tuneInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + const body = createTuningJobParametersPrivateToVertex(params, params); + path7 = formatMap("tuningJobs", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = tuningJobFromVertex(apiResponse); + return resp; + }); + } else { + throw new Error("This method is only supported by the Vertex AI."); + } + } + async tuneMldevInternal(params) { + var _a3, _b; + let response; + let path7 = ""; + let queryParams = {}; + if (this.apiClient.isVertexAI()) { + throw new Error("This method is only supported by the Gemini Developer API."); + } else { + const body = createTuningJobParametersPrivateToMldev(params); + path7 = formatMap("tunedModels", body["_url"]); + queryParams = body["_query"]; + delete body["_url"]; + delete body["_query"]; + response = this.apiClient.request({ + path: path7, + queryParams, + body: JSON.stringify(body), + httpMethod: "POST", + httpOptions: (_a3 = params.config) === null || _a3 === void 0 ? void 0 : _a3.httpOptions, + abortSignal: (_b = params.config) === null || _b === void 0 ? void 0 : _b.abortSignal + }).then((httpResponse) => { + return httpResponse.json().then((jsonResponse) => { + const response2 = jsonResponse; + response2.sdkHttpResponse = { + headers: httpResponse.headers + }; + return response2; + }); + }); + return response.then((apiResponse) => { + const resp = tuningOperationFromMldev(apiResponse); + return resp; + }); + } + } +}; +var MAX_CHUNK_SIZE = 1024 * 1024 * 8; +var MAX_RETRY_COUNT = 3; +var INITIAL_RETRY_DELAY_MS = 1e3; +var DELAY_MULTIPLIER = 2; +var X_GOOG_UPLOAD_STATUS_HEADER_FIELD = "x-goog-upload-status"; +async function uploadBlob(file, uploadUrl, apiClient) { + var _a3; + const response = await uploadBlobInternal(file, uploadUrl, apiClient); + const responseJson = await (response === null || response === void 0 ? void 0 : response.json()); + if (((_a3 = response === null || response === void 0 ? void 0 : response.headers) === null || _a3 === void 0 ? void 0 : _a3[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) !== "final") { + throw new Error("Failed to upload file: Upload status is not finalized."); + } + return responseJson["file"]; +} +async function uploadBlobToFileSearchStore(file, uploadUrl, apiClient) { + var _a3; + const response = await uploadBlobInternal(file, uploadUrl, apiClient); + const responseJson = await (response === null || response === void 0 ? void 0 : response.json()); + if (((_a3 = response === null || response === void 0 ? void 0 : response.headers) === null || _a3 === void 0 ? void 0 : _a3[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) !== "final") { + throw new Error("Failed to upload file: Upload status is not finalized."); + } + const resp = uploadToFileSearchStoreOperationFromMldev(responseJson); + const typedResp = new UploadToFileSearchStoreOperation(); + Object.assign(typedResp, resp); + return typedResp; +} +async function uploadBlobInternal(file, uploadUrl, apiClient) { + var _a3, _b; + let fileSize = 0; + let offset = 0; + let response = new HttpResponse(new Response()); + let uploadCommand = "upload"; + fileSize = file.size; + while (offset < fileSize) { + const chunkSize = Math.min(MAX_CHUNK_SIZE, fileSize - offset); + const chunk = file.slice(offset, offset + chunkSize); + if (offset + chunkSize >= fileSize) { + uploadCommand += ", finalize"; + } + let retryCount = 0; + let currentDelayMs = INITIAL_RETRY_DELAY_MS; + while (retryCount < MAX_RETRY_COUNT) { + response = await apiClient.request({ + path: "", + body: chunk, + httpMethod: "POST", + httpOptions: { + apiVersion: "", + baseUrl: uploadUrl, + headers: { + "X-Goog-Upload-Command": uploadCommand, + "X-Goog-Upload-Offset": String(offset), + "Content-Length": String(chunkSize) + } } + }); + if ((_a3 = response === null || response === void 0 ? void 0 : response.headers) === null || _a3 === void 0 ? void 0 : _a3[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) { + break; } - }).catch((e) => { - if (e.message !== SILENT_ERROR) { - console.error(e); - } - }); - return streamPromise; + retryCount++; + await sleep(currentDelayMs); + currentDelayMs = currentDelayMs * DELAY_MULTIPLIER; + } + offset += chunkSize; + if (((_b = response === null || response === void 0 ? void 0 : response.headers) === null || _b === void 0 ? void 0 : _b[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) !== "active") { + break; + } + if (fileSize <= offset) { + throw new Error("All content has been uploaded, but the upload status is not finalized."); + } } -}; -async function countTokens(apiKey, model, params, singleRequestOptions) { - const response = await makeModelRequest(model, Task.COUNT_TOKENS, apiKey, false, JSON.stringify(params), singleRequestOptions); - return response.json(); + return response; } -async function embedContent(apiKey, model, params, requestOptions) { - const response = await makeModelRequest(model, Task.EMBED_CONTENT, apiKey, false, JSON.stringify(params), requestOptions); - return response.json(); +async function getBlobStat(file) { + const fileStat = { size: file.size, type: file.type }; + return fileStat; } -async function batchEmbedContents(apiKey, model, params, requestOptions) { - const requestsWithModel = params.requests.map((request2) => { - return Object.assign(Object.assign({}, request2), { model }); - }); - const response = await makeModelRequest(model, Task.BATCH_EMBED_CONTENTS, apiKey, false, JSON.stringify({ requests: requestsWithModel }), requestOptions); - return response.json(); +function sleep(ms) { + return new Promise((resolvePromise) => setTimeout(resolvePromise, ms)); } -var GenerativeModel = class { - constructor(apiKey, modelParams, _requestOptions = {}) { - this.apiKey = apiKey; - this._requestOptions = _requestOptions; - if (modelParams.model.includes("/")) { - this.model = modelParams.model; +var NodeUploader = class { + async stat(file) { + const fileStat = { size: 0, type: void 0 }; + if (typeof file === "string") { + const originalStat = await fs4.stat(file); + fileStat.size = originalStat.size; + fileStat.type = this.inferMimeType(file); + return fileStat; } else { - this.model = `models/${modelParams.model}`; + return await getBlobStat(file); } - this.generationConfig = modelParams.generationConfig || {}; - this.safetySettings = modelParams.safetySettings || []; - this.tools = modelParams.tools; - this.toolConfig = modelParams.toolConfig; - this.systemInstruction = formatSystemInstruction(modelParams.systemInstruction); - this.cachedContent = modelParams.cachedContent; - } - /** - * Makes a single non-streaming call to the model - * and returns an object containing a single {@link GenerateContentResponse}. - * - * Fields set in the optional {@link SingleRequestOptions} parameter will - * take precedence over the {@link RequestOptions} values provided to - * {@link GoogleGenerativeAI.getGenerativeModel }. - */ - async generateContent(request2, requestOptions = {}) { - var _a2; - const formattedParams = formatGenerateContentInput(request2); - const generativeModelRequestOptions = Object.assign(Object.assign({}, this._requestOptions), requestOptions); - return generateContent(this.apiKey, this.model, Object.assign({ generationConfig: this.generationConfig, safetySettings: this.safetySettings, tools: this.tools, toolConfig: this.toolConfig, systemInstruction: this.systemInstruction, cachedContent: (_a2 = this.cachedContent) === null || _a2 === void 0 ? void 0 : _a2.name }, formattedParams), generativeModelRequestOptions); - } - /** - * Makes a single streaming call to the model and returns an object - * containing an iterable stream that iterates over all chunks in the - * streaming response as well as a promise that returns the final - * aggregated response. - * - * Fields set in the optional {@link SingleRequestOptions} parameter will - * take precedence over the {@link RequestOptions} values provided to - * {@link GoogleGenerativeAI.getGenerativeModel }. - */ - async generateContentStream(request2, requestOptions = {}) { - var _a2; - const formattedParams = formatGenerateContentInput(request2); - const generativeModelRequestOptions = Object.assign(Object.assign({}, this._requestOptions), requestOptions); - return generateContentStream(this.apiKey, this.model, Object.assign({ generationConfig: this.generationConfig, safetySettings: this.safetySettings, tools: this.tools, toolConfig: this.toolConfig, systemInstruction: this.systemInstruction, cachedContent: (_a2 = this.cachedContent) === null || _a2 === void 0 ? void 0 : _a2.name }, formattedParams), generativeModelRequestOptions); } - /** - * Gets a new {@link ChatSession} instance which can be used for - * multi-turn chats. - */ - startChat(startChatParams) { - var _a2; - return new ChatSession(this.apiKey, this.model, Object.assign({ generationConfig: this.generationConfig, safetySettings: this.safetySettings, tools: this.tools, toolConfig: this.toolConfig, systemInstruction: this.systemInstruction, cachedContent: (_a2 = this.cachedContent) === null || _a2 === void 0 ? void 0 : _a2.name }, startChatParams), this._requestOptions); + async upload(file, uploadUrl, apiClient) { + if (typeof file === "string") { + return await this.uploadFileFromPath(file, uploadUrl, apiClient); + } else { + return uploadBlob(file, uploadUrl, apiClient); + } } - /** - * Counts the tokens in the provided request. - * - * Fields set in the optional {@link SingleRequestOptions} parameter will - * take precedence over the {@link RequestOptions} values provided to - * {@link GoogleGenerativeAI.getGenerativeModel }. - */ - async countTokens(request2, requestOptions = {}) { - const formattedParams = formatCountTokensInput(request2, { - model: this.model, - generationConfig: this.generationConfig, - safetySettings: this.safetySettings, - tools: this.tools, - toolConfig: this.toolConfig, - systemInstruction: this.systemInstruction, - cachedContent: this.cachedContent - }); - const generativeModelRequestOptions = Object.assign(Object.assign({}, this._requestOptions), requestOptions); - return countTokens(this.apiKey, this.model, formattedParams, generativeModelRequestOptions); + async uploadToFileSearchStore(file, uploadUrl, apiClient) { + if (typeof file === "string") { + return await this.uploadFileToFileSearchStoreFromPath(file, uploadUrl, apiClient); + } else { + return uploadBlobToFileSearchStore(file, uploadUrl, apiClient); + } } /** - * Embeds the provided content. + * Infers the MIME type of a file based on its extension. * - * Fields set in the optional {@link SingleRequestOptions} parameter will - * take precedence over the {@link RequestOptions} values provided to - * {@link GoogleGenerativeAI.getGenerativeModel }. + * @param filePath The path to the file. + * @returns The MIME type of the file, or undefined if it cannot be inferred. */ - async embedContent(request2, requestOptions = {}) { - const formattedParams = formatEmbedContentInput(request2); - const generativeModelRequestOptions = Object.assign(Object.assign({}, this._requestOptions), requestOptions); - return embedContent(this.apiKey, this.model, formattedParams, generativeModelRequestOptions); + inferMimeType(filePath) { + const fileExtension = filePath.slice(filePath.lastIndexOf(".") + 1); + const mimeTypes = { + "aac": "audio/aac", + "abw": "application/x-abiword", + "arc": "application/x-freearc", + "avi": "video/x-msvideo", + "azw": "application/vnd.amazon.ebook", + "bin": "application/octet-stream", + "bmp": "image/bmp", + "bz": "application/x-bzip", + "bz2": "application/x-bzip2", + "csh": "application/x-csh", + "css": "text/css", + "csv": "text/csv", + "doc": "application/msword", + "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "eot": "application/vnd.ms-fontobject", + "epub": "application/epub+zip", + "gz": "application/gzip", + "gif": "image/gif", + "htm": "text/html", + "html": "text/html", + "ico": "image/vnd.microsoft.icon", + "ics": "text/calendar", + "jar": "application/java-archive", + "jpeg": "image/jpeg", + "jpg": "image/jpeg", + "js": "text/javascript", + "json": "application/json", + "jsonld": "application/ld+json", + "kml": "application/vnd.google-earth.kml+xml", + "kmz": "application/vnd.google-earth.kmz+xml", + "mjs": "text/javascript", + "mp3": "audio/mpeg", + "mp4": "video/mp4", + "mpeg": "video/mpeg", + "mpkg": "application/vnd.apple.installer+xml", + "odt": "application/vnd.oasis.opendocument.text", + "oga": "audio/ogg", + "ogv": "video/ogg", + "ogx": "application/ogg", + "opus": "audio/opus", + "otf": "font/otf", + "png": "image/png", + "pdf": "application/pdf", + "php": "application/x-httpd-php", + "ppt": "application/vnd.ms-powerpoint", + "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", + "rar": "application/vnd.rar", + "rtf": "application/rtf", + "sh": "application/x-sh", + "svg": "image/svg+xml", + "swf": "application/x-shockwave-flash", + "tar": "application/x-tar", + "tif": "image/tiff", + "tiff": "image/tiff", + "ts": "video/mp2t", + "ttf": "font/ttf", + "txt": "text/plain", + "vsd": "application/vnd.visio", + "wav": "audio/wav", + "weba": "audio/webm", + "webm": "video/webm", + "webp": "image/webp", + "woff": "font/woff", + "woff2": "font/woff2", + "xhtml": "application/xhtml+xml", + "xls": "application/vnd.ms-excel", + "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "xml": "application/xml", + "xul": "application/vnd.mozilla.xul+xml", + "zip": "application/zip", + "3gp": "video/3gpp", + "3g2": "video/3gpp2", + "7z": "application/x-7z-compressed" + }; + const mimeType = mimeTypes[fileExtension.toLowerCase()]; + return mimeType; } - /** - * Embeds an array of {@link EmbedContentRequest}s. - * - * Fields set in the optional {@link SingleRequestOptions} parameter will - * take precedence over the {@link RequestOptions} values provided to - * {@link GoogleGenerativeAI.getGenerativeModel }. - */ - async batchEmbedContents(batchEmbedContentRequest, requestOptions = {}) { - const generativeModelRequestOptions = Object.assign(Object.assign({}, this._requestOptions), requestOptions); - return batchEmbedContents(this.apiKey, this.model, batchEmbedContentRequest, generativeModelRequestOptions); + async uploadFileFromPath(file, uploadUrl, apiClient) { + var _a3; + const response = await this.uploadFileFromPathInternal(file, uploadUrl, apiClient); + const responseJson = await (response === null || response === void 0 ? void 0 : response.json()); + if (((_a3 = response === null || response === void 0 ? void 0 : response.headers) === null || _a3 === void 0 ? void 0 : _a3[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) !== "final") { + throw new Error("Failed to upload file: Upload status is not finalized."); + } + return responseJson["file"]; } -}; -var GoogleGenerativeAI = class { - constructor(apiKey) { - this.apiKey = apiKey; + async uploadFileToFileSearchStoreFromPath(file, uploadUrl, apiClient) { + var _a3; + const response = await this.uploadFileFromPathInternal(file, uploadUrl, apiClient); + const responseJson = await (response === null || response === void 0 ? void 0 : response.json()); + if (((_a3 = response === null || response === void 0 ? void 0 : response.headers) === null || _a3 === void 0 ? void 0 : _a3[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) !== "final") { + throw new Error("Failed to upload file: Upload status is not finalized."); + } + const resp = uploadToFileSearchStoreOperationFromMldev(responseJson); + const typedResp = new UploadToFileSearchStoreOperation(); + Object.assign(typedResp, resp); + return typedResp; } - /** - * Gets a {@link GenerativeModel} instance for the provided model name. - */ - getGenerativeModel(modelParams, requestOptions) { - if (!modelParams.model) { - throw new GoogleGenerativeAIError(`Must provide a model name. Example: genai.getGenerativeModel({ model: 'my-model-name' })`); + async uploadFileFromPathInternal(file, uploadUrl, apiClient) { + var _a3, _b; + let fileSize = 0; + let offset = 0; + let response = new HttpResponse(new Response()); + let uploadCommand = "upload"; + let fileHandle; + const fileName = path$1.basename(file); + try { + fileHandle = await fs4.open(file, "r"); + if (!fileHandle) { + throw new Error(`Failed to open file`); + } + fileSize = (await fileHandle.stat()).size; + while (offset < fileSize) { + const chunkSize = Math.min(MAX_CHUNK_SIZE, fileSize - offset); + if (offset + chunkSize >= fileSize) { + uploadCommand += ", finalize"; + } + const buffer = new Uint8Array(chunkSize); + const { bytesRead } = await fileHandle.read(buffer, 0, chunkSize, offset); + if (bytesRead !== chunkSize) { + throw new Error(`Failed to read ${chunkSize} bytes from file at offset ${offset}. bytes actually read: ${bytesRead}`); + } + const chunk = new Blob([buffer]); + let retryCount = 0; + let currentDelayMs = INITIAL_RETRY_DELAY_MS; + while (retryCount < MAX_RETRY_COUNT) { + response = await apiClient.request({ + path: "", + body: chunk, + httpMethod: "POST", + httpOptions: { + apiVersion: "", + baseUrl: uploadUrl, + headers: { + "X-Goog-Upload-Command": uploadCommand, + "X-Goog-Upload-Offset": String(offset), + "Content-Length": String(bytesRead), + "X-Goog-Upload-File-Name": fileName + } + } + }); + if ((_a3 = response === null || response === void 0 ? void 0 : response.headers) === null || _a3 === void 0 ? void 0 : _a3[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) { + break; + } + retryCount++; + await sleep(currentDelayMs); + currentDelayMs = currentDelayMs * DELAY_MULTIPLIER; + } + offset += bytesRead; + if (((_b = response === null || response === void 0 ? void 0 : response.headers) === null || _b === void 0 ? void 0 : _b[X_GOOG_UPLOAD_STATUS_HEADER_FIELD]) !== "active") { + break; + } + if (fileSize <= offset) { + throw new Error("All content has been uploaded, but the upload status is not finalized."); + } + } + return response; + } finally { + if (fileHandle) { + await fileHandle.close(); + } } - return new GenerativeModel(this.apiKey, modelParams, requestOptions); } +}; +var NodeFiles = class extends Files { /** - * Creates a {@link GenerativeModel} instance from provided content cache. + * Registers Google Cloud Storage files for use with the API. + * This method is only available in Node.js environments. */ - getGenerativeModelFromCachedContent(cachedContent, modelParams, requestOptions) { - if (!cachedContent.name) { - throw new GoogleGenerativeAIRequestInputError("Cached content must contain a `name` field."); - } - if (!cachedContent.model) { - throw new GoogleGenerativeAIRequestInputError("Cached content must contain a `model` field."); - } - const disallowedDuplicates = ["model", "systemInstruction"]; - for (const key of disallowedDuplicates) { - if ((modelParams === null || modelParams === void 0 ? void 0 : modelParams[key]) && cachedContent[key] && (modelParams === null || modelParams === void 0 ? void 0 : modelParams[key]) !== cachedContent[key]) { - if (key === "model") { - const modelParamsComp = modelParams.model.startsWith("models/") ? modelParams.model.replace("models/", "") : modelParams.model; - const cachedContentComp = cachedContent.model.startsWith("models/") ? cachedContent.model.replace("models/", "") : cachedContent.model; - if (modelParamsComp === cachedContentComp) { - continue; - } + async registerFiles(params) { + if (typeof process === "undefined" || !process.versions || !process.versions.node) { + throw new Error("registerFiles is only supported in Node.js environments."); + } + const googleAuth = params.auth; + const authHeaders = await googleAuth.getRequestHeaders(); + const config = params.config || {}; + const httpOptions = config.httpOptions || {}; + const headers = Object.assign({}, httpOptions.headers || {}); + if (authHeaders) { + if (typeof authHeaders[Symbol.iterator] === "function") { + for (const [key, value] of authHeaders) { + headers[key] = value; + } + } else { + for (const [key, value] of Object.entries(authHeaders)) { + headers[key] = value; } - throw new GoogleGenerativeAIRequestInputError(`Different value for "${key}" specified in modelParams (${modelParams[key]}) and cachedContent (${cachedContent[key]})`); } } - const modelParamsFromCache = Object.assign(Object.assign({}, modelParams), { model: cachedContent.model, tools: cachedContent.tools, toolConfig: cachedContent.toolConfig, systemInstruction: cachedContent.systemInstruction, cachedContent }); - return new GenerativeModel(this.apiKey, modelParamsFromCache, requestOptions); + return this._registerFiles({ + uris: params.uris, + config: Object.assign(Object.assign({}, config), { httpOptions: Object.assign(Object.assign({}, httpOptions), { headers }) }) + }); + } +}; +var LANGUAGE_LABEL_PREFIX = "gl-node/"; +var GoogleGenAI = class { + get interactions() { + var _a3; + if (this._interactions !== void 0) { + return this._interactions; + } + console.warn("GoogleGenAI.interactions: Interactions usage is experimental and may change in future versions."); + const httpOpts = this.httpOptions; + if (httpOpts === null || httpOpts === void 0 ? void 0 : httpOpts.extraBody) { + console.warn("GoogleGenAI.interactions: Client level httpOptions.extraBody is not supported by the interactions client and will be ignored."); + } + const nextGenClient = new GeminiNextGenAPIClient({ + baseURL: this.apiClient.getBaseUrl(), + apiKey: this.apiKey, + apiVersion: this.apiClient.getApiVersion(), + clientAdapter: this.apiClient, + defaultHeaders: this.apiClient.getDefaultHeaders(), + timeout: httpOpts === null || httpOpts === void 0 ? void 0 : httpOpts.timeout, + maxRetries: (_a3 = httpOpts === null || httpOpts === void 0 ? void 0 : httpOpts.retryOptions) === null || _a3 === void 0 ? void 0 : _a3.attempts + }); + this._interactions = nextGenClient.interactions; + return this._interactions; + } + constructor(options) { + var _a3, _b, _c, _d, _e, _f; + if ((options.project || options.location) && options.apiKey) { + throw new Error("Project/location and API key are mutually exclusive in the client initializer."); + } + this.vertexai = (_b = (_a3 = options.vertexai) !== null && _a3 !== void 0 ? _a3 : getBooleanEnv("GOOGLE_GENAI_USE_VERTEXAI")) !== null && _b !== void 0 ? _b : false; + const envApiKey = getApiKeyFromEnv(); + const envProject = getEnv("GOOGLE_CLOUD_PROJECT"); + const envLocation = getEnv("GOOGLE_CLOUD_LOCATION"); + this.apiKey = (_c = options.apiKey) !== null && _c !== void 0 ? _c : envApiKey; + this.project = (_d = options.project) !== null && _d !== void 0 ? _d : envProject; + this.location = (_e = options.location) !== null && _e !== void 0 ? _e : envLocation; + if (!this.vertexai && !this.apiKey) { + throw new Error("API key must be set when using the Gemini API."); + } + if (options.vertexai) { + if ((_f = options.googleAuthOptions) === null || _f === void 0 ? void 0 : _f.credentials) { + console.debug("The user provided Google Cloud credentials will take precedence over the API key from the environment variable."); + this.apiKey = void 0; + } + if ((envProject || envLocation) && options.apiKey) { + console.debug("The user provided Vertex AI API key will take precedence over the project/location from the environment variables."); + this.project = void 0; + this.location = void 0; + } else if ((options.project || options.location) && envApiKey) { + console.debug("The user provided project/location will take precedence over the API key from the environment variables."); + this.apiKey = void 0; + } else if ((envProject || envLocation) && envApiKey) { + console.debug("The project/location from the environment variables will take precedence over the API key from the environment variables."); + this.apiKey = void 0; + } + if (!this.location && !this.apiKey) { + this.location = "global"; + } + } + const baseUrl2 = getBaseUrl(options.httpOptions, options.vertexai, getEnv("GOOGLE_VERTEX_BASE_URL"), getEnv("GOOGLE_GEMINI_BASE_URL")); + if (baseUrl2) { + if (options.httpOptions) { + options.httpOptions.baseUrl = baseUrl2; + } else { + options.httpOptions = { baseUrl: baseUrl2 }; + } + } + this.apiVersion = options.apiVersion; + this.httpOptions = options.httpOptions; + const auth6 = new NodeAuth({ + apiKey: this.apiKey, + googleAuthOptions: options.googleAuthOptions + }); + this.apiClient = new ApiClient({ + auth: auth6, + project: this.project, + location: this.location, + apiVersion: this.apiVersion, + apiKey: this.apiKey, + vertexai: this.vertexai, + httpOptions: this.httpOptions, + userAgentExtra: LANGUAGE_LABEL_PREFIX + process.version, + uploader: new NodeUploader(), + downloader: new NodeDownloader() + }); + this.models = new Models(this.apiClient); + this.live = new Live(this.apiClient, auth6, new NodeWebSocketFactory()); + this.batches = new Batches(this.apiClient); + this.chats = new Chats(this.models, this.apiClient); + this.caches = new Caches(this.apiClient); + this.files = new NodeFiles(this.apiClient); + this.operations = new Operations(this.apiClient); + this.authTokens = new Tokens(this.apiClient); + this.tunings = new Tunings(this.apiClient); + this.fileSearchStores = new FileSearchStores(this.apiClient); } }; +function getEnv(env2) { + var _a3, _b, _c; + return (_c = (_b = (_a3 = process === null || process === void 0 ? void 0 : process.env) === null || _a3 === void 0 ? void 0 : _a3[env2]) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : void 0; +} +function getBooleanEnv(env2) { + return stringToBoolean(getEnv(env2)); +} +function stringToBoolean(str) { + if (str === void 0) { + return false; + } + return str.toLowerCase() === "true"; +} +function getApiKeyFromEnv() { + const envGoogleApiKey = getEnv("GOOGLE_API_KEY"); + const envGeminiApiKey = getEnv("GEMINI_API_KEY"); + if (envGoogleApiKey && envGeminiApiKey) { + console.warn("Both GOOGLE_API_KEY and GEMINI_API_KEY are set. Using GOOGLE_API_KEY."); + } + return envGoogleApiKey || envGeminiApiKey || void 0; +} // -var VERSION7 = "6.0.0"; +var VERSION8 = "6.0.0"; // function requestLog(octokit) { @@ -26412,31 +65532,31 @@ function requestLog(octokit) { octokit.log.debug("request", options); const start = Date.now(); const requestOptions = octokit.request.endpoint.parse(options); - const path6 = requestOptions.url.replace(options.baseUrl, ""); + const path7 = requestOptions.url.replace(options.baseUrl, ""); return request2(options).then((response) => { const requestId = response.headers["x-github-request-id"]; octokit.log.info( - `${requestOptions.method} ${path6} - ${response.status} with id ${requestId} in ${Date.now() - start}ms` + `${requestOptions.method} ${path7} - ${response.status} with id ${requestId} in ${Date.now() - start}ms` ); return response; }).catch((error2) => { const requestId = error2.response?.headers["x-github-request-id"] || "UNKNOWN"; octokit.log.error( - `${requestOptions.method} ${path6} - ${error2.status} with id ${requestId} in ${Date.now() - start}ms` + `${requestOptions.method} ${path7} - ${error2.status} with id ${requestId} in ${Date.now() - start}ms` ); throw error2; }); }); } -requestLog.VERSION = VERSION7; +requestLog.VERSION = VERSION8; // -var VERSION8 = "22.0.1"; +var VERSION9 = "22.0.1"; // var Octokit2 = Octokit.plugin(requestLog, legacyRestEndpointMethods, paginateRest).defaults( { - userAgent: `octokit-rest.js/${VERSION8}` + userAgent: `octokit-rest.js/${VERSION9}` } ); @@ -26760,11 +65880,11 @@ async function hook2(state, request2, route, parameters) { endpoint2.headers.authorization = `token ${token}`; return request2(endpoint2); } -var VERSION9 = "0.0.0-development"; +var VERSION10 = "0.0.0-development"; function createOAuthDeviceAuth(options) { const requestWithDefaults = options.request || request.defaults({ headers: { - "user-agent": `octokit-auth-oauth-device.js/${VERSION9} ${getUserAgent()}` + "user-agent": `octokit-auth-oauth-device.js/${VERSION10} ${getUserAgent()}` } }); const { request: request2 = requestWithDefaults, ...otherOptions } = options; @@ -26794,7 +65914,7 @@ function createOAuthDeviceAuth(options) { } // -var VERSION10 = "0.0.0-development"; +var VERSION11 = "0.0.0-development"; async function getAuthentication(state) { if ("code" in state.strategyOptions) { const { authentication } = await exchangeWebFlowCode({ @@ -26955,7 +66075,7 @@ function createOAuthUserAuth({ clientType = "oauth-app", request: request2 = request.defaults({ headers: { - "user-agent": `octokit-auth-oauth-app.js/${VERSION10} ${getUserAgent()}` + "user-agent": `octokit-auth-oauth-app.js/${VERSION11} ${getUserAgent()}` } }), onTokenCreated, @@ -26974,7 +66094,7 @@ function createOAuthUserAuth({ hook: hook3.bind(null, state) }); } -createOAuthUserAuth.VERSION = VERSION10; +createOAuthUserAuth.VERSION = VERSION11; // async function auth4(state, authOptions) { @@ -27037,13 +66157,13 @@ async function hook4(state, request2, route, parameters) { throw error2; } } -var VERSION11 = "0.0.0-development"; +var VERSION12 = "0.0.0-development"; function createOAuthAppAuth(options) { const state = Object.assign( { request: request.defaults({ headers: { - "user-agent": `octokit-auth-oauth-app.js/${VERSION11} ${getUserAgent()}` + "user-agent": `octokit-auth-oauth-app.js/${VERSION12} ${getUserAgent()}` } }), clientType: "oauth-app" @@ -27065,8 +66185,8 @@ function isOpenSsh(privateKey) { function string2ArrayBuffer(str) { const buf = new ArrayBuffer(str.length); const bufView = new Uint8Array(buf); - for (let i = 0, strLen = str.length; i < strLen; i++) { - bufView[i] = str.charCodeAt(i); + for (let i2 = 0, strLen = str.length; i2 < strLen; i2++) { + bufView[i2] = str.charCodeAt(i2); } return buf; } @@ -27082,8 +66202,8 @@ function base64encode(buffer) { var binary = ""; var bytes = new Uint8Array(buffer); var len = bytes.byteLength; - for (var i = 0; i < len; i++) { - binary += String.fromCharCode(bytes[i]); + for (var i2 = 0; i2 < len; i2++) { + binary += String.fromCharCode(bytes[i2]); } return fromBase64(btoa(binary)); } @@ -27232,8 +66352,8 @@ var LruObject = class { } } deleteMany(keys) { - for (var i = 0; i < keys.length; i++) { - this.delete(keys[i]); + for (var i2 = 0; i2 < keys.length; i2++) { + this.delete(keys[i2]); } } evict() { @@ -27267,8 +66387,8 @@ var LruObject = class { } getMany(keys) { const result = []; - for (var i = 0; i < keys.length; i++) { - result.push(this.get(keys[i])); + for (var i2 = 0; i2 < keys.length; i2++) { + result.push(this.get(keys[i2])); } return result; } @@ -27545,7 +66665,7 @@ async function getInstallationAuthenticationImpl(state, options, request2) { ); const permissions = permissionsOptional || {}; const repositorySelection = repositorySelectionOptional || "all"; - const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0; + const repositoryIds = repositories ? repositories.map((r2) => r2.id) : void 0; const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0; const createdAt = (/* @__PURE__ */ new Date()).toISOString(); const cacheOptions = { @@ -27622,7 +66742,7 @@ function routeMatcher(paths) { const regexes = paths.map( (p) => p.split("/").map((c) => c.startsWith("{") ? "(?:.+?)" : c).join("/") ); - const regex = `^(?:${regexes.map((r) => `(?:${r})`).join("|")})$`; + const regex = `^(?:${regexes.map((r2) => `(?:${r2})`).join("|")})$`; return new RegExp(regex, "i"); } var REGEX = routeMatcher(PATHS); @@ -27716,7 +66836,7 @@ async function sendRequestWithRetries(state, request2, options, createdAt, retri return sendRequestWithRetries(state, request2, options, createdAt, retries); } } -var VERSION12 = "8.2.0"; +var VERSION13 = "8.2.0"; function createAppAuth(options) { if (!options.appId) { throw new Error("[@octokit/auth-app] appId option is required"); @@ -27739,7 +66859,7 @@ function createAppAuth(options) { } const request2 = options.request || request.defaults({ headers: { - "user-agent": `octokit-auth-app.js/${VERSION12} ${getUserAgent()}` + "user-agent": `octokit-auth-app.js/${VERSION13} ${getUserAgent()}` } }); const state = Object.assign( @@ -27798,7 +66918,7 @@ async function revokeActiveInstallationToken(githubOrToken) { } // github-actions/issue-labeling/lib/issue-labeling.js -var _a; +var _a2; var IssueLabeling = class { constructor(git, coreService) { this.git = git; @@ -27813,7 +66933,7 @@ var IssueLabeling = class { } this.coreService.info(`Issue #${issue2.number}`); await this.initialize(); - const model = this.getGenerativeModel(); + const ai = this.getGenerativeAI(); const prompt = ` You are a helper for an open source repository. Your task is to allow the user to categorize the issue with an "area: " label. @@ -27832,24 +66952,25 @@ If you are strictly unsure or if multiple labels match equally well, respond wit If no area label applies, respond with "none". `; try { - const result = await model.generateContent(prompt); - const response = result.response; - const text = response.text().trim(); + const response = await ai.models.generateContent({ + model: "gemini-2.0-flash", + contents: prompt + }); + const text = (response.text || "").trim(); this.coreService.info(`Gemini suggested label: ${text}`); if (this.repoAreaLabels.has(text)) { await this.addLabel(text); } else { this.coreService.info(`Generated label "${text}" is not in the list of valid area labels or is "ambiguous"/"none".`); } - } catch (e) { + } catch (e2) { this.coreService.error("Failed to generate content from Gemini."); - this.coreService.setFailed(e); + this.coreService.setFailed(e2); } } - getGenerativeModel() { + getGenerativeAI() { const apiKey = this.coreService.getInput("google-generative-ai-key", { required: true }); - const genAI = new GoogleGenerativeAI(apiKey); - return genAI.getGenerativeModel({ model: "gemini-2.0-flash" }); + return new GoogleGenAI({ apiKey }); } async addLabel(label) { const { number: issue_number, owner, repo } = context2.issue; @@ -27879,12 +67000,12 @@ If no area label applies, respond with "none". } } }; -_a = IssueLabeling; +_a2 = IssueLabeling; IssueLabeling.run = async () => { const token = await getAuthTokenFor(ANGULAR_ROBOT); const git = new Octokit2({ auth: token }); try { - const inst = new _a(git, core_exports); + const inst = new _a2(git, core_exports); await inst.run(); } finally { await revokeActiveInstallationToken(git); @@ -27893,9 +67014,9 @@ IssueLabeling.run = async () => { // github-actions/issue-labeling/lib/main.ts if (context2.repo.owner === "angular") { - IssueLabeling.run().catch((e) => { - console.error(e); - setFailed(e.message); + IssueLabeling.run().catch((e2) => { + console.error(e2); + setFailed(e2.message); }); } else { warning( @@ -27910,6 +67031,30 @@ undici/lib/web/fetch/body.js: undici/lib/web/websocket/frame.js: (*! ws. MIT License. Einar Otto Stangvik *) +web-streams-polyfill/dist/ponyfill.es2018.js: + (** + * @license + * web-streams-polyfill v3.3.3 + * Copyright 2024 Mattias Buelens, Diwank Singh Tomer and other contributors. + * This code is released under the MIT license. + * SPDX-License-Identifier: MIT + *) + +fetch-blob/index.js: + (*! fetch-blob. MIT License. Jimmy Wärting *) + +formdata-polyfill/esm.min.js: + (*! formdata-polyfill. MIT License. Jimmy Wärting *) + +node-domexception/index.js: + (*! node-domexception. MIT License. Jimmy Wärting *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +gtoken/build/cjs/src/index.cjs: + (*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE *) + @octokit/request-error/dist-src/index.js: (* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist *) @@ -27917,40 +67062,39 @@ undici/lib/web/websocket/frame.js: (* v8 ignore next -- @preserve *) (* v8 ignore else -- @preserve *) -@google/generative-ai/dist/index.mjs: +@google/genai/dist/node/index.mjs: (** * @license - * Copyright 2024 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 *) -@google/generative-ai/dist/index.mjs: +@google/genai/dist/node/index.mjs: (** * @license - * Copyright 2024 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + *) + +@google/genai/dist/node/index.mjs: + (** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + *) + +@google/genai/dist/node/index.mjs: + (** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + *) + +@google/genai/dist/node/index.mjs: + (** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 *) toad-cache/dist/toad-cache.mjs: @@ -27962,4 +67106,4 @@ toad-cache/dist/toad-cache.mjs: * @version 3.7.0 *) */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdHVubmVsQDAuMC42L25vZGVfbW9kdWxlcy90dW5uZWwvbGliL3R1bm5lbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy90dW5uZWxAMC4wLjYvbm9kZV9tb2R1bGVzL3R1bm5lbC9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvZXJyb3JzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9jb25zdGFudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3RyZWUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL2RpYWdub3N0aWNzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9yZXF1ZXN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9kaXNwYXRjaGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9kaXNwYXRjaGVyLWJhc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi91dGlsL3RpbWVycy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvY29ubmVjdC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC91dGlscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC9jb25zdGFudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwLXdhc20uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwX3NpbWQtd2FzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9jb25zdGFudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZ2xvYmFsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL2RhdGEtdXJsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3dlYmlkbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3N5bWJvbHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZmlsZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9mb3JtZGF0YS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9mb3JtZGF0YS1wYXJzZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvYm9keS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvY2xpZW50LWgxLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9jbGllbnQtaDIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9oYW5kbGVyL3JlZGlyZWN0LWhhbmRsZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9yZWRpcmVjdC1pbnRlcmNlcHRvci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9maXhlZC1xdWV1ZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcG9vbC1zdGF0cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcG9vbC1iYXNlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9wb29sLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9iYWxhbmNlZC1wb29sLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9hZ2VudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcHJveHktYWdlbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9kaXNwYXRjaGVyL2Vudi1odHRwLXByb3h5LWFnZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaGFuZGxlci9yZXRyeS1oYW5kbGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9yZXRyeS1hZ2VudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9yZWFkYWJsZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1yZXF1ZXN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2Fib3J0LXNpZ25hbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1waXBlbGluZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktdXBncmFkZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktY29ubmVjdC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1lcnJvcnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay11dGlscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1pbnRlcmNlcHRvci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1jbGllbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stcG9vbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svcGx1cmFsaXplci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svcGVuZGluZy1pbnRlcmNlcHRvcnMtZm9ybWF0dGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9tb2NrLWFnZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZ2xvYmFsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaGFuZGxlci9kZWNvcmF0b3ItaGFuZGxlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ludGVyY2VwdG9yL3JlZGlyZWN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaW50ZXJjZXB0b3IvcmV0cnkuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9kdW1wLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaW50ZXJjZXB0b3IvZG5zLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL2hlYWRlcnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvcmVzcG9uc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZGlzcGF0Y2hlci13ZWFrcmVmLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3JlcXVlc3QuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmlsZWFwaS9zeW1ib2xzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZpbGVhcGkvcHJvZ3Jlc3NldmVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9maWxlYXBpL2VuY29kaW5nLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZpbGVhcGkvdXRpbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9maWxlYXBpL2ZpbGVyZWFkZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvY2FjaGUvc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jYWNoZS91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2NhY2hlL2NhY2hlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2NhY2hlL2NhY2hlc3RvcmFnZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL2NvbnN0YW50cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvY29va2llcy9wYXJzZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL3dlYnNvY2tldC9ldmVudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L2NvbnN0YW50cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvdXRpbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvZnJhbWUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L2Nvbm5lY3Rpb24uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L3Blcm1lc3NhZ2UtZGVmbGF0ZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvcmVjZWl2ZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L3NlbmRlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvd2Vic29ja2V0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2V2ZW50c291cmNlL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2Utc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2V2ZW50c291cmNlL2V2ZW50c291cmNlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytodHRwLWNsaWVudEAzLjAuMi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaHR0cC1jbGllbnQvc3JjL3Byb3h5LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2h0dHAtY2xpZW50QDMuMC4yL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvaW5kZXgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZmFzdC1jb250ZW50LXR5cGUtcGFyc2VAMy4wLjAvbm9kZV9tb2R1bGVzL2Zhc3QtY29udGVudC10eXBlLXBhcnNlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2NvcmVAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2NvbW1hbmQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvdXRpbHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvZmlsZS1jb21tYW5kLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2NvcmVAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2NvcmUudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMraHR0cC1jbGllbnRANC4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2h0dHAtY2xpZW50L3NyYy9pbmRleC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytodHRwLWNsaWVudEA0LjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaHR0cC1jbGllbnQvc3JjL3Byb3h5LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2h0dHAtY2xpZW50QDQuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvYXV0aC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytjb3JlQDMuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9vaWRjLXV0aWxzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2NvcmVAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL3N1bW1hcnkudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvcGF0aC11dGlscy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytjb3JlQDMuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9wbGF0Zm9ybS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytleGVjQDMuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9leGVjL3NyYy9leGVjLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2V4ZWNAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2V4ZWMvc3JjL3Rvb2xydW5uZXIudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMraW9AMy4wLjIvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2lvL3NyYy9pby50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytpb0AzLjAuMi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaW8vc3JjL2lvLXV0aWwudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZ2l0aHViQDkuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9naXRodWIvc3JjL2NvbnRleHQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZ2l0aHViQDkuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9naXRodWIvc3JjL2ludGVybmFsL3V0aWxzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuaXZlcnNhbC11c2VyLWFnZW50QDcuMC4zL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtdXNlci1hZ2VudC9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9iZWZvcmUtYWZ0ZXItaG9va0A0LjAuMC9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL3JlZ2lzdGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2JlZm9yZS1hZnRlci1ob29rQDQuMC4wL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9saWIvYWRkLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2JlZm9yZS1hZnRlci1ob29rQDQuMC4wL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9saWIvcmVtb3ZlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2JlZm9yZS1hZnRlci1ob29rQDQuMC4wL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtlbmRwb2ludEAxMS4wLjMvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2VuZHBvaW50L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3JlcXVlc3RAMTAuMC44L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2pzb24td2l0aC1iaWdpbnRAMy41LjMvbm9kZV9tb2R1bGVzL2pzb24td2l0aC1iaWdpbnQvanNvbi13aXRoLWJpZ2ludC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtyZXF1ZXN0LWVycm9yQDcuMS4wL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0LWVycm9yL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K2dyYXBocWxAOS4wLjMvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2dyYXBocWwvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrYXV0aC10b2tlbkA2LjAuMC9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC10b2tlbi9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9jb3JlL2Rpc3Qtc3JjL3ZlcnNpb24uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrY29yZUA3LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvY29yZS9kaXN0LXNyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzQDE3LjAuMF9hdF9vY3Rva2l0X2NvcmVfNy4wLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3NyYy92ZXJzaW9uLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3BsdWdpbi1yZXN0LWVuZHBvaW50LW1ldGhvZHNAMTcuMC4wX2F0X29jdG9raXRfY29yZV83LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvc3JjL2dlbmVyYXRlZC9lbmRwb2ludHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc0AxNy4wLjBfYXRfb2N0b2tpdF9jb3JlXzcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvZW5kcG9pbnRzLXRvLW1ldGhvZHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc0AxNy4wLjBfYXRfb2N0b2tpdF9jb3JlXzcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvaW5kZXgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcGx1Z2luLXBhZ2luYXRlLXJlc3RAMTQuMC4wX2F0X29jdG9raXRfY29yZV83LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvcGx1Z2luLXBhZ2luYXRlLXJlc3QvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZ2l0aHViQDkuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9naXRodWIvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2dpdGh1YkA5LjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvZ2l0aHViL3NyYy9naXRodWIudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5lcmF0aXZlLWFpQDAuMjQuMS9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5lcmF0aXZlLWFpL2Rpc3QvaW5kZXgubWpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3BsdWdpbi1yZXF1ZXN0LWxvZ0A2LjAuMF9hdF9vY3Rva2l0X2NvcmVfNy4wLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3BsdWdpbi1yZXF1ZXN0LWxvZy9kaXN0LXNyYy92ZXJzaW9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3BsdWdpbi1yZXF1ZXN0LWxvZ0A2LjAuMF9hdF9vY3Rva2l0X2NvcmVfNy4wLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3BsdWdpbi1yZXF1ZXN0LWxvZy9kaXN0LXNyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtyZXN0QDIyLjAuMS9ub2RlX21vZHVsZXMvQG9jdG9raXQvcmVzdC9kaXN0LXNyYy92ZXJzaW9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3Jlc3RAMjIuMC4xL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXN0L2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K29hdXRoLW1ldGhvZHNANi4wLjIvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L29hdXRoLW1ldGhvZHMvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrYXV0aC1vYXV0aC1kZXZpY2VAOC4wLjMvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2F1dGgtb2F1dGgtZGV2aWNlL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K2F1dGgtb2F1dGgtdXNlckA2LjAuMi9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC11c2VyL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K2F1dGgtb2F1dGgtYXBwQDkuMC4zL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9hdXRoLW9hdXRoLWFwcC9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9saWIvdXRpbHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0QDIuMi4yL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3QvbGliL2NyeXB0by1ub2RlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dEAyLjIuMi9ub2RlX21vZHVsZXMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0L2xpYi9nZXQtdG9rZW4uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0QDIuMi4yL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3QvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdG9hZC1jYWNoZUAzLjcuMC9ub2RlX21vZHVsZXMvdG9hZC1jYWNoZS9kaXN0L3RvYWQtY2FjaGUubWpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K2F1dGgtYXBwQDguMi4wL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9hdXRoLWFwcC9kaXN0LW5vZGUvaW5kZXguanMiLCAiLi4vdXRpbHMudHMiLCAibGliL2lzc3VlLWxhYmVsaW5nLnRzIiwgImxpYi9tYWluLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFB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VCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxR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QUEsRUFDMUIsQ0FBQztBQUNILE9BQU87QUFDTCxFQUFLO0FBQUEsSUFDSDtBQUFBLEVBRUY7QUFDRjsiLAogICJuYW1lcyI6IFsiaHR0cCIsICJodHRwcyIsICJldmVudHMiLCAiaHR0cE92ZXJIdHRwIiwgImh0dHBzT3Zlckh0dHAiLCAiaHR0cE92ZXJIdHRwcyIsICJodHRwc092ZXJIdHRwcyIsICJvcHRpb25zIiwgImRlYnVnIiwgImVycm9yIiwgInNvY2tldCIsICJyZXF1aXJlX3R1bm5lbCIsICJCbG9iIiwgInBhdGgiLCAiaWR4IiwgInN0cmVhbSIsICJoYW5kbGVyIiwgIml0ZXJhdG9yIiwgInJlcXVlc3QiLCAiZXJyIiwgImVycm9yIiwgInBhdGgiLCAicGF0aCIsICJoYW5kbGVyIiwgImVycm9yIiwgInJlcXVlc3QiLCAiRXZlbnRFbWl0dGVyIiwgInJlc29sdmUiLCAiZXJyIiwgImhhbmRsZXIiLCAibm9vcCIsICJzZXNzaW9uIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgIkVSUk9SIiwgIlRZUEUiLCAiRkxBR1MiLCAiTEVOSUVOVF9GTEFHUyIsICJNRVRIT0RTIiwgIkZJTklTSCIsICJIRUFERVJfU1RBVEUiLCAiQnVmZmVyIiwgIkJ1ZmZlciIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJjb250ZXh0IiwgImtleXMiLCAicmVxdWlyZV91dGlsIiwgInBlcmZvcm1hbmNlIiwgImNyeXB0byIsICJyZXF1ZXN0IiwgInJlc29sdmUiLCAicmVxdWlyZV9zeW1ib2xzIiwgIkJsb2IiLCAiZW50cnkiLCAiQmxvYiIsICJjcnlwdG8iLCAibm9vcCIsICJjaHVuayIsICJpdGVyYXRvciIsICJ2YWx1ZSIsICJlcnJvciIsICJjb25zdGFudHMiLCAiZXhwb3J0cyIsICJyZXF1ZXN0IiwgImNsaWVudCIsICJwYXRoIiwgInJlc29sdmUiLCAiY2xpZW50IiwgInNvY2tldCIsICJyZXF1ZXN0IiwgInBhdGgiLCAiaGVhZGVycyIsICJlcnJvciIsICJyZXNvbHZlIiwgImhhbmRsZXIiLCAiZXJyb3IiLCAicGF0aCIsICJoYW5kbGVyIiwgImh0dHAiLCAibm9vcCIsICJjb25uZWN0IiwgImhhbmRsZXIiLCAicmVxdWVzdCIsICJyZXNvbHZlIiwgInNvY2tldCIsICJyZXNvbHZlIiwgImhhbmRsZXIiLCAib3JpZ2luIiwgImVycm9yIiwgInBvb2wiLCAiZGlzcGF0Y2hlciIsICJBZ2VudCIsICJoYW5kbGVyIiwgIlVSTCIsICJBZ2VudCIsICJub29wIiwgImhhbmRsZXIiLCAicGF0aCIsICJQcm94eUFnZW50IiwgIm9yaWdpbiIsICJwcm90b2NvbCIsICJvcHRzIiwgIlByb3h5QWdlbnQiLCAiQWdlbnQiLCAiaGFuZGxlciIsICJlcnIiLCAiaGFuZGxlciIsICJub29wIiwgInJlc29sdmUiLCAiY29uc3VtZSIsICJyZXF1aXJlX3V0aWwiLCAiY29udGV4dCIsICJyZXF1ZXN0IiwgInJlc29sdmUiLCAiY29udGV4dCIsICJjYWxsYmFjayIsICJyZXMiLCAib3BhcXVlIiwgInJlc29sdmUiLCAiaGFuZGxlciIsICJjb250ZXh0IiwgImJvZHkiLCAiY29udGV4dCIsICJyZXNvbHZlIiwgImNvbnRleHQiLCAicmVzb2x2ZSIsICJtb2NrRGlzcGF0Y2giLCAicGF0aCIsICJnZXRSZXNwb25zZURhdGEiLCAiaGFuZGxlciIsICJlcnJvciIsICJnZXRSZXNwb25zZURhdGEiLCAicmVwbHlQYXJhbWV0ZXJzIiwgIm5ld01vY2tEaXNwYXRjaCIsICJlcnJvciIsICJwYXRoIiwgIkFnZW50IiwgImhhbmRsZXIiLCAicmVxdWlyZV9nbG9iYWwiLCAiQWdlbnQiLCAiaGFuZGxlciIsICJvcHRzIiwgImhhbmRsZXIiLCAiaGFuZGxlciIsICJoYW5kbGVyIiwgImhhbmRsZXIiLCAiZXJyIiwgImV4aXN0cyIsICJkZWxpbWl0ZXIiLCAiaXRlcmF0b3IiLCAiSGVhZGVycyIsICJIZWFkZXJzIiwgInJlcXVpcmVfcmVxdWVzdCIsICJIZWFkZXJzIiwgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgInJlcXVlc3QiLCAiYmFzZVVybCIsICJtYWtlUmVxdWVzdCIsICJlcnJvciIsICJmZXRjaCIsICJyZXF1ZXN0IiwgIml0ZXJhdG9yIiwgInJlc29sdmUiLCAicmVxdWlyZV9zeW1ib2xzIiwgInJlcXVpcmVfdXRpbCIsICJTdHJpbmdEZWNvZGVyIiwgImJ0b2EiLCAiZXJyb3IiLCAidHlwZSIsICJyZXF1aXJlX3N5bWJvbHMiLCAicmVxdWlyZV91dGlsIiwgInJlcXVlc3QiLCAicmVxdWVzdCIsICJjYWNoZSIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJyZXF1aXJlX3V0aWwiLCAicGF0aCIsICJIZWFkZXJzIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgInJlcXVpcmVfc3ltYm9scyIsICJyZXF1aXJlX3V0aWwiLCAiY3J5cHRvIiwgImJ1ZmZlciIsICJtYWtlUmVxdWVzdCIsICJIZWFkZXJzIiwgImNyeXB0byIsICJyZXF1ZXN0IiwgImVycm9yIiwgImVycm9yIiwgImJvZHkiLCAibm9kZSIsICJyZXF1aXJlX3V0aWwiLCAicmVzb2x2ZSIsICJtYWtlUmVxdWVzdCIsICJlcnJvciIsICJBZ2VudCIsICJQcm94eUFnZW50IiwgImhhbmRsZXIiLCAicGF0aCIsICJmZXRjaCIsICJnZXRQcm94eVVybCIsICJjaGVja0J5cGFzcyIsICJEZWNvZGVkVVJMIiwgIl9hIiwgImlzTG9vcGJhY2tBZGRyZXNzIiwgImdldFByb3h5VXJsIiwgImh0dHAiLCAiaHR0cHMiLCAidHVubmVsIiwgIkh0dHBDb2RlcyIsICJIZWFkZXJzIiwgIk1lZGlhVHlwZXMiLCAiSHR0cFJlZGlyZWN0Q29kZXMiLCAiSHR0cFJlc3BvbnNlUmV0cnlDb2RlcyIsICJSZXRyeWFibGVIdHRwVmVyYnMiLCAiRXhwb25lbnRpYWxCYWNrb2ZmQ2VpbGluZyIsICJFeHBvbmVudGlhbEJhY2tvZmZUaW1lU2xpY2UiLCAiSHR0cENsaWVudEVycm9yIiwgIkh0dHBDbGllbnRSZXNwb25zZSIsICJyZXNvbHZlIiwgIl9fYXdhaXRlciIsICJIdHRwQ2xpZW50IiwgInVzZXJBZ2VudCIsICJpbmZvIiwgImhhbmRsZXIiLCAibG93ZXJjYXNlS2V5cyIsICJOdWxsT2JqZWN0IiwgInBhcnNlIiwgInNhZmVQYXJzZSIsICJvcyIsICJkZWxpbWl0ZXIiLCAib3MiLCAicGF0aCIsICJfYSIsICJIdHRwQ29kZXMiLCAiSGVhZGVycyIsICJNZWRpYVR5cGVzIiwgInJlc29sdmUiLCAidXNlckFnZW50IiwgIkhlYWRlcnMiLCAiaW5mbyIsICJoYW5kbGVyIiwgInJlc29sdmUiLCAiZXJyb3IiLCAiX2EiLCAiRU9MIiwgIl9hIiwgIkVPTCIsICJvcyIsICJvcyIsICJwYXRoIiwgInBhdGgiLCAiZnMiLCAicGF0aCIsICJzZXRUaW1lb3V0IiwgIklTX1dJTkRPV1MiLCAicmVzb2x2ZSIsICJfX2F3YWl0ZXIiLCAiZXJyb3IiLCAiX2EiLCAiX19hd2FpdGVyIiwgIl9hIiwgIm9zIiwgIkV4aXRDb2RlIiwgImV4aXN0c1N5bmMiLCAiRU9MIiwgInBhdGgiLCAiX2EiLCAiaW1wb3J0X3VuZGljaSIsICJfX2F3YWl0ZXIiLCAibmFtZSIsICJtZXRob2QiLCAiaG9vayIsICJlcnJvciIsICJob29rIiwgImxvd2VyY2FzZUtleXMiLCAiZGVmYXVsdHMiLCAiY29udGV4dCIsICJ2YWx1ZSIsICJjb250ZXh0IiwgInRleHQiLCAiVkVSU0lPTiIsICJpc1BsYWluT2JqZWN0IiwgImZldGNoIiwgImVycm9yIiwgIndpdGhEZWZhdWx0cyIsICJWRVJTSU9OIiwgImJhc2VVcmwiLCAid2l0aERlZmF1bHRzIiwgInNlcCIsICJyZXF1ZXN0IiwgImVuZHBvaW50IiwgIlZFUlNJT04iLCAibm9vcCIsICJWRVJTSU9OIiwgImRlZmF1bHRzIiwgImhvb2siLCAiYXV0aCIsICJWRVJTSU9OIiwgImVuZHBvaW50IiwgImRlZmF1bHRzIiwgIm9wdGlvbnMiLCAiVkVSU0lPTiIsICJWRVJTSU9OIiwgImVycm9yIiwgIlZFUlNJT04iLCAiY29udGV4dCIsICJTY2hlbWFUeXBlIiwgIkV4ZWN1dGFibGVDb2RlTGFuZ3VhZ2UiLCAiT3V0Y29tZSIsICJIYXJtQ2F0ZWdvcnkiLCAiSGFybUJsb2NrVGhyZXNob2xkIiwgIkhhcm1Qcm9iYWJpbGl0eSIsICJCbG9ja1JlYXNvbiIsICJGaW5pc2hSZWFzb24iLCAiVGFza1R5cGUiLCAiRnVuY3Rpb25DYWxsaW5nTW9kZSIsICJEeW5hbWljUmV0cmlldmFsTW9kZSIsICJUYXNrIiwgIl9hIiwgImJhc2VVcmwiLCAicmVxdWVzdCIsICJfYSIsICJWRVJTSU9OIiwgInJlcXVlc3QiLCAicGF0aCIsICJlcnJvciIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiT2N0b2tpdCIsICJWRVJTSU9OIiwgInJlcXVlc3QiLCAiZXJyb3IiLCAicmVxdWVzdCIsICJyZXF1ZXN0IiwgImF1dGgiLCAiYXV0aDIiLCAicmVzb2x2ZSIsICJyZXF1ZXN0IiwgImVycm9yIiwgImF1dGgiLCAiaG9vayIsICJlbmRwb2ludCIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiYXV0aCIsICJlcnJvciIsICJob29rIiwgInJlcXVlc3QiLCAiZW5kcG9pbnQiLCAiYXV0aCIsICJob29rIiwgImVuZHBvaW50IiwgImVycm9yIiwgIlZFUlNJT04iLCAiaXRlbSIsICJlcnJvciIsICJyZXF1ZXN0IiwgImF1dGgiLCAiaG9vayIsICJlbmRwb2ludCIsICJyZXNvbHZlIiwgIlZFUlNJT04iLCAiT2N0b2tpdCIsICJjb250ZXh0IiwgImlzc3VlIiwgImNvbnRleHQiLCAiT2N0b2tpdCIsICJjb250ZXh0Il0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdHVubmVsQDAuMC42L25vZGVfbW9kdWxlcy90dW5uZWwvbGliL3R1bm5lbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy90dW5uZWxAMC4wLjYvbm9kZV9tb2R1bGVzL3R1bm5lbC9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvZXJyb3JzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9jb25zdGFudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3RyZWUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9jb3JlL2RpYWdub3N0aWNzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvY29yZS9yZXF1ZXN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9kaXNwYXRjaGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9kaXNwYXRjaGVyLWJhc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi91dGlsL3RpbWVycy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2NvcmUvY29ubmVjdC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC91dGlscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2xsaHR0cC9jb25zdGFudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwLXdhc20uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9sbGh0dHAvbGxodHRwX3NpbWQtd2FzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9jb25zdGFudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZ2xvYmFsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL2RhdGEtdXJsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3dlYmlkbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3N5bWJvbHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZmlsZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9mb3JtZGF0YS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9mZXRjaC9mb3JtZGF0YS1wYXJzZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvYm9keS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvY2xpZW50LWgxLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9jbGllbnQtaDIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9oYW5kbGVyL3JlZGlyZWN0LWhhbmRsZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9yZWRpcmVjdC1pbnRlcmNlcHRvci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9maXhlZC1xdWV1ZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcG9vbC1zdGF0cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcG9vbC1iYXNlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9wb29sLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9iYWxhbmNlZC1wb29sLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9hZ2VudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2Rpc3BhdGNoZXIvcHJveHktYWdlbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9kaXNwYXRjaGVyL2Vudi1odHRwLXByb3h5LWFnZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaGFuZGxlci9yZXRyeS1oYW5kbGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZGlzcGF0Y2hlci9yZXRyeS1hZ2VudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9yZWFkYWJsZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1yZXF1ZXN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2Fib3J0LXNpZ25hbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvYXBpL2FwaS1waXBlbGluZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktdXBncmFkZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9hcGktY29ubmVjdC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2FwaS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1lcnJvcnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay11dGlscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1pbnRlcmNlcHRvci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svbW9jay1jbGllbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9tb2NrL21vY2stcG9vbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svcGx1cmFsaXplci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL21vY2svcGVuZGluZy1pbnRlcmNlcHRvcnMtZm9ybWF0dGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvbW9jay9tb2NrLWFnZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvZ2xvYmFsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaGFuZGxlci9kZWNvcmF0b3ItaGFuZGxlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL2ludGVyY2VwdG9yL3JlZGlyZWN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaW50ZXJjZXB0b3IvcmV0cnkuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi9pbnRlcmNlcHRvci9kdW1wLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvaW50ZXJjZXB0b3IvZG5zLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL2hlYWRlcnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvcmVzcG9uc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvZGlzcGF0Y2hlci13ZWFrcmVmLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZldGNoL3JlcXVlc3QuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmV0Y2gvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZmlsZWFwaS9zeW1ib2xzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZpbGVhcGkvcHJvZ3Jlc3NldmVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9maWxlYXBpL2VuY29kaW5nLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2ZpbGVhcGkvdXRpbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9maWxlYXBpL2ZpbGVyZWFkZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvY2FjaGUvc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jYWNoZS91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2NhY2hlL2NhY2hlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2NhY2hlL2NhY2hlc3RvcmFnZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL2NvbnN0YW50cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvY29va2llcy9wYXJzZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi9jb29raWVzL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL3dlYnNvY2tldC9ldmVudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L2NvbnN0YW50cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvc3ltYm9scy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvdXRpbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvZnJhbWUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L2Nvbm5lY3Rpb24uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L3Blcm1lc3NhZ2UtZGVmbGF0ZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvcmVjZWl2ZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvd2Vic29ja2V0L3NlbmRlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bmRpY2lANi4yMy4wL25vZGVfbW9kdWxlcy91bmRpY2kvbGliL3dlYi93ZWJzb2NrZXQvd2Vic29ja2V0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2V2ZW50c291cmNlL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5kaWNpQDYuMjMuMC9ub2RlX21vZHVsZXMvdW5kaWNpL2xpYi93ZWIvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2Utc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9saWIvd2ViL2V2ZW50c291cmNlL2V2ZW50c291cmNlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuZGljaUA2LjIzLjAvbm9kZV9tb2R1bGVzL3VuZGljaS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytodHRwLWNsaWVudEAzLjAuMi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaHR0cC1jbGllbnQvc3JjL3Byb3h5LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2h0dHAtY2xpZW50QDMuMC4yL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvaW5kZXgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZmFzdC1jb250ZW50LXR5cGUtcGFyc2VAMy4wLjAvbm9kZV9tb2R1bGVzL2Zhc3QtY29udGVudC10eXBlLXBhcnNlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3JldHJ5QDAuMTMuMS9ub2RlX21vZHVsZXMvcmV0cnkvbGliL3JldHJ5X29wZXJhdGlvbi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9yZXRyeUAwLjEzLjEvbm9kZV9tb2R1bGVzL3JldHJ5L2xpYi9yZXRyeS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9yZXRyeUAwLjEzLjEvbm9kZV9tb2R1bGVzL3JldHJ5L2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3AtcmV0cnlANC42LjIvbm9kZV9tb2R1bGVzL3AtcmV0cnkvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZXh0ZW5kQDMuMC4yL25vZGVfbW9kdWxlcy9leHRlbmQvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ2F4aW9zQDcuMS4zX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ2F4aW9zL3BhY2thZ2UuanNvbiIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nYXhpb3NANy4xLjNfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nYXhpb3Mvc3JjL3V0aWwuY3RzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dheGlvc0A3LjEuM19zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dheGlvcy9zcmMvY29tbW9uLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dheGlvc0A3LjEuM19zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dheGlvcy9zcmMvcmV0cnkudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ2F4aW9zQDcuMS4zX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ2F4aW9zL3NyYy9pbnRlcmNlcHRvci50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9tc0AyLjEuMy9ub2RlX21vZHVsZXMvbXMvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZGVidWdANC40LjNfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvY29tbW9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2RlYnVnQDQuNC4zX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvc3VwcG9ydHMtY29sb3JAMTAuMi4yL25vZGVfbW9kdWxlcy9zdXBwb3J0cy1jb2xvci9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9kZWJ1Z0A0LjQuM19zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9ub2RlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2RlYnVnQDQuNC4zX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2FnZW50LWJhc2VANy4xLjQvbm9kZV9tb2R1bGVzL2FnZW50LWJhc2Uvc3JjL2hlbHBlcnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYWdlbnQtYmFzZUA3LjEuNC9ub2RlX21vZHVsZXMvYWdlbnQtYmFzZS9zcmMvaW5kZXgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvaHR0cHMtcHJveHktYWdlbnRANy4wLjZfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9odHRwcy1wcm94eS1hZ2VudC9zcmMvcGFyc2UtcHJveHktcmVzcG9uc2UudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvaHR0cHMtcHJveHktYWdlbnRANy4wLjZfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9odHRwcy1wcm94eS1hZ2VudC9zcmMvaW5kZXgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZGF0YS11cmktdG8tYnVmZmVyQDQuMC4xL25vZGVfbW9kdWxlcy9kYXRhLXVyaS10by1idWZmZXIvc3JjL2luZGV4LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvdXRpbHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvaGVscGVycy9taXNjZWxsYW5lb3VzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL2hlbHBlcnMvd2ViaWRsLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3NpbXBsZS1xdWV1ZS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi9hYnN0cmFjdC1vcHMvaW50ZXJuYWwtbWV0aG9kcy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi9yZWFkYWJsZS1zdHJlYW0vZ2VuZXJpYy1yZWFkZXIudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9zdHViL251bWJlci1pc2Zpbml0ZS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL3N0dWIvbWF0aC10cnVuYy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi92YWxpZGF0b3JzL2Jhc2ljLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3ZhbGlkYXRvcnMvcmVhZGFibGUtc3RyZWFtLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3JlYWRhYmxlLXN0cmVhbS9kZWZhdWx0LXJlYWRlci50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL3RhcmdldC9lczIwMTgvc3R1Yi9hc3luYy1pdGVyYXRvci1wcm90b3R5cGUudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvcmVhZGFibGUtc3RyZWFtL2FzeW5jLWl0ZXJhdG9yLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvc3R1Yi9udW1iZXItaXNuYW4udHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvYWJzdHJhY3Qtb3BzL2VjbWFzY3JpcHQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvYWJzdHJhY3Qtb3BzL21pc2NlbGxhbmVvdXMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvYWJzdHJhY3Qtb3BzL3F1ZXVlLXdpdGgtc2l6ZXMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvaGVscGVycy9hcnJheS1idWZmZXItdmlldy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi9yZWFkYWJsZS1zdHJlYW0vYnl0ZS1zdHJlYW0tY29udHJvbGxlci50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi92YWxpZGF0b3JzL3JlYWRlci1vcHRpb25zLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3JlYWRhYmxlLXN0cmVhbS9ieW9iLXJlYWRlci50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi9hYnN0cmFjdC1vcHMvcXVldWluZy1zdHJhdGVneS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi92YWxpZGF0b3JzL3F1ZXVpbmctc3RyYXRlZ3kudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvdmFsaWRhdG9ycy91bmRlcmx5aW5nLXNpbmsudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvdmFsaWRhdG9ycy93cml0YWJsZS1zdHJlYW0udHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvYWJvcnQtc2lnbmFsLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3dyaXRhYmxlLXN0cmVhbS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2dsb2JhbHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9zdHViL2RvbS1leGNlcHRpb24udHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvcmVhZGFibGUtc3RyZWFtL3BpcGUudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvcmVhZGFibGUtc3RyZWFtL2RlZmF1bHQtY29udHJvbGxlci50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi9yZWFkYWJsZS1zdHJlYW0vdGVlLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3JlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS1zdHJlYW0tbGlrZS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi9yZWFkYWJsZS1zdHJlYW0vZnJvbS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi92YWxpZGF0b3JzL3VuZGVybHlpbmctc291cmNlLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3ZhbGlkYXRvcnMvaXRlcmF0b3Itb3B0aW9ucy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi92YWxpZGF0b3JzL3BpcGUtb3B0aW9ucy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi92YWxpZGF0b3JzL3JlYWRhYmxlLXdyaXRhYmxlLXBhaXIudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvcmVhZGFibGUtc3RyZWFtLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3ZhbGlkYXRvcnMvcXVldWluZy1zdHJhdGVneS1pbml0LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL2J5dGUtbGVuZ3RoLXF1ZXVpbmctc3RyYXRlZ3kudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd2ViLXN0cmVhbXMtcG9seWZpbGxAMy4zLjMvbm9kZV9tb2R1bGVzL3dlYi1zdHJlYW1zLXBvbHlmaWxsL3NyYy9saWIvY291bnQtcXVldWluZy1zdHJhdGVneS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93ZWItc3RyZWFtcy1wb2x5ZmlsbEAzLjMuMy9ub2RlX21vZHVsZXMvd2ViLXN0cmVhbXMtcG9seWZpbGwvc3JjL2xpYi92YWxpZGF0b3JzL3RyYW5zZm9ybWVyLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDMuMy4zL25vZGVfbW9kdWxlcy93ZWItc3RyZWFtcy1wb2x5ZmlsbC9zcmMvbGliL3RyYW5zZm9ybS1zdHJlYW0udHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZmV0Y2gtYmxvYkAzLjIuMC9ub2RlX21vZHVsZXMvZmV0Y2gtYmxvYi9zdHJlYW1zLmNqcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9mZXRjaC1ibG9iQDMuMi4wL25vZGVfbW9kdWxlcy9mZXRjaC1ibG9iL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2ZldGNoLWJsb2JAMy4yLjAvbm9kZV9tb2R1bGVzL2ZldGNoLWJsb2IvZmlsZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9mb3JtZGF0YS1wb2x5ZmlsbEA0LjAuMTAvbm9kZV9tb2R1bGVzL2Zvcm1kYXRhLXBvbHlmaWxsL2VzbS5taW4uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvZXJyb3JzL2Jhc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvZXJyb3JzL2ZldGNoLWVycm9yLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL25vZGUtZmV0Y2hAMy4zLjIvbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvc3JjL3V0aWxzL2lzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL25vZGUtZG9tZXhjZXB0aW9uQDEuMC4wL25vZGVfbW9kdWxlcy9ub2RlLWRvbWV4Y2VwdGlvbi9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9mZXRjaC1ibG9iQDMuMi4wL25vZGVfbW9kdWxlcy9mZXRjaC1ibG9iL2Zyb20uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvdXRpbHMvbXVsdGlwYXJ0LXBhcnNlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9ub2RlLWZldGNoQDMuMy4yL25vZGVfbW9kdWxlcy9ub2RlLWZldGNoL3NyYy9ib2R5LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL25vZGUtZmV0Y2hAMy4zLjIvbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvc3JjL2hlYWRlcnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvdXRpbHMvaXMtcmVkaXJlY3QuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvcmVzcG9uc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvdXRpbHMvZ2V0LXNlYXJjaC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9ub2RlLWZldGNoQDMuMy4yL25vZGVfbW9kdWxlcy9ub2RlLWZldGNoL3NyYy91dGlscy9yZWZlcnJlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9ub2RlLWZldGNoQDMuMy4yL25vZGVfbW9kdWxlcy9ub2RlLWZldGNoL3NyYy9yZXF1ZXN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL25vZGUtZmV0Y2hAMy4zLjIvbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvc3JjL2Vycm9ycy9hYm9ydC1lcnJvci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9ub2RlLWZldGNoQDMuMy4yL25vZGVfbW9kdWxlcy9ub2RlLWZldGNoL3NyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nYXhpb3NANy4xLjNfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nYXhpb3Mvc3JjL2dheGlvcy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nYXhpb3NANy4xLjNfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nYXhpb3Mvc3JjL2luZGV4LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2JpZ251bWJlci5qc0A5LjMuMS9ub2RlX21vZHVsZXMvYmlnbnVtYmVyLmpzL2JpZ251bWJlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9qc29uLWJpZ2ludEAxLjAuMC9ub2RlX21vZHVsZXMvanNvbi1iaWdpbnQvbGliL3N0cmluZ2lmeS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9qc29uLWJpZ2ludEAxLjAuMC9ub2RlX21vZHVsZXMvanNvbi1iaWdpbnQvbGliL3BhcnNlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2pzb24tYmlnaW50QDEuMC4wL25vZGVfbW9kdWxlcy9qc29uLWJpZ2ludC9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nY3AtbWV0YWRhdGFAOC4xLjJfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nY3AtbWV0YWRhdGEvc3JjL2djcC1yZXNpZGVuY3kudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWxvZ2dpbmctdXRpbHNAMS4xLjMvbm9kZV9tb2R1bGVzL2dvb2dsZS1sb2dnaW5nLXV0aWxzL3NyYy9jb2xvdXJzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1sb2dnaW5nLXV0aWxzQDEuMS4zL25vZGVfbW9kdWxlcy9nb29nbGUtbG9nZ2luZy11dGlscy9zcmMvbG9nZ2luZy11dGlscy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtbG9nZ2luZy11dGlsc0AxLjEuMy9ub2RlX21vZHVsZXMvZ29vZ2xlLWxvZ2dpbmctdXRpbHMvc3JjL2luZGV4LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2djcC1tZXRhZGF0YUA4LjEuMl9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2djcC1tZXRhZGF0YS9zcmMvaW5kZXgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYmFzZTY0LWpzQDEuNS4xL25vZGVfbW9kdWxlcy9iYXNlNjQtanMvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9jcnlwdG8vc2hhcmVkLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvY3J5cHRvL2Jyb3dzZXIvY3J5cHRvLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvY3J5cHRvL25vZGUvY3J5cHRvLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvY3J5cHRvL2NyeXB0by5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9zYWZlLWJ1ZmZlckA1LjIuMS9ub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZWNkc2Etc2lnLWZvcm1hdHRlckAxLjAuMTEvbm9kZV9tb2R1bGVzL2VjZHNhLXNpZy1mb3JtYXR0ZXIvc3JjL3BhcmFtLWJ5dGVzLWZvci1hbGcuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZWNkc2Etc2lnLWZvcm1hdHRlckAxLjAuMTEvbm9kZV9tb2R1bGVzL2VjZHNhLXNpZy1mb3JtYXR0ZXIvc3JjL2VjZHNhLXNpZy1mb3JtYXR0ZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9wYWNrYWdlLmpzb24iLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9zaGFyZWQuY2pzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9hdXRoY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9sb2dpbnRpY2tldC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvb2F1dGgyY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9jb21wdXRlY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9pZHRva2VuY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9lbnZEZXRlY3QuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvandzQDQuMC4xL25vZGVfbW9kdWxlcy9qd3MvbGliL2RhdGEtc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2J1ZmZlci1lcXVhbC1jb25zdGFudC10aW1lQDEuMC4xL25vZGVfbW9kdWxlcy9idWZmZXItZXF1YWwtY29uc3RhbnQtdGltZS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9qd2FAMi4wLjEvbm9kZV9tb2R1bGVzL2p3YS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9qd3NANC4wLjEvbm9kZV9tb2R1bGVzL2p3cy9saWIvdG9zdHJpbmcuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvandzQDQuMC4xL25vZGVfbW9kdWxlcy9qd3MvbGliL3NpZ24tc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2p3c0A0LjAuMS9ub2RlX21vZHVsZXMvandzL2xpYi92ZXJpZnktc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2p3c0A0LjAuMS9ub2RlX21vZHVsZXMvandzL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2d0b2tlbkA4LjAuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2d0b2tlbi9idWlsZC9janMvc3JjL2luZGV4LmNqcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvand0YWNjZXNzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9qd3RjbGllbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL3JlZnJlc2hjbGllbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL2ltcGVyc29uYXRlZC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvb2F1dGgyY29tbW9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9zdHNjcmVkZW50aWFscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvYmFzZWV4dGVybmFsY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9maWxlc3ViamVjdHRva2Vuc3VwcGxpZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL3VybHN1YmplY3R0b2tlbnN1cHBsaWVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9jZXJ0aWZpY2F0ZXN1YmplY3R0b2tlbnN1cHBsaWVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9pZGVudGl0eXBvb2xjbGllbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL2F3c3JlcXVlc3RzaWduZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL2RlZmF1bHRhd3NzZWN1cml0eWNyZWRlbnRpYWxzc3VwcGxpZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL2F3c2NsaWVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvZXhlY3V0YWJsZS1yZXNwb25zZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvcGx1Z2dhYmxlLWF1dGgtaGFuZGxlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvcGx1Z2dhYmxlLWF1dGgtY2xpZW50LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2dvb2dsZS1hdXRoLWxpYnJhcnlAMTAuNS4wX3N1cHBvcnRzLWNvbG9yXzEwLjIuMi9ub2RlX21vZHVsZXMvZ29vZ2xlLWF1dGgtbGlicmFyeS9idWlsZC9zcmMvYXV0aC9leHRlcm5hbGNsaWVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvZXh0ZXJuYWxBY2NvdW50QXV0aG9yaXplZFVzZXJDbGllbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL2dvb2dsZWF1dGguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9hdXRoL2lhbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvZG93bnNjb3BlZGNsaWVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9nb29nbGUtYXV0aC1saWJyYXJ5QDEwLjUuMF9zdXBwb3J0cy1jb2xvcl8xMC4yLjIvbm9kZV9tb2R1bGVzL2dvb2dsZS1hdXRoLWxpYnJhcnkvYnVpbGQvc3JjL2F1dGgvcGFzc3Rocm91Z2guanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvZ29vZ2xlLWF1dGgtbGlicmFyeUAxMC41LjBfc3VwcG9ydHMtY29sb3JfMTAuMi4yL25vZGVfbW9kdWxlcy9nb29nbGUtYXV0aC1saWJyYXJ5L2J1aWxkL3NyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93c0A4LjE5LjBfMTUyNzk0ODk3MC9ub2RlX21vZHVsZXMvd3MvbGliL2NvbnN0YW50cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9ub2RlLWd5cC1idWlsZEA0LjguNC9ub2RlX21vZHVsZXMvbm9kZS1neXAtYnVpbGQvbm9kZS1neXAtYnVpbGQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvbm9kZS1neXAtYnVpbGRANC44LjQvbm9kZV9tb2R1bGVzL25vZGUtZ3lwLWJ1aWxkL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2J1ZmZlcnV0aWxANC4xLjAvbm9kZV9tb2R1bGVzL2J1ZmZlcnV0aWwvZmFsbGJhY2suanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvYnVmZmVydXRpbEA0LjEuMC9ub2RlX21vZHVsZXMvYnVmZmVydXRpbC9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93c0A4LjE5LjBfMTUyNzk0ODk3MC9ub2RlX21vZHVsZXMvd3MvbGliL2J1ZmZlci11dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvbGltaXRlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93c0A4LjE5LjBfMTUyNzk0ODk3MC9ub2RlX21vZHVsZXMvd3MvbGliL3Blcm1lc3NhZ2UtZGVmbGF0ZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91dGYtOC12YWxpZGF0ZUA2LjAuNi9ub2RlX21vZHVsZXMvdXRmLTgtdmFsaWRhdGUvZmFsbGJhY2suanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdXRmLTgtdmFsaWRhdGVANi4wLjYvbm9kZV9tb2R1bGVzL3V0Zi04LXZhbGlkYXRlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvdmFsaWRhdGlvbi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy93c0A4LjE5LjBfMTUyNzk0ODk3MC9ub2RlX21vZHVsZXMvd3MvbGliL3JlY2VpdmVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvc2VuZGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvZXZlbnQtdGFyZ2V0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvZXh0ZW5zaW9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvd2Vic29ja2V0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvc3RyZWFtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3dzQDguMTkuMF8xNTI3OTQ4OTcwL25vZGVfbW9kdWxlcy93cy9saWIvc3VicHJvdG9jb2wuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd3NAOC4xOS4wXzE1Mjc5NDg5NzAvbm9kZV9tb2R1bGVzL3dzL2xpYi93ZWJzb2NrZXQtc2VydmVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2NvcmVAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2NvbW1hbmQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvdXRpbHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvZmlsZS1jb21tYW5kLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2NvcmVAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL2NvcmUudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMraHR0cC1jbGllbnRANC4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2h0dHAtY2xpZW50L3NyYy9pbmRleC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytodHRwLWNsaWVudEA0LjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaHR0cC1jbGllbnQvc3JjL3Byb3h5LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2h0dHAtY2xpZW50QDQuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9odHRwLWNsaWVudC9zcmMvYXV0aC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytjb3JlQDMuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9vaWRjLXV0aWxzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2NvcmVAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2NvcmUvc3JjL3N1bW1hcnkudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrY29yZUAzLjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvY29yZS9zcmMvcGF0aC11dGlscy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytjb3JlQDMuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9jb3JlL3NyYy9wbGF0Zm9ybS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytleGVjQDMuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9leGVjL3NyYy9leGVjLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2V4ZWNAMy4wLjAvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2V4ZWMvc3JjL3Rvb2xydW5uZXIudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMraW9AMy4wLjIvbm9kZV9tb2R1bGVzL0BhY3Rpb25zL2lvL3NyYy9pby50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AYWN0aW9ucytpb0AzLjAuMi9ub2RlX21vZHVsZXMvQGFjdGlvbnMvaW8vc3JjL2lvLXV0aWwudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZ2l0aHViQDkuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9naXRodWIvc3JjL2NvbnRleHQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZ2l0aHViQDkuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9naXRodWIvc3JjL2ludGVybmFsL3V0aWxzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuaXZlcnNhbC11c2VyLWFnZW50QDcuMC4zL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtdXNlci1hZ2VudC9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9iZWZvcmUtYWZ0ZXItaG9va0A0LjAuMC9ub2RlX21vZHVsZXMvYmVmb3JlLWFmdGVyLWhvb2svbGliL3JlZ2lzdGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2JlZm9yZS1hZnRlci1ob29rQDQuMC4wL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9saWIvYWRkLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2JlZm9yZS1hZnRlci1ob29rQDQuMC4wL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9saWIvcmVtb3ZlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2JlZm9yZS1hZnRlci1ob29rQDQuMC4wL25vZGVfbW9kdWxlcy9iZWZvcmUtYWZ0ZXItaG9vay9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtlbmRwb2ludEAxMS4wLjMvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2VuZHBvaW50L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3JlcXVlc3RAMTAuMC44L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0L2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL2pzb24td2l0aC1iaWdpbnRAMy41LjMvbm9kZV9tb2R1bGVzL2pzb24td2l0aC1iaWdpbnQvanNvbi13aXRoLWJpZ2ludC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtyZXF1ZXN0LWVycm9yQDcuMS4wL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9yZXF1ZXN0LWVycm9yL2Rpc3Qtc3JjL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K2dyYXBocWxAOS4wLjMvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2dyYXBocWwvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrYXV0aC10b2tlbkA2LjAuMC9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC10b2tlbi9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtjb3JlQDcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9jb3JlL2Rpc3Qtc3JjL3ZlcnNpb24uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrY29yZUA3LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvY29yZS9kaXN0LXNyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVzdC1lbmRwb2ludC1tZXRob2RzQDE3LjAuMF9hdF9vY3Rva2l0X2NvcmVfNy4wLjYvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3NyYy92ZXJzaW9uLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K3BsdWdpbi1yZXN0LWVuZHBvaW50LW1ldGhvZHNAMTcuMC4wX2F0X29jdG9raXRfY29yZV83LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvc3JjL2dlbmVyYXRlZC9lbmRwb2ludHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc0AxNy4wLjBfYXRfb2N0b2tpdF9jb3JlXzcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvZW5kcG9pbnRzLXRvLW1ldGhvZHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcGx1Z2luLXJlc3QtZW5kcG9pbnQtbWV0aG9kc0AxNy4wLjBfYXRfb2N0b2tpdF9jb3JlXzcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9zcmMvaW5kZXgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcGx1Z2luLXBhZ2luYXRlLXJlc3RAMTQuMC4wX2F0X29jdG9raXRfY29yZV83LjAuNi9ub2RlX21vZHVsZXMvQG9jdG9raXQvcGx1Z2luLXBhZ2luYXRlLXJlc3QvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGFjdGlvbnMrZ2l0aHViQDkuMC4wL25vZGVfbW9kdWxlcy9AYWN0aW9ucy9naXRodWIvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BhY3Rpb25zK2dpdGh1YkA5LjAuMC9ub2RlX21vZHVsZXMvQGFjdGlvbnMvZ2l0aHViL3NyYy9naXRodWIudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvd3NAOC4xOS4wXzE1Mjc5NDg5NzAvbm9kZV9tb2R1bGVzL3dzL3dyYXBwZXIubWpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL19iYXNlX3VybC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9fY29tbW9uLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL19iYXNlX3RyYW5zZm9ybWVycy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jb252ZXJ0ZXJzL19vcGVyYXRpb25zX2NvbnZlcnRlcnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvdHlwZXMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvX3RyYW5zZm9ybWVycy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jb252ZXJ0ZXJzL19iYXRjaGVzX2NvbnZlcnRlcnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvcGFnZXJzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2JhdGNoZXMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvY29udmVydGVycy9fY2FjaGVzX2NvbnZlcnRlcnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvY2FjaGVzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2NoYXRzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2Vycm9ycy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jb252ZXJ0ZXJzL19maWxlc19jb252ZXJ0ZXJzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ZpbGVzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2NvbnZlcnRlcnMvX2xpdmVfY29udmVydGVycy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jb252ZXJ0ZXJzL19tb2RlbHNfY29udmVydGVycy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jb252ZXJ0ZXJzL19maWxlc2VhcmNoc3RvcmVzX2NvbnZlcnRlcnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvX2FwaV9jbGllbnQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvbWNwL19tY3AudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvbXVzaWMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvbGl2ZS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9fYWZjLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL21vZGVscy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9vcGVyYXRpb25zLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2NvbnZlcnRlcnMvX3Rva2Vuc19jb252ZXJ0ZXJzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL3Rva2Vucy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jb252ZXJ0ZXJzL19kb2N1bWVudHNfY29udmVydGVycy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9kb2N1bWVudHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvZmlsZXNlYXJjaHN0b3Jlcy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9pbnRlcmFjdGlvbnMvaW50ZXJuYWwvdXRpbHMvdXVpZC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9pbnRlcmFjdGlvbnMvaW50ZXJuYWwvZXJyb3JzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9jb3JlL2Vycm9yLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9pbnRlcm5hbC91dGlscy92YWx1ZXMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2ludGVybmFsL3V0aWxzL3NsZWVwLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy92ZXJzaW9uLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9pbnRlcm5hbC9kZXRlY3QtcGxhdGZvcm0udHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2ludGVybmFsL3NoaW1zLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9pbnRlcm5hbC9yZXF1ZXN0LW9wdGlvbnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2ludGVybmFsL3VwbG9hZHMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2ludGVybmFsL3RvLWZpbGUudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2NvcmUvcmVzb3VyY2UudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2ludGVybmFsL3V0aWxzL3BhdGgudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL3Jlc291cmNlcy9pbnRlcmFjdGlvbnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2ludGVybmFsL3V0aWxzL2J5dGVzLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9pbnRlcm5hbC9kZWNvZGVycy9saW5lLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9pbnRlcm5hbC91dGlscy9sb2cudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvaW50ZXJhY3Rpb25zL2NvcmUvc3RyZWFtaW5nLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9pbnRlcm5hbC9wYXJzZS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9pbnRlcmFjdGlvbnMvY29yZS9hcGktcHJvbWlzZS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9pbnRlcmFjdGlvbnMvaW50ZXJuYWwvaGVhZGVycy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9pbnRlcmFjdGlvbnMvaW50ZXJuYWwvdXRpbHMvZW52LnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL2ludGVyYWN0aW9ucy9jbGllbnQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvbm9kZS9fbm9kZV9hdXRoLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0Bnb29nbGUrZ2VuYWlAMS40My4wXzExOTMyNDM4NzYvbm9kZV9tb2R1bGVzL0Bnb29nbGUvZ2VuYWkvc3JjL25vZGUvX25vZGVfZG93bmxvYWRlci50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9ub2RlL19ub2RlX3dlYnNvY2tldC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jb252ZXJ0ZXJzL190dW5pbmdzX2NvbnZlcnRlcnMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvdHVuaW5ncy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9jcm9zcy9fY3Jvc3NfdXBsb2FkZXIudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvbm9kZS9fbm9kZV91cGxvYWRlci50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9AZ29vZ2xlK2dlbmFpQDEuNDMuMF8xMTkzMjQzODc2L25vZGVfbW9kdWxlcy9AZ29vZ2xlL2dlbmFpL3NyYy9ub2RlL25vZGVfZmlsZXMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQGdvb2dsZStnZW5haUAxLjQzLjBfMTE5MzI0Mzg3Ni9ub2RlX21vZHVsZXMvQGdvb2dsZS9nZW5haS9zcmMvbm9kZS9ub2RlX2NsaWVudC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVxdWVzdC1sb2dANi4wLjBfYXRfb2N0b2tpdF9jb3JlXzcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcmVxdWVzdC1sb2cvZGlzdC1zcmMvdmVyc2lvbi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtwbHVnaW4tcmVxdWVzdC1sb2dANi4wLjBfYXRfb2N0b2tpdF9jb3JlXzcuMC42L25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9wbHVnaW4tcmVxdWVzdC1sb2cvZGlzdC1zcmMvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvQG9jdG9raXQrcmVzdEAyMi4wLjEvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L3Jlc3QvZGlzdC1zcmMvdmVyc2lvbi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtyZXN0QDIyLjAuMS9ub2RlX21vZHVsZXMvQG9jdG9raXQvcmVzdC9kaXN0LXNyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCtvYXV0aC1tZXRob2RzQDYuMC4yL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9vYXV0aC1tZXRob2RzL2Rpc3QtYnVuZGxlL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL0BvY3Rva2l0K2F1dGgtb2F1dGgtZGV2aWNlQDguMC4zL25vZGVfbW9kdWxlcy9Ab2N0b2tpdC9hdXRoLW9hdXRoLWRldmljZS9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCthdXRoLW9hdXRoLXVzZXJANi4wLjIvbm9kZV9tb2R1bGVzL0BvY3Rva2l0L2F1dGgtb2F1dGgtdXNlci9kaXN0LWJ1bmRsZS9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCthdXRoLW9hdXRoLWFwcEA5LjAuMy9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1vYXV0aC1hcHAvZGlzdC1idW5kbGUvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzLy5hc3BlY3RfcnVsZXNfanMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0QDIuMi4yL25vZGVfbW9kdWxlcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3QvbGliL3V0aWxzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dEAyLjIuMi9ub2RlX21vZHVsZXMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0L2xpYi9jcnlwdG8tbm9kZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy91bml2ZXJzYWwtZ2l0aHViLWFwcC1qd3RAMi4yLjIvbm9kZV9tb2R1bGVzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dC9saWIvZ2V0LXRva2VuLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3VuaXZlcnNhbC1naXRodWItYXBwLWp3dEAyLjIuMi9ub2RlX21vZHVsZXMvdW5pdmVyc2FsLWdpdGh1Yi1hcHAtand0L2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy8uYXNwZWN0X3J1bGVzX2pzL3RvYWQtY2FjaGVAMy43LjAvbm9kZV9tb2R1bGVzL3RvYWQtY2FjaGUvZGlzdC90b2FkLWNhY2hlLm1qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvLmFzcGVjdF9ydWxlc19qcy9Ab2N0b2tpdCthdXRoLWFwcEA4LjIuMC9ub2RlX21vZHVsZXMvQG9jdG9raXQvYXV0aC1hcHAvZGlzdC1ub2RlL2luZGV4LmpzIiwgIi4uL3V0aWxzLnRzIiwgImxpYi9pc3N1ZS1sYWJlbGluZy50cyIsICJsaWIvbWFpbi50cyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFFQSxRQUFJLE1BQU0sVUFBUSxLQUFLO0FBQ3ZCLFFBQUksTUFBTSxVQUFRLEtBQUs7QUFDdkIsUUFBSUEsUUFBTyxVQUFRLE1BQU07QUFDekIsUUFBSUMsU0FBUSxVQUFRLE9BQU87QUFDM0IsUUFBSUMsVUFBUyxVQUFRLFFBQVE7QUFDN0IsUUFBSSxTQUFTLFVBQVEsUUFBUTtBQUM3QixRQUFJLE9BQU8sVUFBUSxNQUFNO0FBR3pCLFlBQVEsZUFBZUM7QUFDdkIsWUFBUSxnQkFBZ0JDO0FBQ3hCLFlBQVEsZ0JBQWdCQztBQUN4QixZQUFRLGlCQUFpQkM7QUFHekIsYUFBU0gsY0FBYSxTQUFTO0FBQzdCLFVBQUks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QUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUE7QUFBQTs7O0FDclpBO0FBQUE7QUFBQTtBQUdBLFFBQU0sNkJBQTZCLENBQUM7QUFHcEMsUUFBTSx1QkFBdUI7QUFBQSxNQUMzQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FB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RSxRQUFJO0FBQ0osS0FBQyxTQUFVQyxVQUFTO0FBQ2hCLE1BQUFBLFNBQVFBLFNBQVEsUUFBUSxJQUFJLENBQUMsSUFBSTtBQUNqQyxNQUFBQSxTQUFRQSxTQUFRLEtBQUssSUFBSSxDQUFDLElBQUk7QUFDOUIsTUFBQUEsU0FBUUEsU0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJO0FBQy9CLE1BQUFBLFNBQVFBLFNBQVEsTUFBTSxJQUFJLENBQUMsSUFBSTtBQUMvQixNQUFBQSxTQUFRQSxTQUFRLEtBQUssSUFBSSxDQUFDLElBQUk7QUFFOUIsTUFBQUEsU0FBUUEsU0FBUSxTQUFTLElBQUksQ0FBQyxJQUFJO0FBQ2xDLE1BQUFBLFNBQVFBLFNBQVEsU0FBUyxJQUFJLENBQUMsSUFBSTtBQUNsQyxNQUFBQSxTQUFRQSxTQUFRLE9BQU8sSUFBSSxDQUFDLElBQUk7QUFFaEMsTUFBQUEsU0FBUUEsU0FBUSxNQUFNLElBQUksQ0FBQyxJQUFJO0FBQy9CLE1BQUFBLFNBQVFBLFNBQVEsTUFBTSxJQUFJLENBQUMsSUFBSTtBQUMvQixNQUFBQSxTQUFRQSxTQUFRLE9BQU8sSUFBSSxFQUFFLElBQUk7QUFDakMsTUFBQUEsU0FBUUEsU0FBUSxNQUFNLElBQUksRUFBRSxJQUFJO0FBQ2hDLE1BQUFBLFNBQVFBLFNBQVEsVUFBVSxJQUFJLEVBQUUsSUFBSTtBQUNwQyxNQUFBQSxTQUFRQSxTQUFRLFdBQVcsSUFBSSxFQUFFLElBQUk7QUFDckMsTUFBQUEsU0FBUUEsU0FBUSxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2xDLE1BQUFBLFNBQVFBLFNBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNsQyxNQUFBQSxTQUFRQSxTQUFRLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDaEMsTUFBQUEsU0FBUUEsU0FBUSxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2xDLE1BQUFBLFNBQVFBLFNBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNsQyxNQUFBQSxTQUFRQSxTQUFRLEtBQUssSUFBSSxFQUFFLElBQUk7QUFFL0IsTUFBQUEs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S0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQUEsUUFDTCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNULEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxpQkFBTztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILGlCQUFPO0FBQUEsUUFDVCxLQUFLO0FBQ0gsaUJBQU87QUFBQSxRQUNUO0FBQVMsaUJBQU87QUFBQSxNQUNsQjtBQUFBLElBQ0Y7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QUMsUUFBUTtBQUNaLG1CQUFTO0FBQ1Qsa0JBQVEsS0FBSyx1SUFBdUk7QUFBQSxRQUNySjtBQUFBLE1BQ0Q7QUFBQSxJQUNELEdBQUc7QUFNSCxZQUFRLFNBQVM7QUFBQSxNQUNoQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Q7QUFXQSxhQUFTLFlBQVk7QUFJcEIsVUFBSSxPQUFPLFdBQVcs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LGFBQWE7QUFBQSxNQUNqQjtBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBO0FBQUEsTUFDN0M7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQTtBQUFBLE1BQzdDO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUE7QUFBQSxNQUM3QztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBO0FBQUEsTUFDN0M7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQTtBQUFBLE1BQzdDO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFBQSxNQUFHO0FBQUEsTUFBRztBQUFBLE1BQUc7QUFB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QUFDQyxPQUFhO0FBQ3RDLFlBQVEsTUFBTUEsRUFBQztBQUNmLElBQUssVUFBVUEsR0FBRSxPQUFPO0FBQUEsRUFDMUIsQ0FBQztBQUNILE9BQU87QUFDTCxFQUFLO0FBQUEsSUFDSDtBQUFBLEVBRUY7QUFDRjsiLAogICJuYW1lcyI6IFsiaHR0cCIsICJodHRwcyIsICJldmVudHMiLCAiaHR0cE92ZXJIdHRwIiwgImh0dHBzT3Zlckh0dHAiLCAiaHR0cE92ZXJIdHRwcyIsICJodHRwc092ZXJIdHRwcyIsICJzZWxmIiwgIm9wdGlvbnMiLCAiaSIsICJkZWJ1ZyIsICJlcnJvciIsICJzb2NrZXQiLCAicmVxdWlyZV90dW5uZWwiLCAiQWJvcnRFcnJvciIsICJpIiwgImkiLCAiQmxvYiIsICJpc0Jsb2JMaWtlIiwgInBhdGgiLCAiaWR4IiwgImlzQXN5bmNJdGVyYWJsZSIsICJzdHJlYW0iLCAibSIsICJpIiwgIngiLCAiaGFuZGxlciIsICJSZWFkYWJsZVN0cmVhbUZyb20iLCAiaXRlcmF0b3IiLCAicmVxdWVzdCIsICJlcnIiLCAiZXJyb3IiLCAicGF0aCIsICJpc0Jsb2JMaWtlIiwgIlJlcXVlc3QiLCAicGF0aCIsICJoYW5kbGVyIiwgImkiLCAiZXJyb3IiLCAicmVxdWVzdCIsICJFdmVudEVtaXR0ZXIiLCAiaSIsICJyZXNvbHZlIiwgImVyciIsICJoYW5kbGVyIiwgIm5vb3AiLCAic2Vzc2lvbiIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJFUlJPUiIsICJUWVBFIiwgIkZMQUdTIiwgIkxFTklFTlRfRkxBR1MiLCAiTUVUSE9EUyIsICJGSU5JU0giLCAiaSIsICJIRUFERVJfU1RBVEUiLCAiQnVmZmVyIiwgIkJ1ZmZlciIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJyZWRpcmVjdFN0YXR1cyIsICJpIiwgInR5cGVzIiwgImNvbnRleHQiLCAieCIsICJyIiwgImtleXMiLCAiaSIsICJyZXF1aXJlX3V0aWwiLCAiemxpYiIsICJwZXJmb3JtYW5jZSIsICJpc0Jsb2JMaWtlIiwgIlJlYWRhYmxlU3RyZWFtRnJvbSIsICJjcnlwdG8iLCAiaSIsICJyZXF1ZXN0IiwgImRldGVybWluZVJlcXVlc3RzUmVmZXJyZXIiLCAiaXNPcmlnaW5Qb3RlbnRpYWxseVRydXN0d29ydGh5IiwgIkEiLCAicmVzb2x2ZSIsICJlIiwgInJlcXVpcmVfc3ltYm9scyIsICJCbG9iIiwgIkZpbGUiLCAidCIsICJpc0ZpbGVMaWtlIiwgImlzQmxvYkxpa2UiLCAiaXNGaWxlTGlrZSIsICJGaWxlIiwgIkZvcm1EYXRhIiwgImVudHJ5IiwgImlzRmlsZUxpa2UiLCAiRmlsZSIsICJpIiwgIlJlYWRhYmxlU3RyZWFtRnJvbSIsICJpc0Jsb2JMaWtlIiwgIkZvcm1EYXRhIiwgIkJsb2IiLCAiY3J5cHRvIiwgIm5vb3AiLCAiY2h1bmsiLCAiaXRlcmF0b3IiLCAiY29uc3VtZUJvZHkiLCAidmFsdWUiLCAiZXJyb3IiLCAiZSIsICJjb25zdGFudHMiLCAiZSIsICJleHBvcnRzIiwgInJlcXVlc3QiLCAiY2xpZW50IiwgImkiLCAicGF0aCIsICJmaW5pc2hlZCIsICJyZXNvbHZlIiwgInBpcGVsaW5lIiwgImh0dHAyIiwgImNsaWVudCIsICJzb2NrZXQiLCAiaSIsICJyZXF1ZXN0IiwgInBhdGgiLCAiaGVhZGVycyIsICJlcnJvciIsICJyZXNvbHZlIiwgImhhbmRsZXIiLCAiZXJyb3IiLCAicGF0aCIsICJpIiwgImhhbmRsZXIiLCAiaHR0cCIsICJSZXF1ZXN0IiwgIm5vb3AiLCAiY29ubmVjdCIsICJoYW5kbGVyIiwgInJlcXVlc3QiLCAicmVzb2x2ZSIsICJpIiwgInNvY2tldCIsICJyZXNvbHZlIiwgImhhbmRsZXIiLCAib3JpZ2luIiwgImVycm9yIiwgInQiLCAicG9vbCIsICJpIiwgImRpc3BhdGNoZXIiLCAiQWdlbnQiLCAiaGFuZGxlciIsICJVUkwiLCAiQWdlbnQiLCAibm9vcCIsICJoYW5kbGVyIiwgInBhdGgiLCAiUHJveHlBZ2VudCIsICJvcmlnaW4iLCAicHJvdG9jb2wiLCAib3B0cyIsICJidWlsZEhlYWRlcnMiLCAiaSIsICJQcm94eUFnZW50IiwgIkFnZW50IiwgImhhbmRsZXIiLCAiaSIsICJlcnIiLCAiaGFuZGxlciIsICJSZWFkYWJsZSIsICJBYm9ydEVycm9yIiwgIlJlYWRhYmxlU3RyZWFtRnJvbSIsICJub29wIiwgInJlc29sdmUiLCAic2VsZiIsICJjb25zdW1lIiwgImkiLCAicmVxdWlyZV91dGlsIiwgIlJlYWRhYmxlIiwgImNvbnRleHQiLCAicmVxdWVzdCIsICJyZXNvbHZlIiwgInNlbGYiLCAiZmluaXNoZWQiLCAiUGFzc1Rocm91Z2giLCAiY29udGV4dCIsICJjYWxsYmFjayIsICJyZXMiLCAib3BhcXVlIiwgInJlc29sdmUiLCAiUmVhZGFibGUiLCAiUGFzc1Rocm91Z2giLCAiaGFuZGxlciIsICJjb250ZXh0IiwgImJvZHkiLCAicGlwZWxpbmUiLCAiY29udGV4dCIsICJyZXNvbHZlIiwgImNvbnRleHQiLCAicmVzb2x2ZSIsICJpIiwgImNsb25lIiwgIm1vY2tEaXNwYXRjaCIsICJwYXRoIiwgImdldFJlc3BvbnNlRGF0YSIsICJoYW5kbGVyIiwgImVycm9yIiwgImdldFJlc3BvbnNlRGF0YSIsICJyZXBseVBhcmFtZXRlcnMiLCAibmV3TW9ja0Rpc3BhdGNoIiwgImVycm9yIiwgInByb21pc2lmeSIsICJwcm9taXNpZnkiLCAicGF0aCIsICJBZ2VudCIsICJoYW5kbGVyIiwgInJlcXVpcmVfZ2xvYmFsIiwgIkFnZW50IiwgImhhbmRsZXIiLCAib3B0cyIsICJoYW5kbGVyIiwgImhhbmRsZXIiLCAiaGFuZGxlciIsICJpc0lQIiwgImhhbmRsZXIiLCAiZXJyIiwgImkiLCAiZXhpc3RzIiwgImRlbGltaXRlciIsICJpdGVyYXRvciIsICJ4IiwgIkhlYWRlcnMiLCAiSGVhZGVycyIsICJpc0Jsb2JMaWtlIiwgIkZvcm1EYXRhIiwgInR5cGVzIiwgIlJlc3BvbnNlIiwgInJlcXVpcmVfcmVxdWVzdCIsICJIZWFkZXJzIiwgIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwgIlJlcXVlc3QiLCAicmVxdWVzdCIsICJiYXNlVXJsIiwgIndpbmRvdyIsICJSZXF1ZXN0IiwgInpsaWIiLCAiZGV0ZXJtaW5lUmVxdWVzdHNSZWZlcnJlciIsICJpc0Jsb2JMaWtlIiwgIlJlYWRhYmxlIiwgInBpcGVsaW5lIiwgImZpbmlzaGVkIiwgImVycm9yIiwgImZldGNoIiwgImUiLCAicmVxdWVzdCIsICJpdGVyYXRvciIsICJyZXNvbHZlIiwgImkiLCAicmVxdWlyZV9zeW1ib2xzIiwgInJlcXVpcmVfdXRpbCIsICJ0eXBlcyIsICJTdHJpbmdEZWNvZGVyIiwgImJ0b2EiLCAiZXJyb3IiLCAiZSIsICJ0eXBlIiwgInJlcXVpcmVfc3ltYm9scyIsICJyZXF1aXJlX3V0aWwiLCAiQSIsICJSZXNwb25zZSIsICJSZXF1ZXN0IiwgInJlcXVlc3QiLCAiciIsICJlIiwgInJlcXVlc3QiLCAiY2FjaGUiLCAicmVxdWlyZV9jb25zdGFudHMiLCAicmVxdWlyZV91dGlsIiwgImkiLCAicGF0aCIsICJIZWFkZXJzIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgInJlcXVpcmVfc3ltYm9scyIsICJyZXF1aXJlX3V0aWwiLCAiZSIsICJpIiwgImNyeXB0byIsICJidWZmZXIiLCAiaSIsICJIZWFkZXJzIiwgImNyeXB0byIsICJyZXF1ZXN0IiwgImVycm9yIiwgImxvd2VyIiwgImVycm9yIiwgImJvZHkiLCAibm9kZSIsICJpc0Jsb2JMaWtlIiwgInR5cGVzIiwgIldlYlNvY2tldCIsICJlIiwgInJlcXVpcmVfdXRpbCIsICJpIiwgInJlc29sdmUiLCAiTEYiLCAiQ1IiLCAiQ09MT04iLCAiU1BBQ0UiLCAicGlwZWxpbmUiLCAiZSIsICJlcnJvciIsICJBZ2VudCIsICJQcm94eUFnZW50IiwgImhhbmRsZXIiLCAicGF0aCIsICJmZXRjaCIsICJnZXRQcm94eVVybCIsICJjaGVja0J5cGFzcyIsICJEZWNvZGVkVVJMIiwgIl9hIiwgImlzTG9vcGJhY2tBZGRyZXNzIiwgIngiLCAiZ2V0UHJveHlVcmwiLCAiaHR0cCIsICJodHRwcyIsICJ0dW5uZWwiLCAiSHR0cENvZGVzIiwgIkhlYWRlcnMiLCAiTWVkaWFUeXBlcyIsICJIdHRwUmVkaXJlY3RDb2RlcyIsICJIdHRwUmVzcG9uc2VSZXRyeUNvZGVzIiwgIlJldHJ5YWJsZUh0dHBWZXJicyIsICJFeHBvbmVudGlhbEJhY2tvZmZDZWlsaW5nIiwgIkV4cG9uZW50aWFsQmFja29mZlRpbWVTbGljZSIsICJIdHRwQ2xpZW50RXJyb3IiLCAiSHR0cENsaWVudFJlc3BvbnNlIiwgInJlc29sdmUiLCAiX19hd2FpdGVyIiwgIkh0dHBDbGllbnQiLCAidXNlckFnZW50IiwgImluZm8iLCAiaGFuZGxlciIsICJsb3dlcmNhc2VLZXlzIiwgIk51bGxPYmplY3QiLCAicGFyc2UiLCAic2FmZVBhcnNlIiwgInNlbGYiLCAiaSIsICJlcnJvciIsICJyZXF1aXJlX3JldHJ5IiwgImkiLCAib3JpZ2luYWwiLCAicmVxdWlyZV9yZXRyeSIsICJBYm9ydEVycm9yIiwgImVycm9yIiwgInBSZXRyeSIsICJyZXNvbHZlIiwgImhhc093biIsICJpc0FycmF5IiwgImlzUGxhaW5PYmplY3QiLCAic2V0UHJvcGVydHkiLCAiZ2V0UHJvcGVydHkiLCAiY2xvbmUiLCAiaSIsICJlIiwgInJlc29sdmUiLCAicyIsICJtIiwgImgiLCAicGFyc2UiLCAicmVxdWlyZV9jb21tb24iLCAiZW52IiwgImkiLCAiZGVidWciLCAic2VsZiIsICJkZWxpbWl0ZXIiLCAibSIsICJlcnJvciIsICJyIiwgInByb2Nlc3MiLCAib3MiLCAidHR5IiwgInN1cHBvcnRzQ29sb3IiLCAiZXJyb3IiLCAidXNlQ29sb3JzIiwgImRlYnVnIiwgImkiLCAiaHR0cCIsICJodHRwcyIsICJyZXEiLCAicmVzb2x2ZSIsICJodHRwIiwgIkFnZW50IiwgImRlYnVnIiwgInJlc29sdmUiLCAiZGVidWciLCAib21pdCIsICJhdXRoIiwgInMiLCAiaSIsICJub29wIiwgIngiLCAiX2EiLCAicmVzb2x2ZSIsICJGIiwgImkiLCAiY29udGV4dCIsICJlIiwgInF1ZXVlTWljcm90YXNrIiwgIml0ZXJhdG9yIiwgInIiLCAicmVxdWVzdCIsICJpc0Fib3J0U2lnbmFsIiwgInN0cmVhbUJyYW5kQ2hlY2tFeGNlcHRpb24iLCAiZXJyb3IiLCAiZGVmYXVsdENvbnRyb2xsZXJCcmFuZENoZWNrRXhjZXB0aW9uIiwgIkRPTUV4Y2VwdGlvbiIsICJSZWFkYWJsZVN0cmVhbUZyb20iLCAiUmVhZGFibGVTdHJlYW0iLCAiVHJhbnNmb3JtU3RyZWFtIiwgIlBPT0xfU0laRSIsICJwcm9jZXNzIiwgImVycm9yIiwgIkJsb2IiLCAiY2xvbmUiLCAiQmxvYiIsICJzaXplIiwgIkZpbGUiLCAiRiIsICJGb3JtRGF0YSIsICJmIiwgImUiLCAibSIsICJmcyIsICJiYXNlbmFtZSIsICJzdGF0IiwgInBhdGgiLCAiRE9NRXhjZXB0aW9uIiwgIm0iLCAiQm9keSIsICJGb3JtRGF0YSIsICJmIiwgIm5vb3AiLCAiaSIsICJjbGVhciIsICJCdWZmZXIiLCAiZXJyb3IiLCAiRm9ybURhdGEiLCAidG9Gb3JtRGF0YSIsICJyZXF1ZXN0IiwgInR5cGVzIiwgImh0dHAiLCAiSGVhZGVycyIsICJlcnJvciIsICJJTlRFUk5BTFMiLCAiUmVzcG9uc2UiLCAiSGVhZGVycyIsICJyZXF1ZXN0IiwgImRlcHJlY2F0ZSIsICJJTlRFUk5BTFMiLCAiSGVhZGVycyIsICJyZXF1ZXN0IiwgIkZvcm1EYXRhIiwgIkhlYWRlcnMiLCAiUmVzcG9uc2UiLCAiZmV0Y2giLCAiaHR0cCIsICJodHRwcyIsICJTdHJlYW0iLCAiUGFzc1Rocm91Z2giLCAiQnVmZmVyIiwgInJlc29sdmUiLCAicmVxdWVzdCIsICJyZXNwb25zZSIsICJlcnJvciIsICJzIiwgInJhbmRvbVVVSUQiLCAiZGVmYXVsdHMiLCAiX2EiLCAiZSIsICJyZXF1ZXN0IiwgImNsb25lIiwgIkJpZ051bWJlciIsICJlIiwgImkiLCAieCIsICJzIiwgInIiLCAicm0iLCAibSIsICJjb21wYXJlIiwgInQiLCAiZm9ybWF0IiwgIkpTT04iLCAiZiIsICJpIiwgImsiLCAidiIsICJyZXF1aXJlX3BhcnNlIiwgImVycm9yIiwgIm0iLCAibnVtYmVyIiwgInN0cmluZyIsICJpIiwgImFycmF5IiwgIm9iamVjdCIsICJ2YWx1ZSIsICJrIiwgInByb2Nlc3MiLCAiTG9nU2V2ZXJpdHkiLCAibmFtZXNwYWNlIiwgImUiLCAiX2EiLCAiZ2V0QmFzZVVybCIsICJiYXNlVXJsIiwgIm1ldGFkYXRhQWNjZXNzb3IiLCAiciIsICJlIiwgImkiLCAibGVuIiwgImxlbjIiLCAicmVxdWlyZV9jcnlwdG8iLCAiY3J5cHRvIiwgInJlcXVpcmVfY3J5cHRvIiwgIm0iLCAiZXhwb3J0cyIsICJCdWZmZXIiLCAiQnVmZmVyIiwgInJlcXVpcmVfdXRpbCIsICJmcyIsICJvcyIsICJwYXRoIiwgImdldCIsICJlIiwgInJlcXVpcmVfcGFja2FnZSIsICJyZXF1aXJlX3NoYXJlZCIsICJ1c2VyQWdlbnQiLCAiZSIsICJlcnJvciIsICJlbnYiLCAiQ29kZUNoYWxsZW5nZU1ldGhvZCIsICJDZXJ0aWZpY2F0ZUZvcm1hdCIsICJDbGllbnRBdXRoZW50aWNhdGlvbiIsICJjcnlwdG8iLCAiciIsICJlIiwgInJlZnJlc2hUb2tlbiIsICJoZWFkZXJzIiwgImluZm8iLCAiZSIsICJnZXRFbnYiLCAiR0NQRW52IiwgImVudiIsICJlIiwgIkJ1ZmZlciIsICJTdHJlYW0iLCAiQnVmZmVyIiwgImkiLCAiQnVmZmVyIiwgImNyeXB0byIsICJmcm9tQmFzZTY0IiwgImkiLCAidGltaW5nU2FmZUVxdWFsIiwgIkJ1ZmZlciIsICJCdWZmZXIiLCAiU3RyZWFtIiwgImUiLCAiQnVmZmVyIiwgIlN0cmVhbSIsICJlIiwgInJlcXVpcmVfc3JjIiwgImZzIiwgInBhdGgiLCAiZSIsICJ0IiwgInIiLCAiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCAiaSIsICJmIiwgIm8iLCAicyIsICJfd3JhcE5hdGl2ZVN1cGVyIiwgIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCAibiIsICJjIiwgInUiLCAiZCIsICJwIiwgIl9yZWdlbmVyYXRvciIsICJFcnJvcldpdGhDb2RlIiwgIkdvb2dsZVRva2VuIiwgInJlcXVlc3QiLCAiZ2V0IiwgImdldFRva2VuIiwgInJlc29sdmUiLCAicyIsICJyIiwgInJlc29sdmUiLCAicyIsICJlIiwgInJlZnJlc2hUb2tlbiIsICJyZXNvbHZlIiwgInMiLCAiZXJyb3IiLCAiZXJyb3IiLCAiciIsICJlIiwgImZzIiwgImxzdGF0IiwgImNvbnRleHQiLCAiZnMiLCAiaHR0cHMiLCAiZSIsICJjcnlwdG8iLCAiY29udGV4dCIsICJmcyIsICJyZXNvbHZlIiwgImNoaWxkIiwgImVycm9yIiwgImkiLCAicmVmcmVzaFRva2VuIiwgImVycm9yIiwgInIiLCAiZSIsICJmcyIsICJvcyIsICJwYXRoIiwgIkdvb2dsZUF1dGgiLCAiciIsICJlIiwgInJlc29sdmUiLCAiZW5kcG9pbnQiLCAiY3J5cHRvIiwgInIiLCAiZSIsICJyZXF1aXJlX3NyYyIsICJhdXRoIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgImZzIiwgInBhdGgiLCAib3MiLCAiYXJjaCIsICJwbGF0Zm9ybSIsICJkZWJ1ZyIsICJyZXNvbHZlIiwgImRpciIsICJpIiwgInJ1bnRpbWUiLCAiYWJpIiwgInJlcXVpcmVfbm9kZV9neXBfYnVpbGQiLCAibWFzayIsICJpIiwgImUiLCAiaSIsICJlIiwgInJlcXVpcmVfcGVybWVzc2FnZV9kZWZsYXRlIiwgInpsaWIiLCAiZW5kcG9pbnQiLCAiZGF0YSIsICJyZXF1aXJlX2ZhbGxiYWNrIiwgImkiLCAiZSIsICJpIiwgImlzQmxvYiIsICJlIiwgInJlcXVpcmVfcmVjZWl2ZXIiLCAiUmVjZWl2ZXIiLCAiZXJyb3IiLCAicmVxdWlyZV9zZW5kZXIiLCAiaXNCbG9iIiwgIlNlbmRlciIsICJtZXJnZSIsICJpIiwgIkV2ZW50IiwgIkV2ZW50VGFyZ2V0IiwgImhhbmRsZXIiLCAiZXJyb3IiLCAicGFyc2UiLCAiaSIsICJyZXF1aXJlX3dlYnNvY2tldCIsICJFdmVudEVtaXR0ZXIiLCAiaHR0cHMiLCAiaHR0cCIsICJSZWFkYWJsZSIsICJVUkwiLCAiUmVjZWl2ZXIiLCAiU2VuZGVyIiwgImlzQmxvYiIsICJwYXJzZSIsICJXZWJTb2NrZXQiLCAiaGFuZGxlciIsICJlIiwgInJlcXVlc3QiLCAia2V5IiwgIldlYlNvY2tldCIsICJjcmVhdGVXZWJTb2NrZXRTdHJlYW0iLCAiZXJyb3IiLCAiZXJyIiwgIm9wZW4iLCAicGFyc2UiLCAiaSIsICJwcm90b2NvbCIsICJFdmVudEVtaXR0ZXIiLCAiaHR0cCIsICJXZWJTb2NrZXQiLCAiV2ViU29ja2V0U2VydmVyIiwgImluZm8iLCAiaCIsICJzIiwgImNyeXB0byIsICJvcyIsICJkZWxpbWl0ZXIiLCAib3MiLCAicGF0aCIsICJfYSIsICJ4IiwgIkh0dHBDb2RlcyIsICJIZWFkZXJzIiwgIk1lZGlhVHlwZXMiLCAicmVzb2x2ZSIsICJ1c2VyQWdlbnQiLCAiSGVhZGVycyIsICJpbmZvIiwgImhhbmRsZXIiLCAicmVzb2x2ZSIsICJlcnJvciIsICJfYSIsICJFT0wiLCAiX2EiLCAiRU9MIiwgIm9zIiwgIm9zIiwgInBhdGgiLCAicGF0aCIsICJmcyIsICJwYXRoIiwgInNldFRpbWVvdXQiLCAiSVNfV0lORE9XUyIsICJzIiwgIngiLCAiaSIsICJyZXNvbHZlIiwgIl9fYXdhaXRlciIsICJlcnJvciIsICJfYSIsICJfX2F3YWl0ZXIiLCAiX2EiLCAib3MiLCAiRXhpdENvZGUiLCAieCIsICJleGlzdHNTeW5jIiwgIkVPTCIsICJwYXRoIiwgIl9hIiwgImltcG9ydF91bmRpY2kiLCAiX19hd2FpdGVyIiwgIm5hbWUiLCAibWV0aG9kIiwgImhvb2siLCAiZXJyb3IiLCAiaG9vayIsICJsb3dlcmNhc2VLZXlzIiwgImRlZmF1bHRzIiwgImNvbnRleHQiLCAidmFsdWUiLCAiY29udGV4dCIsICJ0ZXh0IiwgIlZFUlNJT04iLCAiaXNQbGFpbk9iamVjdCIsICJmZXRjaCIsICJlcnJvciIsICJ3aXRoRGVmYXVsdHMiLCAiVkVSU0lPTiIsICJlIiwgImJhc2VVcmwiLCAid2l0aERlZmF1bHRzIiwgInNlcCIsICJyZXF1ZXN0IiwgImVuZHBvaW50IiwgIlZFUlNJT04iLCAibm9vcCIsICJWRVJTSU9OIiwgImRlZmF1bHRzIiwgImhvb2siLCAiYXV0aCIsICJpIiwgIlZFUlNJT04iLCAiZW5kcG9pbnQiLCAiZGVmYXVsdHMiLCAib3B0aW9ucyIsICJWRVJTSU9OIiwgIlZFUlNJT04iLCAiZXJyb3IiLCAiVkVSU0lPTiIsICJjb250ZXh0IiwgIl9hIiwgImkiLCAiZXJyb3IiLCAidEJ5dGVzIiwgImNvbW1vbi5nZXRWYWx1ZUJ5UGF0aCIsICJjb21tb24uc2V0VmFsdWVCeVBhdGgiLCAiZ2VuZXJhdGVWaWRlb3NPcGVyYXRpb25Gcm9tTWxkZXYiLCAiZ2VuZXJhdGVWaWRlb3NSZXNwb25zZUZyb21NbGRldiIsICJnZW5lcmF0ZVZpZGVvc09wZXJhdGlvbkZyb21WZXJ0ZXgiLCAiZ2VuZXJhdGVWaWRlb3NSZXNwb25zZUZyb21WZXJ0ZXgiLCAiZ2VuZXJhdGVkVmlkZW9Gcm9tTWxkZXYiLCAiZ2VuZXJhdGVkVmlkZW9Gcm9tVmVydGV4IiwgInZpZGVvRnJvbU1sZGV2IiwgInZpZGVvRnJvbVZlcnRleCIsICJpbXBvcnRGaWxlT3BlcmF0aW9uRnJvbU1sZGV2IiwgImltcG9ydEZpbGVSZXNwb25zZUZyb21NbGRldiIsICJ0LnRCeXRlcyIsICJPdXRjb21lIiwgIkxhbmd1YWdlIiwgIkZ1bmN0aW9uUmVzcG9uc2VTY2hlZHVsaW5nIiwgIlR5cGUiLCAiUGhpc2hCbG9ja1RocmVzaG9sZCIsICJBcGlTcGVjIiwgIkF1dGhUeXBlIiwgIkh0dHBFbGVtZW50TG9jYXRpb24iLCAiQmVoYXZpb3IiLCAiRHluYW1pY1JldHJpZXZhbENvbmZpZ01vZGUiLCAiRnVuY3Rpb25DYWxsaW5nQ29uZmlnTW9kZSIsICJUaGlua2luZ0xldmVsIiwgIkhhcm1DYXRlZ29yeSIsICJIYXJtQmxvY2tNZXRob2QiLCAiSGFybUJsb2NrVGhyZXNob2xkIiwgIkZpbmlzaFJlYXNvbiIsICJIYXJtUHJvYmFiaWxpdHkiLCAiSGFybVNldmVyaXR5IiwgIlVybFJldHJpZXZhbFN0YXR1cyIsICJCbG9ja2VkUmVhc29uIiwgIlRyYWZmaWNUeXBlIiwgIk1vZGFsaXR5IiwgIk1lZGlhUmVzb2x1dGlvbiIsICJUdW5pbmdNb2RlIiwgIkFkYXB0ZXJTaXplIiwgIkpvYlN0YXRlIiwgIlR1bmluZ1Rhc2siLCAiUGFydE1lZGlhUmVzb2x1dGlvbkxldmVsIiwgIlJlc291cmNlU2NvcGUiLCAiRmVhdHVyZVNlbGVjdGlvblByZWZlcmVuY2UiLCAiRW52aXJvbm1lbnQiLCAiUHJvbWluZW50UGVvcGxlIiwgIkVtYmVkZGluZ0FwaVR5cGUiLCAiU2FmZXR5RmlsdGVyTGV2ZWwiLCAiUGVyc29uR2VuZXJhdGlvbiIsICJJbWFnZVByb21wdExhbmd1YWdlIiwgIk1hc2tSZWZlcmVuY2VNb2RlIiwgIkNvbnRyb2xSZWZlcmVuY2VUeXBlIiwgIlN1YmplY3RSZWZlcmVuY2VUeXBlIiwgIkVkaXRNb2RlIiwgIlNlZ21lbnRNb2RlIiwgIlZpZGVvR2VuZXJhdGlvblJlZmVyZW5jZVR5cGUiLCAiVmlkZW9HZW5lcmF0aW9uTWFza01vZGUiLCAiVmlkZW9Db21wcmVzc2lvblF1YWxpdHkiLCAiVHVuaW5nTWV0aG9kIiwgIkRvY3VtZW50U3RhdGUiLCAiRmlsZVN0YXRlIiwgIkZpbGVTb3VyY2UiLCAiVHVybkNvbXBsZXRlUmVhc29uIiwgIk1lZGlhTW9kYWxpdHkiLCAiVmFkU2lnbmFsVHlwZSIsICJWb2ljZUFjdGl2aXR5VHlwZSIsICJTdGFydFNlbnNpdGl2aXR5IiwgIkVuZFNlbnNpdGl2aXR5IiwgIkFjdGl2aXR5SGFuZGxpbmciLCAiVHVybkNvdmVyYWdlIiwgIlNjYWxlIiwgIk11c2ljR2VuZXJhdGlvbk1vZGUiLCAiTGl2ZU11c2ljUGxheWJhY2tDb250cm9sIiwgIl9hIiwgImV4ZWN1dGFibGVDb2RlIiwgImNvZGVFeGVjdXRpb25SZXN1bHQiLCAiZ2VuZXJhdGVWaWRlb3NPcGVyYXRpb25Gcm9tVmVydGV4IiwgImdlbmVyYXRlVmlkZW9zT3BlcmF0aW9uRnJvbU1sZGV2IiwgImltcG9ydEZpbGVPcGVyYXRpb25Gcm9tTWxkZXYiLCAiX2EiLCAidHlwZXMuVHlwZSIsICJpIiwgInJlc291cmNlTmFtZSIsICJiYXNlVHJhbnNmb3JtZXJzLnRCeXRlcyIsICJfYSIsICJjb21tb24uZ2V0VmFsdWVCeVBhdGgiLCAiY29tbW9uLnNldFZhbHVlQnlQYXRoIiwgInQudEpvYlN0YXRlIiwgInQudFJlY3ZCYXRjaEpvYkRlc3RpbmF0aW9uIiwgImJsb2JUb01sZGV2IiwgInQudEJhdGNoSm9iTmFtZSIsICJjYW5kaWRhdGVGcm9tTWxkZXYiLCAiY2l0YXRpb25NZXRhZGF0YUZyb21NbGRldiIsICJjb250ZW50VG9NbGRldiIsICJwYXJ0VG9NbGRldiIsICJ0LnRCYXRjaEpvYkRlc3RpbmF0aW9uIiwgInQudE1vZGVsIiwgInQudEJhdGNoSm9iU291cmNlIiwgInQudENvbnRlbnRzRm9yRW1iZWQiLCAiZW1iZWRDb250ZW50Q29uZmlnVG9NbGRldiIsICJjb21tb24ubW92ZVZhbHVlQnlQYXRoIiwgImZpbGVEYXRhVG9NbGRldiIsICJmdW5jdGlvbkNhbGxUb01sZGV2IiwgImZ1bmN0aW9uQ2FsbGluZ0NvbmZpZ1RvTWxkZXYiLCAiZ2VuZXJhdGVDb250ZW50Q29uZmlnVG9NbGRldiIsICJ0LnRDb250ZW50IiwgInQudFNjaGVtYSIsICJzYWZldHlTZXR0aW5nVG9NbGRldiIsICJ0LnRUb29scyIsICJ0b29sVG9NbGRldiIsICJ0LnRUb29sIiwgInRvb2xDb25maWdUb01sZGV2IiwgInQudENhY2hlZENvbnRlbnROYW1lIiwgInQudFNwZWVjaENvbmZpZyIsICJpbWFnZUNvbmZpZ1RvTWxkZXYiLCAiZ2VuZXJhdGVDb250ZW50UmVzcG9uc2VGcm9tTWxkZXYiLCAiZ29vZ2xlTWFwc1RvTWxkZXYiLCAiZ29vZ2xlU2VhcmNoVG9NbGRldiIsICJ0LnRDb250ZW50cyIsICJQYWdlZEl0ZW0iLCAicmVxdWVzdCIsICJ4IiwgImNvbnZlcnRlcnMuY3JlYXRlQmF0Y2hKb2JQYXJhbWV0ZXJzVG9NbGRldiIsICJwYXRoIiwgImNvbW1vbi5mb3JtYXRNYXAiLCAiY29udmVydGVycy5jcmVhdGVCYXRjaEpvYlBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLmJhdGNoSm9iRnJvbVZlcnRleCIsICJjb252ZXJ0ZXJzLmJhdGNoSm9iRnJvbU1sZGV2IiwgImNvbnZlcnRlcnMuY3JlYXRlRW1iZWRkaW5nc0JhdGNoSm9iUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5nZXRCYXRjaEpvYlBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLmdldEJhdGNoSm9iUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5jYW5jZWxCYXRjaEpvYlBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLmNhbmNlbEJhdGNoSm9iUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5saXN0QmF0Y2hKb2JzUGFyYW1ldGVyc1RvVmVydGV4IiwgInJlc3BvbnNlIiwgImNvbnZlcnRlcnMubGlzdEJhdGNoSm9ic1Jlc3BvbnNlRnJvbVZlcnRleCIsICJ0eXBlcy5MaXN0QmF0Y2hKb2JzUmVzcG9uc2UiLCAiY29udmVydGVycy5saXN0QmF0Y2hKb2JzUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5saXN0QmF0Y2hKb2JzUmVzcG9uc2VGcm9tTWxkZXYiLCAiY29udmVydGVycy5kZWxldGVCYXRjaEpvYlBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLmRlbGV0ZVJlc291cmNlSm9iRnJvbVZlcnRleCIsICJjb252ZXJ0ZXJzLmRlbGV0ZUJhdGNoSm9iUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5kZWxldGVSZXNvdXJjZUpvYkZyb21NbGRldiIsICJ0b29sVG9WZXJ0ZXgiLCAidC50Q2FjaGVzTW9kZWwiLCAiZnVuY3Rpb25EZWNsYXJhdGlvblRvVmVydGV4IiwgImNvbnZlcnRlcnMuY3JlYXRlQ2FjaGVkQ29udGVudFBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLmNyZWF0ZUNhY2hlZENvbnRlbnRQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmdldENhY2hlZENvbnRlbnRQYXJhbWV0ZXJzVG9WZXJ0ZXgiLCAiY29udmVydGVycy5nZXRDYWNoZWRDb250ZW50UGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5kZWxldGVDYWNoZWRDb250ZW50UGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMuZGVsZXRlQ2FjaGVkQ29udGVudFJlc3BvbnNlRnJvbVZlcnRleCIsICJ0eXBlcy5EZWxldGVDYWNoZWRDb250ZW50UmVzcG9uc2UiLCAiY29udmVydGVycy5kZWxldGVDYWNoZWRDb250ZW50UGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5kZWxldGVDYWNoZWRDb250ZW50UmVzcG9uc2VGcm9tTWxkZXYiLCAiY29udmVydGVycy51cGRhdGVDYWNoZWRDb250ZW50UGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMudXBkYXRlQ2FjaGVkQ29udGVudFBhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMubGlzdENhY2hlZENvbnRlbnRzUGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMubGlzdENhY2hlZENvbnRlbnRzUmVzcG9uc2VGcm9tVmVydGV4IiwgInR5cGVzLkxpc3RDYWNoZWRDb250ZW50c1Jlc3BvbnNlIiwgImNvbnZlcnRlcnMubGlzdENhY2hlZENvbnRlbnRzUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5saXN0Q2FjaGVkQ29udGVudHNSZXNwb25zZUZyb21NbGRldiIsICJfYSIsICJpIiwgInQudENvbnRlbnQiLCAiZnJvbUZpbGUiLCAiY29tbW9uLmdldFZhbHVlQnlQYXRoIiwgImNvbW1vbi5zZXRWYWx1ZUJ5UGF0aCIsICJ0LnRGaWxlTmFtZSIsICJ4IiwgInBhdGgiLCAiY29udmVydGVycy5saXN0RmlsZXNQYXJhbWV0ZXJzVG9NbGRldiIsICJjb21tb24uZm9ybWF0TWFwIiwgInJlc3BvbnNlIiwgImNvbnZlcnRlcnMubGlzdEZpbGVzUmVzcG9uc2VGcm9tTWxkZXYiLCAidHlwZXMuTGlzdEZpbGVzUmVzcG9uc2UiLCAiY29udmVydGVycy5jcmVhdGVGaWxlUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5jcmVhdGVGaWxlUmVzcG9uc2VGcm9tTWxkZXYiLCAidHlwZXMuQ3JlYXRlRmlsZVJlc3BvbnNlIiwgImNvbnZlcnRlcnMuZ2V0RmlsZVBhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMuZGVsZXRlRmlsZVBhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMuZGVsZXRlRmlsZVJlc3BvbnNlRnJvbU1sZGV2IiwgInR5cGVzLkRlbGV0ZUZpbGVSZXNwb25zZSIsICJjb252ZXJ0ZXJzLmludGVybmFsUmVnaXN0ZXJGaWxlc1BhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMucmVnaXN0ZXJGaWxlc1Jlc3BvbnNlRnJvbU1sZGV2IiwgInR5cGVzLlJlZ2lzdGVyRmlsZXNSZXNwb25zZSIsICJibG9iVG9NbGRldiIsICJjb250ZW50VG9NbGRldiIsICJwYXJ0VG9NbGRldiIsICJmaWxlRGF0YVRvTWxkZXYiLCAiZnVuY3Rpb25DYWxsVG9NbGRldiIsICJmdW5jdGlvbkRlY2xhcmF0aW9uVG9WZXJ0ZXgiLCAiZ2VuZXJhdGlvbkNvbmZpZ1RvVmVydGV4IiwgImdvb2dsZU1hcHNUb01sZGV2IiwgImdvb2dsZVNlYXJjaFRvTWxkZXYiLCAibGl2ZUNvbm5lY3RDb25maWdUb01sZGV2IiwgInQudExpdmVTcGVlY2hDb25maWciLCAidC50VG9vbHMiLCAidG9vbFRvTWxkZXYiLCAidC50VG9vbCIsICJzZXNzaW9uUmVzdW1wdGlvbkNvbmZpZ1RvTWxkZXYiLCAidG9vbFRvVmVydGV4IiwgInQudE1vZGVsIiwgInQudEJsb2JzIiwgInQudEF1ZGlvQmxvYiIsICJ0LnRJbWFnZUJsb2IiLCAidC50Q29udGVudHMiLCAidC50Q29udGVudHNGb3JFbWJlZCIsICJ0LnRTY2hlbWEiLCAidC50Q2FjaGVkQ29udGVudE5hbWUiLCAidC50U3BlZWNoQ29uZmlnIiwgInQudEJ5dGVzIiwgInQudE1vZGVsc1VybCIsICJ0LnRFeHRyYWN0TW9kZWxzIiwgImJhc2VVcmwiLCAicmVxdWVzdCIsICJ0eXBlcy5SZXNvdXJjZVNjb3BlIiwgInR5cGVzLkh0dHBSZXNwb25zZSIsICJlIiwgImVycm9yIiwgImRlbGltaXRlciIsICJwUmV0cnkiLCAidCIsICJoYW5kbGVXZWJTb2NrZXRNZXNzYWdlIiwgInR5cGVzLkxpdmVNdXNpY1NlcnZlck1lc3NhZ2UiLCAiYXV0aCIsICJtYXBUb0hlYWRlcnMiLCAicmVzb2x2ZSIsICJfYSIsICJlIiwgImhlYWRlcnNUb01hcCIsICJ0LnRNb2RlbCIsICJjb252ZXJ0ZXJzLmxpdmVNdXNpY1NldFdlaWdodGVkUHJvbXB0c1BhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMubGl2ZU11c2ljU2V0Q29uZmlnUGFyYW1ldGVyc1RvTWxkZXYiLCAidHlwZXMuTGl2ZU11c2ljUGxheWJhY2tDb250cm9sIiwgInR5cGVzLkxpdmVTZXJ2ZXJNZXNzYWdlIiwgImNvbnZlcnRlcnMubGl2ZVNlcnZlck1lc3NhZ2VGcm9tVmVydGV4IiwgInR5cGVzLk1vZGFsaXR5IiwgImNvbnZlcnRlcnMubGl2ZUNvbm5lY3RQYXJhbWV0ZXJzVG9WZXJ0ZXgiLCAiY29udmVydGVycy5saXZlQ29ubmVjdFBhcmFtZXRlcnNUb01sZGV2IiwgInQudENvbnRlbnRzIiwgImNvbnRlbnRUb01sZGV2IiwgImNvbnZlcnRlcnMubGl2ZVNlbmRSZWFsdGltZUlucHV0UGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMubGl2ZVNlbmRSZWFsdGltZUlucHV0UGFyYW1ldGVyc1RvTWxkZXYiLCAidHlwZXMuRW1iZWRkaW5nQXBpVHlwZSIsICJhZmMuaGFzQ2FsbGFibGVUb29scyIsICJhZmMuc2hvdWxkRGlzYWJsZUFmYyIsICJhZmMuZmluZEFmY0luY29tcGF0aWJsZVRvb2xJbmRleGVzIiwgImFmYy5ERUZBVUxUX01BWF9SRU1PVEVfQ0FMTFMiLCAiYWZjLmlzQ2FsbGFibGVUb29sIiwgImFmYy5zaG91bGRBcHBlbmRBZmNIaXN0b3J5IiwgIngiLCAibWNwLmhhc01jcFRvb2xVc2FnZSIsICJtY3Auc2V0TWNwVXNhZ2VIZWFkZXIiLCAicGFyYW1zIiwgIl9jIiwgInR5cGVzLkdlbmVyYXRlQ29udGVudFJlc3BvbnNlIiwgInBhdGgiLCAiY29udmVydGVycy5nZW5lcmF0ZUNvbnRlbnRQYXJhbWV0ZXJzVG9WZXJ0ZXgiLCAiY29tbW9uLmZvcm1hdE1hcCIsICJyZXNwb25zZSIsICJjb252ZXJ0ZXJzLmdlbmVyYXRlQ29udGVudFJlc3BvbnNlRnJvbVZlcnRleCIsICJjb252ZXJ0ZXJzLmdlbmVyYXRlQ29udGVudFBhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMuZ2VuZXJhdGVDb250ZW50UmVzcG9uc2VGcm9tTWxkZXYiLCAiX2QiLCAiY29udmVydGVycy5lbWJlZENvbnRlbnRQYXJhbWV0ZXJzUHJpdmF0ZVRvVmVydGV4IiwgImNvbnZlcnRlcnMuZW1iZWRDb250ZW50UmVzcG9uc2VGcm9tVmVydGV4IiwgInR5cGVzLkVtYmVkQ29udGVudFJlc3BvbnNlIiwgImNvbnZlcnRlcnMuZW1iZWRDb250ZW50UGFyYW1ldGVyc1ByaXZhdGVUb01sZGV2IiwgImNvbnZlcnRlcnMuZW1iZWRDb250ZW50UmVzcG9uc2VGcm9tTWxkZXYiLCAiY29udmVydGVycy5nZW5lcmF0ZUltYWdlc1BhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLmdlbmVyYXRlSW1hZ2VzUmVzcG9uc2VGcm9tVmVydGV4IiwgInR5cGVzLkdlbmVyYXRlSW1hZ2VzUmVzcG9uc2UiLCAiY29udmVydGVycy5nZW5lcmF0ZUltYWdlc1BhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMuZ2VuZXJhdGVJbWFnZXNSZXNwb25zZUZyb21NbGRldiIsICJjb252ZXJ0ZXJzLmVkaXRJbWFnZVBhcmFtZXRlcnNJbnRlcm5hbFRvVmVydGV4IiwgImNvbnZlcnRlcnMuZWRpdEltYWdlUmVzcG9uc2VGcm9tVmVydGV4IiwgInR5cGVzLkVkaXRJbWFnZVJlc3BvbnNlIiwgImNvbnZlcnRlcnMudXBzY2FsZUltYWdlQVBJUGFyYW1ldGVyc0ludGVybmFsVG9WZXJ0ZXgiLCAiY29udmVydGVycy51cHNjYWxlSW1hZ2VSZXNwb25zZUZyb21WZXJ0ZXgiLCAidHlwZXMuVXBzY2FsZUltYWdlUmVzcG9uc2UiLCAiY29udmVydGVycy5yZWNvbnRleHRJbWFnZVBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLnJlY29udGV4dEltYWdlUmVzcG9uc2VGcm9tVmVydGV4IiwgInR5cGVzLlJlY29udGV4dEltYWdlUmVzcG9uc2UiLCAiY29udmVydGVycy5zZWdtZW50SW1hZ2VQYXJhbWV0ZXJzVG9WZXJ0ZXgiLCAiY29udmVydGVycy5zZWdtZW50SW1hZ2VSZXNwb25zZUZyb21WZXJ0ZXgiLCAidHlwZXMuU2VnbWVudEltYWdlUmVzcG9uc2UiLCAiY29udmVydGVycy5nZXRNb2RlbFBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLm1vZGVsRnJvbVZlcnRleCIsICJjb252ZXJ0ZXJzLmdldE1vZGVsUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5tb2RlbEZyb21NbGRldiIsICJjb252ZXJ0ZXJzLmxpc3RNb2RlbHNQYXJhbWV0ZXJzVG9WZXJ0ZXgiLCAiY29udmVydGVycy5saXN0TW9kZWxzUmVzcG9uc2VGcm9tVmVydGV4IiwgInR5cGVzLkxpc3RNb2RlbHNSZXNwb25zZSIsICJjb252ZXJ0ZXJzLmxpc3RNb2RlbHNQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmxpc3RNb2RlbHNSZXNwb25zZUZyb21NbGRldiIsICJjb252ZXJ0ZXJzLnVwZGF0ZU1vZGVsUGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMudXBkYXRlTW9kZWxQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmRlbGV0ZU1vZGVsUGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMuZGVsZXRlTW9kZWxSZXNwb25zZUZyb21WZXJ0ZXgiLCAidHlwZXMuRGVsZXRlTW9kZWxSZXNwb25zZSIsICJjb252ZXJ0ZXJzLmRlbGV0ZU1vZGVsUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5kZWxldGVNb2RlbFJlc3BvbnNlRnJvbU1sZGV2IiwgImNvbnZlcnRlcnMuY291bnRUb2tlbnNQYXJhbWV0ZXJzVG9WZXJ0ZXgiLCAiY29udmVydGVycy5jb3VudFRva2Vuc1Jlc3BvbnNlRnJvbVZlcnRleCIsICJ0eXBlcy5Db3VudFRva2Vuc1Jlc3BvbnNlIiwgImNvbnZlcnRlcnMuY291bnRUb2tlbnNQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmNvdW50VG9rZW5zUmVzcG9uc2VGcm9tTWxkZXYiLCAiY29udmVydGVycy5jb21wdXRlVG9rZW5zUGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMuY29tcHV0ZVRva2Vuc1Jlc3BvbnNlRnJvbVZlcnRleCIsICJ0eXBlcy5Db21wdXRlVG9rZW5zUmVzcG9uc2UiLCAiY29udmVydGVycy5nZW5lcmF0ZVZpZGVvc1BhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLmdlbmVyYXRlVmlkZW9zT3BlcmF0aW9uRnJvbVZlcnRleCIsICJ0eXBlcy5HZW5lcmF0ZVZpZGVvc09wZXJhdGlvbiIsICJjb252ZXJ0ZXJzLmdlbmVyYXRlVmlkZW9zUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5nZW5lcmF0ZVZpZGVvc09wZXJhdGlvbkZyb21NbGRldiIsICJyZXNvdXJjZU5hbWUiLCAiY29udmVydGVycy5nZXRPcGVyYXRpb25QYXJhbWV0ZXJzVG9WZXJ0ZXgiLCAiY29udmVydGVycy5nZXRPcGVyYXRpb25QYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmZldGNoUHJlZGljdE9wZXJhdGlvblBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb21tb24uZ2V0VmFsdWVCeVBhdGgiLCAiY29tbW9uLnNldFZhbHVlQnlQYXRoIiwgInQudExpdmVTcGVlY2hDb25maWciLCAidC50Q29udGVudCIsICJ0LnRUb29scyIsICJ0LnRUb29sIiwgImNvbnZlcnRlcnMuY3JlYXRlQXV0aFRva2VuUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5nZXREb2N1bWVudFBhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMuZGVsZXRlRG9jdW1lbnRQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmxpc3REb2N1bWVudHNQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmxpc3REb2N1bWVudHNSZXNwb25zZUZyb21NbGRldiIsICJ0eXBlcy5MaXN0RG9jdW1lbnRzUmVzcG9uc2UiLCAiY29udmVydGVycy5jcmVhdGVGaWxlU2VhcmNoU3RvcmVQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmdldEZpbGVTZWFyY2hTdG9yZVBhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMuZGVsZXRlRmlsZVNlYXJjaFN0b3JlUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5saXN0RmlsZVNlYXJjaFN0b3Jlc1BhcmFtZXRlcnNUb01sZGV2IiwgImNvbnZlcnRlcnMubGlzdEZpbGVTZWFyY2hTdG9yZXNSZXNwb25zZUZyb21NbGRldiIsICJ0eXBlcy5MaXN0RmlsZVNlYXJjaFN0b3Jlc1Jlc3BvbnNlIiwgImNvbnZlcnRlcnMudXBsb2FkVG9GaWxlU2VhcmNoU3RvcmVQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLnVwbG9hZFRvRmlsZVNlYXJjaFN0b3JlUmVzdW1hYmxlUmVzcG9uc2VGcm9tTWxkZXYiLCAidHlwZXMuVXBsb2FkVG9GaWxlU2VhcmNoU3RvcmVSZXN1bWFibGVSZXNwb25zZSIsICJjb252ZXJ0ZXJzLmltcG9ydEZpbGVQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLmltcG9ydEZpbGVPcGVyYXRpb25Gcm9tTWxkZXYiLCAidHlwZXMuSW1wb3J0RmlsZU9wZXJhdGlvbiIsICJjcnlwdG8iLCAiZXJyb3IiLCAic2xlZXAiLCAiVkVSU0lPTiIsICJhcmNoIiwgInBsYXRmb3JtIiwgIlJlYWRhYmxlU3RyZWFtIiwgInByb2Nlc3MiLCAiRXJyb3JzLkdlbWluaU5leHRHZW5BUElDbGllbnRFcnJvciIsICJpIiwgIm5vb3AiLCAiU3RyZWFtIiwgIml0ZXJhdG9yIiwgInNlbGYiLCAiZGVsaW1pdGVyIiwgImVudiIsICJTaGltcy5nZXREZWZhdWx0RmV0Y2giLCAiT3B0cy5GYWxsYmFja0VuY29kZXIiLCAiRXJyb3JzLkFQSUVycm9yIiwgInJlcXVlc3QiLCAib3B0cyIsICJFcnJvcnMuQVBJVXNlckFib3J0RXJyb3IiLCAiRXJyb3JzLkFQSUNvbm5lY3Rpb25UaW1lb3V0RXJyb3IiLCAiRXJyb3JzLkFQSUNvbm5lY3Rpb25FcnJvciIsICJyZXRyeU1lc3NhZ2UiLCAiU2hpbXMuQ2FuY2VsUmVhZGFibGVTdHJlYW0iLCAiZXJyIiwgIlNoaW1zLlJlYWRhYmxlU3RyZWFtRnJvbSIsICJBUEkuSW50ZXJhY3Rpb25zIiwgIkVycm9ycy5Ob3RGb3VuZEVycm9yIiwgIkVycm9ycy5Db25mbGljdEVycm9yIiwgIkVycm9ycy5SYXRlTGltaXRFcnJvciIsICJFcnJvcnMuQmFkUmVxdWVzdEVycm9yIiwgIkVycm9ycy5BdXRoZW50aWNhdGlvbkVycm9yIiwgIkVycm9ycy5JbnRlcm5hbFNlcnZlckVycm9yIiwgIkVycm9ycy5QZXJtaXNzaW9uRGVuaWVkRXJyb3IiLCAiRXJyb3JzLlVucHJvY2Vzc2FibGVFbnRpdHlFcnJvciIsICJVcGxvYWRzLnRvRmlsZSIsICJ3cml0ZUZpbGUiLCAiV2ViU29ja2V0IiwgInQudFR1bmluZ0pvYlN0YXR1cyIsICJ0eXBlcy5Kb2JTdGF0ZSIsICJjb252ZXJ0ZXJzLmdldFR1bmluZ0pvYlBhcmFtZXRlcnNUb1ZlcnRleCIsICJjb252ZXJ0ZXJzLnR1bmluZ0pvYkZyb21WZXJ0ZXgiLCAiY29udmVydGVycy5nZXRUdW5pbmdKb2JQYXJhbWV0ZXJzVG9NbGRldiIsICJjb252ZXJ0ZXJzLnR1bmluZ0pvYkZyb21NbGRldiIsICJjb252ZXJ0ZXJzLmxpc3RUdW5pbmdKb2JzUGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMubGlzdFR1bmluZ0pvYnNSZXNwb25zZUZyb21WZXJ0ZXgiLCAidHlwZXMuTGlzdFR1bmluZ0pvYnNSZXNwb25zZSIsICJjb252ZXJ0ZXJzLmxpc3RUdW5pbmdKb2JzUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5saXN0VHVuaW5nSm9ic1Jlc3BvbnNlRnJvbU1sZGV2IiwgImNvbnZlcnRlcnMuY2FuY2VsVHVuaW5nSm9iUGFyYW1ldGVyc1RvVmVydGV4IiwgImNvbnZlcnRlcnMuY2FuY2VsVHVuaW5nSm9iUmVzcG9uc2VGcm9tVmVydGV4IiwgInR5cGVzLkNhbmNlbFR1bmluZ0pvYlJlc3BvbnNlIiwgImNvbnZlcnRlcnMuY2FuY2VsVHVuaW5nSm9iUGFyYW1ldGVyc1RvTWxkZXYiLCAiY29udmVydGVycy5jYW5jZWxUdW5pbmdKb2JSZXNwb25zZUZyb21NbGRldiIsICJjb252ZXJ0ZXJzLmNyZWF0ZVR1bmluZ0pvYlBhcmFtZXRlcnNQcml2YXRlVG9WZXJ0ZXgiLCAiY29udmVydGVycy5jcmVhdGVUdW5pbmdKb2JQYXJhbWV0ZXJzUHJpdmF0ZVRvTWxkZXYiLCAiY29udmVydGVycy50dW5pbmdPcGVyYXRpb25Gcm9tTWxkZXYiLCAiX2NvbnZlcnRlcnMudXBsb2FkVG9GaWxlU2VhcmNoU3RvcmVPcGVyYXRpb25Gcm9tTWxkZXYiLCAiR2VtaW5pTmV4dEdlbkFQSSIsICJiYXNlVXJsIiwgIlZFUlNJT04iLCAicmVxdWVzdCIsICJwYXRoIiwgImVycm9yIiwgIlZFUlNJT04iLCAiVkVSU0lPTiIsICJPY3Rva2l0IiwgIlZFUlNJT04iLCAicmVxdWVzdCIsICJlcnJvciIsICJyZXF1ZXN0IiwgInJlcXVlc3QiLCAiYXV0aCIsICJhdXRoMiIsICJyZXNvbHZlIiwgInJlcXVlc3QiLCAiZXJyb3IiLCAiYXV0aCIsICJob29rIiwgImVuZHBvaW50IiwgIlZFUlNJT04iLCAiVkVSU0lPTiIsICJhdXRoIiwgImVycm9yIiwgImhvb2siLCAicmVxdWVzdCIsICJlbmRwb2ludCIsICJhdXRoIiwgImhvb2siLCAiZW5kcG9pbnQiLCAiZXJyb3IiLCAiVkVSU0lPTiIsICJpIiwgImkiLCAiaXRlbSIsICJlcnJvciIsICJyZXF1ZXN0IiwgInIiLCAiYXV0aCIsICJob29rIiwgImVuZHBvaW50IiwgInJlc29sdmUiLCAiVkVSU0lPTiIsICJPY3Rva2l0IiwgImNvbnRleHQiLCAiaXNzdWUiLCAiY29udGV4dCIsICJlIiwgIk9jdG9raXQiLCAiX2EiLCAiY29udGV4dCIsICJlIl0KfQo= diff --git a/github-actions/issue-labeling/package.json b/github-actions/issue-labeling/package.json index 5c2c80e24..e415f44c4 100644 --- a/github-actions/issue-labeling/package.json +++ b/github-actions/issue-labeling/package.json @@ -5,7 +5,7 @@ "@actions/github": "9.0.0", "@octokit/openapi-types": "27.0.0", "@octokit/rest": "22.0.1", - "@google/generative-ai": "^0.24.0", + "@google/genai": "^1.43.0", "@types/jasmine": "6.0.0", "@types/node": "24.10.13", "jasmine": "6.1.0" diff --git a/github-actions/package.json b/github-actions/package.json index 8a3cb50b1..9b996f273 100644 --- a/github-actions/package.json +++ b/github-actions/package.json @@ -7,6 +7,6 @@ "@octokit/rest": "22.0.1", "@types/jasmine": "6.0.0", "@types/node": "24.10.13", - "@google/generative-ai": "^0.24.0" + "@google/genai": "^1.43.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8725dbb2a..039d1454f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -301,9 +301,9 @@ importers: '@actions/github': specifier: 9.0.0 version: 9.0.0 - '@google/generative-ai': - specifier: ^0.24.0 - version: 0.24.1 + '@google/genai': + specifier: ^1.43.0 + version: 1.43.0(@modelcontextprotocol/sdk@1.27.0)(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@octokit/auth-app': specifier: 8.2.0 version: 8.2.0 @@ -421,9 +421,9 @@ importers: '@actions/github': specifier: 9.0.0 version: 9.0.0 - '@google/generative-ai': - specifier: ^0.24.0 - version: 0.24.1 + '@google/genai': + specifier: ^1.43.0 + version: 1.43.0(@modelcontextprotocol/sdk@1.27.0)(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@octokit/openapi-types': specifier: 27.0.0 version: 27.0.0 @@ -1587,9 +1587,14 @@ packages: '@modelcontextprotocol/sdk': optional: true - '@google/generative-ai@0.24.1': - resolution: {integrity: sha512-MqO+MLfM6kjxcKoy0p1wRzG3b4ZZXtPI+z2IE26UogS2Cm/XHO+7gGRBh6gcJsOiIVoH93UwKvW4HdgiOZCy9Q==} - engines: {node: '>=18.0.0'} + '@google/genai@1.43.0': + resolution: {integrity: sha512-hklCsJNdMlDM1IwcCVcGQFBg2izY0+t5BIGbRsxi2UnKi6AGKL7pqJqmBDNRbw0bYCs4y3NA7TB+fkKfP/Nrdw==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@modelcontextprotocol/sdk': ^1.25.2 + peerDependenciesMeta: + '@modelcontextprotocol/sdk': + optional: true '@googleapis/sqladmin@35.2.0': resolution: {integrity: sha512-ajR9EGLs1pCkKfsXxfbVRnQ7ZPyktKNAuahHoU06CVKguWwQo3b9aFmq06PYnGk1oXc0+tlW+XEamNa/HF4pbQ==} @@ -7287,7 +7292,18 @@ snapshots: - supports-color - utf-8-validate - '@google/generative-ai@0.24.1': {} + '@google/genai@1.43.0(@modelcontextprotocol/sdk@1.27.0)(bufferutil@4.1.0)(utf-8-validate@6.0.6)': + dependencies: + google-auth-library: 10.5.0(supports-color@10.2.2) + p-retry: 4.6.2 + protobufjs: 7.5.4 + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + optionalDependencies: + '@modelcontextprotocol/sdk': 1.27.0(supports-color@10.2.2) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate '@googleapis/sqladmin@35.2.0': dependencies: