185 lines
205 KiB
JavaScript
185 lines
205 KiB
JavaScript
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "vendor-chunks/replicate@1.4.0";
|
|
exports.ids = ["vendor-chunks/replicate@1.4.0"];
|
|
exports.modules = {
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/index.js":
|
|
/*!****************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/index.js ***!
|
|
\****************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("const ApiError = __webpack_require__(/*! ./lib/error */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/error.js\");\nconst ModelVersionIdentifier = __webpack_require__(/*! ./lib/identifier */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/identifier.js\");\nconst { createReadableStream, createFileOutput } = __webpack_require__(/*! ./lib/stream */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/stream.js\");\nconst {\n transform,\n withAutomaticRetries,\n validateWebhook,\n parseProgressFromLogs,\n streamAsyncIterator,\n} = __webpack_require__(/*! ./lib/util */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/util.js\");\n\nconst accounts = __webpack_require__(/*! ./lib/accounts */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/accounts.js\");\nconst collections = __webpack_require__(/*! ./lib/collections */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/collections.js\");\nconst deployments = __webpack_require__(/*! ./lib/deployments */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/deployments.js\");\nconst files = __webpack_require__(/*! ./lib/files */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/files.js\");\nconst hardware = __webpack_require__(/*! ./lib/hardware */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/hardware.js\");\nconst models = __webpack_require__(/*! ./lib/models */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/models.js\");\nconst predictions = __webpack_require__(/*! ./lib/predictions */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/predictions.js\");\nconst trainings = __webpack_require__(/*! ./lib/trainings */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/trainings.js\");\nconst webhooks = __webpack_require__(/*! ./lib/webhooks */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/webhooks.js\");\n\nconst packageJSON = __webpack_require__(/*! ./package.json */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/package.json\");\n\n/**\n * Replicate API client library\n *\n * @see https://replicate.com/docs/reference/http\n * @example\n * // Create a new Replicate API client instance\n * const Replicate = require(\"replicate\");\n * const replicate = new Replicate({\n * // get your token from https://replicate.com/account\n * auth: process.env.REPLICATE_API_TOKEN,\n * userAgent: \"my-app/1.2.3\"\n * });\n *\n * // Run a model and await the result:\n * const model = 'owner/model:version-id'\n * const input = {text: 'Hello, world!'}\n * const output = await replicate.run(model, { input });\n */\nclass Replicate {\n /**\n * Create a new Replicate API client instance.\n *\n * @param {object} options - Configuration options for the client\n * @param {string} options.auth - API access token. Defaults to the `REPLICATE_API_TOKEN` environment variable.\n * @param {string} options.userAgent - Identifier of your app\n * @param {string} [options.baseUrl] - Defaults to https://api.replicate.com/v1\n * @param {Function} [options.fetch] - Fetch function to use. Defaults to `globalThis.fetch`\n * @param {boolean} [options.useFileOutput] - Set to `false` to disable `FileOutput` objects from `run` instead of URLs, defaults to true.\n * @param {\"default\" | \"upload\" | \"data-uri\"} [options.fileEncodingStrategy] - Determines the file encoding strategy to use\n */\n constructor(options = {}) {\n this.auth =\n options.auth ||\n (typeof process !== \"undefined\" ? process.env.REPLICATE_API_TOKEN : null);\n this.userAgent =\n options.userAgent || `replicate-javascript/${packageJSON.version}`;\n this.baseUrl = options.baseUrl || \"https://api.replicate.com/v1\";\n this.fetch = options.fetch || globalThis.fetch;\n this.fileEncodingStrategy = options.fileEncodingStrategy || \"default\";\n this.useFileOutput = options.useFileOutput === false ? false : true;\n\n this.accounts = {\n current: accounts.current.bind(this),\n };\n\n this.collections = {\n list: collections.list.bind(this),\n get: collections.get.bind(this),\n };\n\n this.deployments = {\n get: deployments.get.bind(this),\n create: deployments.create.bind(this),\n update: deployments.update.bind(this),\n delete: deployments.delete.bind(this),\n list: deployments.list.bind(this),\n predictions: {\n create: deployments.predictions.create.bind(this),\n },\n };\n\n this.files = {\n create: files.create.bind(this),\n get: files.get.bind(this),\n list: files.list.bind(this),\n delete: files.delete.bind(this),\n };\n\n this.hardware = {\n list: hardware.list.bind(this),\n };\n\n this.models = {\n get: models.get.bind(this),\n list: models.list.bind(this),\n create: models.create.bind(this),\n versions: {\n list: models.versions.list.bind(this),\n get: models.versions.get.bind(this),\n },\n search: models.search.bind(this),\n };\n\n this.predictions = {\n create: predictions.create.bind(this),\n get: predictions.get.bind(this),\n cancel: predictions.cancel.bind(this),\n list: predictions.list.bind(this),\n };\n\n this.trainings = {\n create: trainings.create.bind(this),\n get: trainings.get.bind(this),\n cancel: trainings.cancel.bind(this),\n list: trainings.list.bind(this),\n };\n\n this.webhooks = {\n default: {\n secret: {\n get: webhooks.default.secret.get.bind(this),\n },\n },\n };\n }\n\n /**\n * Run a model and wait for its output.\n *\n * @param {string} ref - Required. The model version identifier in the format \"owner/name\" or \"owner/name:version\"\n * @param {object} options\n * @param {object} options.input - Required. An object with the model inputs\n * @param {{mode: \"block\", timeout?: number, interval?: number} | {mode: \"poll\", interval?: number }} [options.wait] - Options for waiting for the prediction to finish. If `wait` is explicitly true, the function will block and wait for the prediction to finish.\n * @param {string} [options.webhook] - An HTTPS URL for receiving a webhook when the prediction has new output\n * @param {string[]} [options.webhook_events_filter] - You can change which events trigger webhook requests by specifying webhook events (`start`|`output`|`logs`|`completed`)\n * @param {AbortSignal} [options.signal] - AbortSignal to cancel the prediction\n * @param {Function} [progress] - Callback function that receives the prediction object as it's updated. The function is called when the prediction is created, each time its updated while polling for completion, and when it's completed.\n * @throws {Error} If the reference is invalid\n * @throws {Error} If the prediction failed\n * @returns {Promise<object>} - Resolves with the output of running the model\n */\n async run(ref, options, progress) {\n const { wait = { mode: \"block\" }, signal, ...data } = options;\n\n const identifier = ModelVersionIdentifier.parse(ref);\n\n let prediction;\n if (identifier.version) {\n prediction = await this.predictions.create({\n ...data,\n version: identifier.version,\n wait: wait.mode === \"block\" ? wait.timeout ?? true : false,\n });\n } else if (identifier.owner && identifier.name) {\n prediction = await this.predictions.create({\n ...data,\n model: `${identifier.owner}/${identifier.name}`,\n wait: wait.mode === \"block\" ? wait.timeout ?? true : false,\n });\n } else {\n throw new Error(\"Invalid model version identifier\");\n }\n\n // Call progress callback with the initial prediction object\n if (progress) {\n progress(prediction);\n }\n\n const isDone = wait.mode === \"block\" && prediction.status !== \"starting\";\n if (!isDone) {\n prediction = await this.wait(\n prediction,\n { interval: wait.mode === \"poll\" ? wait.interval : undefined },\n async (updatedPrediction) => {\n // Call progress callback with the updated prediction object\n if (progress) {\n progress(updatedPrediction);\n }\n\n // We handle the cancel later in the function.\n if (signal && signal.aborted) {\n return true; // stop polling\n }\n\n return false; // continue polling\n }\n );\n }\n\n if (signal && signal.aborted) {\n prediction = await this.predictions.cancel(prediction.id);\n }\n\n // Call progress callback with the completed prediction object\n if (progress) {\n progress(prediction);\n }\n\n if (prediction.status === \"failed\") {\n throw new Error(`Prediction failed: ${prediction.error}`);\n }\n\n return transform(prediction.output, (value) => {\n if (\n typeof value === \"string\" &&\n (value.startsWith(\"https:\") || value.startsWith(\"data:\"))\n ) {\n return this.useFileOutput\n ? createFileOutput({ url: value, fetch: this.fetch })\n : value;\n }\n return value;\n });\n }\n\n /**\n * Make a request to the Replicate API.\n *\n * @param {string} route - REST API endpoint path\n * @param {object} options - Request parameters\n * @param {string} [options.method] - HTTP method. Defaults to GET\n * @param {object} [options.params] - Query parameters\n * @param {object|Headers} [options.headers] - HTTP headers\n * @param {object} [options.data] - Body parameters\n * @param {AbortSignal} [options.signal] - AbortSignal to cancel the request\n * @returns {Promise<Response>} - Resolves with the response object\n * @throws {ApiError} If the request failed\n */\n async request(route, options) {\n const { auth, baseUrl, userAgent } = this;\n\n let url;\n if (route instanceof URL) {\n url = route;\n } else {\n url = new URL(\n route.startsWith(\"/\") ? route.slice(1) : route,\n baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`\n );\n }\n\n const { method = \"GET\", params = {}, data, signal } = options;\n\n for (const [key, value] of Object.entries(params)) {\n url.searchParams.append(key, value);\n }\n\n const headers = {\n \"Content-Type\": \"application/json\",\n \"User-Agent\": userAgent,\n };\n if (auth) {\n headers[\"Authorization\"] = `Bearer ${auth}`;\n }\n if (options.headers) {\n for (const [key, value] of Object.entries(options.headers)) {\n headers[key] = value;\n }\n }\n\n let body = undefined;\n if (data instanceof FormData) {\n body = data;\n // biome-ignore lint/performance/noDelete:\n delete headers[\"Content-Type\"]; // Use automatic content type header\n } else if (data) {\n body = JSON.stringify(data);\n }\n\n const init = {\n method,\n headers,\n body,\n signal,\n };\n\n const shouldRetry =\n method === \"GET\"\n ? (response) => response.status === 429 || response.status >= 500\n : (response) => response.status === 429;\n\n // Workaround to fix `TypeError: Illegal invocation` error in Cloudflare Workers\n // https://github.com/replicate/replicate-javascript/issues/134\n const _fetch = this.fetch; // eslint-disable-line no-underscore-dangle\n const response = await withAutomaticRetries(async () => _fetch(url, init), {\n shouldRetry,\n });\n\n if (!response.ok) {\n const request = new Request(url, init);\n const responseText = await response.text();\n throw new ApiError(\n `Request to ${url} failed with status ${response.status} ${response.statusText}: ${responseText}.`,\n request,\n response\n );\n }\n\n return response;\n }\n\n /**\n * Stream a model and wait for its output.\n *\n * @param {string} identifier - Required. The model version identifier in the format \"{owner}/{name}:{version}\"\n * @param {object} options\n * @param {object} options.input - Required. An object with the model inputs\n * @param {string} [options.webhook] - An HTTPS URL for receiving a webhook when the prediction has new output\n * @param {string[]} [options.webhook_events_filter] - You can change which events trigger webhook requests by specifying webhook events (`start`|`output`|`logs`|`completed`)\n * @param {AbortSignal} [options.signal] - AbortSignal to cancel the prediction\n * @throws {Error} If the prediction failed\n * @yields {ServerSentEvent} Each streamed event from the prediction\n */\n async *stream(ref, options) {\n const {\n wait,\n signal,\n useFileOutput = this.useFileOutput,\n ...data\n } = options;\n\n const identifier = ModelVersionIdentifier.parse(ref);\n\n let prediction;\n if (identifier.version) {\n prediction = await this.predictions.create({\n ...data,\n version: identifier.version,\n });\n } else if (identifier.owner && identifier.name) {\n prediction = await this.predictions.create({\n ...data,\n model: `${identifier.owner}/${identifier.name}`,\n });\n } else {\n throw new Error(\"Invalid model version identifier\");\n }\n\n if (prediction.urls && prediction.urls.stream) {\n const stream = createReadableStream({\n url: prediction.urls.stream,\n fetch: this.fetch,\n options: {\n useFileOutput,\n ...(signal ? { signal } : {}),\n },\n });\n\n yield* streamAsyncIterator(stream);\n } else {\n throw new Error(\"Prediction does not support streaming\");\n }\n }\n\n /**\n * Paginate through a list of results.\n *\n * @generator\n * @example\n * for await (const page of replicate.paginate(replicate.predictions.list) {\n * console.log(page);\n * }\n * @param {Function} endpoint - Function that returns a promise for the next page of results\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - AbortSignal to cancel the request.\n * @yields {object[]} Each page of results\n */\n async *paginate(endpoint, options = {}) {\n const response = await endpoint();\n yield response.results;\n if (response.next && !(options.signal && options.signal.aborted)) {\n const nextPage = () =>\n this.request(response.next, {\n method: \"GET\",\n signal: options.signal,\n }).then((r) => r.json());\n yield* this.paginate(nextPage, options);\n }\n }\n\n /**\n * Wait for a prediction to finish.\n *\n * If the prediction has already finished,\n * this function returns immediately.\n * Otherwise, it polls the API until the prediction finishes.\n *\n * @async\n * @param {object} prediction - Prediction object\n * @param {object} options - Options\n * @param {number} [options.interval] - Polling interval in milliseconds. Defaults to 500\n * @param {Function} [stop] - Async callback function that is called after each polling attempt. Receives the prediction object as an argument. Return false to cancel polling.\n * @throws {Error} If the prediction doesn't complete within the maximum number of attempts\n * @throws {Error} If the prediction failed\n * @returns {Promise<object>} Resolves with the completed prediction object\n */\n async wait(prediction, options, stop) {\n const { id } = prediction;\n if (!id) {\n throw new Error(\"Invalid prediction\");\n }\n\n if (\n prediction.status === \"succeeded\" ||\n prediction.status === \"failed\" ||\n prediction.status === \"canceled\"\n ) {\n return prediction;\n }\n\n // eslint-disable-next-line no-promise-executor-return\n const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\n const interval = (options && options.interval) || 500;\n\n let updatedPrediction = await this.predictions.get(id);\n\n while (\n updatedPrediction.status !== \"succeeded\" &&\n updatedPrediction.status !== \"failed\" &&\n updatedPrediction.status !== \"canceled\"\n ) {\n /* eslint-disable no-await-in-loop */\n if (stop && (await stop(updatedPrediction)) === true) {\n break;\n }\n\n await sleep(interval);\n updatedPrediction = await this.predictions.get(prediction.id);\n /* eslint-enable no-await-in-loop */\n }\n\n if (updatedPrediction.status === \"failed\") {\n throw new Error(`Prediction failed: ${updatedPrediction.error}`);\n }\n\n return updatedPrediction;\n }\n}\n\nmodule.exports = Replicate;\nmodule.exports.validateWebhook = validateWebhook;\nmodule.exports.parseProgressFromLogs = parseProgressFromLogs;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsbUdBQWE7QUFDdEMsK0JBQStCLG1CQUFPLENBQUMsNkdBQWtCO0FBQ3pELFFBQVEseUNBQXlDLEVBQUUsbUJBQU8sQ0FBQyxxR0FBYztBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLEVBQUUsbUJBQU8sQ0FBQyxpR0FBWTs7QUFFeEIsaUJBQWlCLG1CQUFPLENBQUMseUdBQWdCO0FBQ3pDLG9CQUFvQixtQkFBTyxDQUFDLCtHQUFtQjtBQUMvQyxvQkFBb0IsbUJBQU8sQ0FBQywrR0FBbUI7QUFDL0MsY0FBYyxtQkFBTyxDQUFDLG1HQUFhO0FBQ25DLGlCQUFpQixtQkFBTyxDQUFDLHlHQUFnQjtBQUN6QyxlQUFlLG1CQUFPLENBQUMscUdBQWM7QUFDckMsb0JBQW9CLG1CQUFPLENBQUMsK0dBQW1CO0FBQy9DLGtCQUFrQixtQkFBTyxDQUFDLDJHQUFpQjtBQUMzQyxpQkFBaUIsbUJBQU8sQ0FBQyx5R0FBZ0I7O0FBRXpDLG9CQUFvQixtQkFBTyxDQUFDLHNHQUFnQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsK0NBQStDLE9BQU87QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFVBQVU7QUFDdkIsYUFBYSxTQUFTO0FBQ3RCLGFBQWEsbUNBQW1DO0FBQ2hEO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELG9CQUFvQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixjQUFjLG9EQUFvRCxHQUFHLG1DQUFtQztBQUN4RyxhQUFhLFFBQVE7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCLGFBQWEsYUFBYTtBQUMxQixhQUFhLFVBQVU7QUFDdkIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixlQUFlLGlCQUFpQjtBQUNoQztBQUNBO0FBQ0EsWUFBWSxTQUFTLGVBQWUsb0JBQW9COztBQUV4RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQSxrQkFBa0IsaUJBQWlCLEdBQUcsZ0JBQWdCO0FBQ3REO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw0REFBNEQ7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLGlCQUFpQjtBQUM3RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsK0JBQStCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsYUFBYSxnQkFBZ0I7QUFDN0IsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsYUFBYTtBQUMxQixlQUFlLG1CQUFtQjtBQUNsQyxjQUFjLFVBQVU7QUFDeEI7QUFDQTtBQUNBLFlBQVksMkJBQTJCOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLDZDQUE2QyxRQUFRO0FBQ3JEO0FBQ0E7O0FBRUEsWUFBWSwyQkFBMkIsaUJBQWlCOztBQUV4RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxLQUFLO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QyxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixLQUFLLHFCQUFxQixpQkFBaUIsRUFBRSxvQkFBb0IsSUFBSSxhQUFhO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRLG9FQUFvRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVE7QUFDaEgsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCLGFBQWEsYUFBYTtBQUMxQixjQUFjLE9BQU87QUFDckIsY0FBYyxpQkFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQSxrQkFBa0IsaUJBQWlCLEdBQUcsZ0JBQWdCO0FBQ3RELE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsU0FBUyxJQUFJO0FBQ3RDLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCLGFBQWEsUUFBUTtBQUNyQixhQUFhLGFBQWE7QUFDMUIsY0FBYyxVQUFVO0FBQ3hCO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsZUFBZSxpQkFBaUI7QUFDaEM7QUFDQTtBQUNBLFlBQVksS0FBSztBQUNqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsd0JBQXdCO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QjtBQUM5QixvQ0FBb0MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQXBpRXJyb3IgPSByZXF1aXJlKFwiLi9saWIvZXJyb3JcIik7XG5jb25zdCBNb2RlbFZlcnNpb25JZGVudGlmaWVyID0gcmVxdWlyZShcIi4vbGliL2lkZW50aWZpZXJcIik7XG5jb25zdCB7IGNyZWF0ZVJlYWRhYmxlU3RyZWFtLCBjcmVhdGVGaWxlT3V0cHV0IH0gPSByZXF1aXJlKFwiLi9saWIvc3RyZWFtXCIpO1xuY29uc3Qge1xuICB0cmFuc2Zvcm0sXG4gIHdpdGhBdXRvbWF0aWNSZXRyaWVzLFxuICB2YWxpZGF0ZVdlYmhvb2ssXG4gIHBhcnNlUHJvZ3Jlc3NGcm9tTG9ncyxcbiAgc3RyZWFtQXN5bmNJdGVyYXRvcixcbn0gPSByZXF1aXJlKFwiLi9saWIvdXRpbFwiKTtcblxuY29uc3QgYWNjb3VudHMgPSByZXF1aXJlKFwiLi9saWIvYWNjb3VudHNcIik7XG5jb25zdCBjb2xsZWN0aW9ucyA9IHJlcXVpcmUoXCIuL2xpYi9jb2xsZWN0aW9uc1wiKTtcbmNvbnN0IGRlcGxveW1lbnRzID0gcmVxdWlyZShcIi4vbGliL2RlcGxveW1lbnRzXCIpO1xuY29uc3QgZmlsZXMgPSByZXF1aXJlKFwiLi9saWIvZmlsZXNcIik7XG5jb25zdCBoYXJkd2FyZSA9IHJlcXVpcmUoXCIuL2xpYi9oYXJkd2FyZVwiKTtcbmNvbnN0IG1vZGVscyA9IHJlcXVpcmUoXCIuL2xpYi9tb2RlbHNcIik7XG5jb25zdCBwcmVkaWN0aW9ucyA9IHJlcXVpcmUoXCIuL2xpYi9wcmVkaWN0aW9uc1wiKTtcbmNvbnN0IHRyYWluaW5ncyA9IHJlcXVpcmUoXCIuL2xpYi90cmFpbmluZ3NcIik7XG5jb25zdCB3ZWJob29rcyA9IHJlcXVpcmUoXCIuL2xpYi93ZWJob29rc1wiKTtcblxuY29uc3QgcGFja2FnZUpTT04gPSByZXF1aXJlKFwiLi9wYWNrYWdlLmpzb25cIik7XG5cbi8qKlxuICogUmVwbGljYXRlIEFQSSBjbGllbnQgbGlicmFyeVxuICpcbiAqIEBzZWUgaHR0cHM6Ly9yZXBsaWNhdGUuY29tL2RvY3MvcmVmZXJlbmNlL2h0dHBcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYSBuZXcgUmVwbGljYXRlIEFQSSBjbGllbnQgaW5zdGFuY2VcbiAqIGNvbnN0IFJlcGxpY2F0ZSA9IHJlcXVpcmUoXCJyZXBsaWNhdGVcIik7XG4gKiBjb25zdCByZXBsaWNhdGUgPSBuZXcgUmVwbGljYXRlKHtcbiAqICAgICAvLyBnZXQgeW91ciB0b2tlbiBmcm9tIGh0dHBzOi8vcmVwbGljYXRlLmNvbS9hY2NvdW50XG4gKiAgICAgYXV0aDogcHJvY2Vzcy5lbnYuUkVQTElDQVRFX0FQSV9UT0tFTixcbiAqICAgICB1c2VyQWdlbnQ6IFwibXktYXBwLzEuMi4zXCJcbiAqIH0pO1xuICpcbiAqIC8vIFJ1biBhIG1vZGVsIGFuZCBhd2FpdCB0aGUgcmVzdWx0OlxuICogY29uc3QgbW9kZWwgPSAnb3duZXIvbW9kZWw6dmVyc2lvbi1pZCdcbiAqIGNvbnN0IGlucHV0ID0ge3RleHQ6ICdIZWxsbywgd29ybGQhJ31cbiAqIGNvbnN0IG91dHB1dCA9IGF3YWl0IHJlcGxpY2F0ZS5ydW4obW9kZWwsIHsgaW5wdXQgfSk7XG4gKi9cbmNsYXNzIFJlcGxpY2F0ZSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgUmVwbGljYXRlIEFQSSBjbGllbnQgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgY2xpZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmF1dGggLSBBUEkgYWNjZXNzIHRva2VuLiBEZWZhdWx0cyB0byB0aGUgYFJFUExJQ0FURV9BUElfVE9LRU5gIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyQWdlbnQgLSBJZGVudGlmaWVyIG9mIHlvdXIgYXBwXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5iYXNlVXJsXSAtIERlZmF1bHRzIHRvIGh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjFcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMuZmV0Y2hdIC0gRmV0Y2ggZnVuY3Rpb24gdG8gdXNlLiBEZWZhdWx0cyB0byBgZ2xvYmFsVGhpcy5mZXRjaGBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy51c2VGaWxlT3V0cHV0XSAtIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUgYEZpbGVPdXRwdXRgIG9iamVjdHMgZnJvbSBgcnVuYCBpbnN0ZWFkIG9mIFVSTHMsIGRlZmF1bHRzIHRvIHRydWUuXG4gICAqIEBwYXJhbSB7XCJkZWZhdWx0XCIgfCBcInVwbG9hZFwiIHwgXCJkYXRhLXVyaVwifSBbb3B0aW9ucy5maWxlRW5jb2RpbmdTdHJhdGVneV0gLSBEZXRlcm1pbmVzIHRoZSBmaWxlIGVuY29kaW5nIHN0cmF0ZWd5IHRvIHVzZVxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5hdXRoID1cbiAgICAgIG9wdGlvbnMuYXV0aCB8fFxuICAgICAgKHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcy5lbnYuUkVQTElDQVRFX0FQSV9UT0tFTiA6IG51bGwpO1xuICAgIHRoaXMudXNlckFnZW50ID1cbiAgICAgIG9wdGlvbnMudXNlckFnZW50IHx8IGByZXBsaWNhdGUtamF2YXNjcmlwdC8ke3BhY2thZ2VKU09OLnZlcnNpb259YDtcbiAgICB0aGlzLmJhc2VVcmwgPSBvcHRpb25zLmJhc2VVcmwgfHwgXCJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxXCI7XG4gICAgdGhpcy5mZXRjaCA9IG9wdGlvbnMuZmV0Y2ggfHwgZ2xvYmFsVGhpcy5mZXRjaDtcbiAgICB0aGlzLmZpbGVFbmNvZGluZ1N0cmF0ZWd5ID0gb3B0aW9ucy5maWxlRW5jb2RpbmdTdHJhdGVneSB8fCBcImRlZmF1bHRcIjtcbiAgICB0aGlzLnVzZUZpbGVPdXRwdXQgPSBvcHRpb25zLnVzZUZpbGVPdXRwdXQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xuXG4gICAgdGhpcy5hY2NvdW50cyA9IHtcbiAgICAgIGN1cnJlbnQ6IGFjY291bnRzLmN1cnJlbnQuYmluZCh0aGlzKSxcbiAgICB9O1xuXG4gICAgdGhpcy5jb2xsZWN0aW9ucyA9IHtcbiAgICAgIGxpc3Q6IGNvbGxlY3Rpb25zLmxpc3QuYmluZCh0aGlzKSxcbiAgICAgIGdldDogY29sbGVjdGlvbnMuZ2V0LmJpbmQodGhpcyksXG4gICAgfTtcblxuICAgIHRoaXMuZGVwbG95bWVudHMgPSB7XG4gICAgICBnZXQ6IGRlcGxveW1lbnRzLmdldC5iaW5kKHRoaXMpLFxuICAgICAgY3JlYXRlOiBkZXBsb3ltZW50cy5jcmVhdGUuYmluZCh0aGlzKSxcbiAgICAgIHVwZGF0ZTogZGVwbG95bWVudHMudXBkYXRlLmJpbmQodGhpcyksXG4gICAgICBkZWxldGU6IGRlcGxveW1lbnRzLmRlbGV0ZS5iaW5kKHRoaXMpLFxuICAgICAgbGlzdDogZGVwbG95bWVudHMubGlzdC5iaW5kKHRoaXMpLFxuICAgICAgcHJlZGljdGlvbnM6IHtcbiAgICAgICAgY3JlYXRlOiBkZXBsb3ltZW50cy5wcmVkaWN0aW9ucy5jcmVhdGUuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMuZmlsZXMgPSB7XG4gICAgICBjcmVhdGU6IGZpbGVzLmNyZWF0ZS5iaW5kKHRoaXMpLFxuICAgICAgZ2V0OiBmaWxlcy5nZXQuYmluZCh0aGlzKSxcbiAgICAgIGxpc3Q6IGZpbGVzLmxpc3QuYmluZCh0aGlzKSxcbiAgICAgIGRlbGV0ZTogZmlsZXMuZGVsZXRlLmJpbmQodGhpcyksXG4gICAgfTtcblxuICAgIHRoaXMuaGFyZHdhcmUgPSB7XG4gICAgICBsaXN0OiBoYXJkd2FyZS5saXN0LmJpbmQodGhpcyksXG4gICAgfTtcblxuICAgIHRoaXMubW9kZWxzID0ge1xuICAgICAgZ2V0OiBtb2RlbHMuZ2V0LmJpbmQodGhpcyksXG4gICAgICBsaXN0OiBtb2RlbHMubGlzdC5iaW5kKHRoaXMpLFxuICAgICAgY3JlYXRlOiBtb2RlbHMuY3JlYXRlLmJpbmQodGhpcyksXG4gICAgICB2ZXJzaW9uczoge1xuICAgICAgICBsaXN0OiBtb2RlbHMudmVyc2lvbnMubGlzdC5iaW5kKHRoaXMpLFxuICAgICAgICBnZXQ6IG1vZGVscy52ZXJzaW9ucy5nZXQuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgICBzZWFyY2g6IG1vZGVscy5zZWFyY2guYmluZCh0aGlzKSxcbiAgICB9O1xuXG4gICAgdGhpcy5wcmVkaWN0aW9ucyA9IHtcbiAgICAgIGNyZWF0ZTogcHJlZGljdGlvbnMuY3JlYXRlLmJpbmQodGhpcyksXG4gICAgICBnZXQ6IHByZWRpY3Rpb25zLmdldC5iaW5kKHRoaXMpLFxuICAgICAgY2FuY2VsOiBwcmVkaWN0aW9ucy5jYW5jZWwuYmluZCh0aGlzKSxcbiAgICAgIGxpc3Q6IHByZWRpY3Rpb25zLmxpc3QuYmluZCh0aGlzKSxcbiAgICB9O1xuXG4gICAgdGhpcy50cmFpbmluZ3MgPSB7XG4gICAgICBjcmVhdGU6IHRyYWluaW5ncy5jcmVhdGUuYmluZCh0aGlzKSxcbiAgICAgIGdldDogdHJhaW5pbmdzLmdldC5iaW5kKHRoaXMpLFxuICAgICAgY2FuY2VsOiB0cmFpbmluZ3MuY2FuY2VsLmJpbmQodGhpcyksXG4gICAgICBsaXN0OiB0cmFpbmluZ3MubGlzdC5iaW5kKHRoaXMpLFxuICAgIH07XG5cbiAgICB0aGlzLndlYmhvb2tzID0ge1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBzZWNyZXQ6IHtcbiAgICAgICAgICBnZXQ6IHdlYmhvb2tzLmRlZmF1bHQuc2VjcmV0LmdldC5iaW5kKHRoaXMpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBhIG1vZGVsIGFuZCB3YWl0IGZvciBpdHMgb3V0cHV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIC0gUmVxdWlyZWQuIFRoZSBtb2RlbCB2ZXJzaW9uIGlkZW50aWZpZXIgaW4gdGhlIGZvcm1hdCBcIm93bmVyL25hbWVcIiBvciBcIm93bmVyL25hbWU6dmVyc2lvblwiXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLmlucHV0IC0gUmVxdWlyZWQuIEFuIG9iamVjdCB3aXRoIHRoZSBtb2RlbCBpbnB1dHNcbiAgICogQHBhcmFtIHt7bW9kZTogXCJibG9ja1wiLCB0aW1lb3V0PzogbnVtYmVyLCBpbnRlcnZhbD86IG51bWJlcn0gfCB7bW9kZTogXCJwb2xsXCIsIGludGVydmFsPzogbnVtYmVyIH19IFtvcHRpb25zLndhaXRdIC0gT3B0aW9ucyBmb3Igd2FpdGluZyBmb3IgdGhlIHByZWRpY3Rpb24gdG8gZmluaXNoLiBJZiBgd2FpdGAgaXMgZXhwbGljaXRseSB0cnVlLCB0aGUgZnVuY3Rpb24gd2lsbCBibG9jayBhbmQgd2FpdCBmb3IgdGhlIHByZWRpY3Rpb24gdG8gZmluaXNoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMud2ViaG9va10gLSBBbiBIVFRQUyBVUkwgZm9yIHJlY2VpdmluZyBhIHdlYmhvb2sgd2hlbiB0aGUgcHJlZGljdGlvbiBoYXMgbmV3IG91dHB1dFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3B0aW9ucy53ZWJob29rX2V2ZW50c19maWx0ZXJdIC0gWW91IGNhbiBjaGFuZ2Ugd2hpY2ggZXZlbnRzIHRyaWdnZXIgd2ViaG9vayByZXF1ZXN0cyBieSBzcGVjaWZ5aW5nIHdlYmhvb2sgZXZlbnRzIChgc3RhcnRgfGBvdXRwdXRgfGBsb2dzYHxgY29tcGxldGVkYClcbiAgICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFib3J0U2lnbmFsIHRvIGNhbmNlbCB0aGUgcHJlZGljdGlvblxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJvZ3Jlc3NdIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyB0aGUgcHJlZGljdGlvbiBvYmplY3QgYXMgaXQncyB1cGRhdGVkLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHByZWRpY3Rpb24gaXMgY3JlYXRlZCwgZWFjaCB0aW1lIGl0cyB1cGRhdGVkIHdoaWxlIHBvbGxpbmcgZm9yIGNvbXBsZXRpb24sIGFuZCB3aGVuIGl0J3MgY29tcGxldGVkLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHJlZmVyZW5jZSBpcyBpbnZhbGlkXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgcHJlZGljdGlvbiBmYWlsZWRcbiAgICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgcnVubmluZyB0aGUgbW9kZWxcbiAgICovXG4gIGFzeW5jIHJ1bihyZWYsIG9wdGlvbnMsIHByb2dyZXNzKSB7XG4gICAgY29uc3QgeyB3YWl0ID0geyBtb2RlOiBcImJsb2NrXCIgfSwgc2lnbmFsLCAuLi5kYXRhIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgaWRlbnRpZmllciA9IE1vZGVsVmVyc2lvbklkZW50aWZpZXIucGFyc2UocmVmKTtcblxuICAgIGxldCBwcmVkaWN0aW9uO1xuICAgIGlmIChpZGVudGlmaWVyLnZlcnNpb24pIHtcbiAgICAgIHByZWRpY3Rpb24gPSBhd2FpdCB0aGlzLnByZWRpY3Rpb25zLmNyZWF0ZSh7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHZlcnNpb246IGlkZW50aWZpZXIudmVyc2lvbixcbiAgICAgICAgd2FpdDogd2FpdC5tb2RlID09PSBcImJsb2NrXCIgPyB3YWl0LnRpbWVvdXQgPz8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpZGVudGlmaWVyLm93bmVyICYmIGlkZW50aWZpZXIubmFtZSkge1xuICAgICAgcHJlZGljdGlvbiA9IGF3YWl0IHRoaXMucHJlZGljdGlvbnMuY3JlYXRlKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgbW9kZWw6IGAke2lkZW50aWZpZXIub3duZXJ9LyR7aWRlbnRpZmllci5uYW1lfWAsXG4gICAgICAgIHdhaXQ6IHdhaXQubW9kZSA9PT0gXCJibG9ja1wiID8gd2FpdC50aW1lb3V0ID8/IHRydWUgOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1vZGVsIHZlcnNpb24gaWRlbnRpZmllclwiKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIHByb2dyZXNzIGNhbGxiYWNrIHdpdGggdGhlIGluaXRpYWwgcHJlZGljdGlvbiBvYmplY3RcbiAgICBpZiAocHJvZ3Jlc3MpIHtcbiAgICAgIHByb2dyZXNzKHByZWRpY3Rpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRG9uZSA9IHdhaXQubW9kZSA9PT0gXCJibG9ja1wiICYmIHByZWRpY3Rpb24uc3RhdHVzICE9PSBcInN0YXJ0aW5nXCI7XG4gICAgaWYgKCFpc0RvbmUpIHtcbiAgICAgIHByZWRpY3Rpb24gPSBhd2FpdCB0aGlzLndhaXQoXG4gICAgICAgIHByZWRpY3Rpb24sXG4gICAgICAgIHsgaW50ZXJ2YWw6IHdhaXQubW9kZSA9PT0gXCJwb2xsXCIgPyB3YWl0LmludGVydmFsIDogdW5kZWZpbmVkIH0sXG4gICAgICAgIGFzeW5jICh1cGRhdGVkUHJlZGljdGlvbikgPT4ge1xuICAgICAgICAgIC8vIENhbGwgcHJvZ3Jlc3MgY2FsbGJhY2sgd2l0aCB0aGUgdXBkYXRlZCBwcmVkaWN0aW9uIG9iamVjdFxuICAgICAgICAgIGlmIChwcm9ncmVzcykge1xuICAgICAgICAgICAgcHJvZ3Jlc3ModXBkYXRlZFByZWRpY3Rpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFdlIGhhbmRsZSB0aGUgY2FuY2VsIGxhdGVyIGluIHRoZSBmdW5jdGlvbi5cbiAgICAgICAgICBpZiAoc2lnbmFsICYmIHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gc3RvcCBwb2xsaW5nXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjb250aW51ZSBwb2xsaW5nXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHNpZ25hbCAmJiBzaWduYWwuYWJvcnRlZCkge1xuICAgICAgcHJlZGljdGlvbiA9IGF3YWl0IHRoaXMucHJlZGljdGlvbnMuY2FuY2VsKHByZWRpY3Rpb24uaWQpO1xuICAgIH1cblxuICAgIC8vIENhbGwgcHJvZ3Jlc3MgY2FsbGJhY2sgd2l0aCB0aGUgY29tcGxldGVkIHByZWRpY3Rpb24gb2JqZWN0XG4gICAgaWYgKHByb2dyZXNzKSB7XG4gICAgICBwcm9ncmVzcyhwcmVkaWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJlZGljdGlvbi5zdGF0dXMgPT09IFwiZmFpbGVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJlZGljdGlvbiBmYWlsZWQ6ICR7cHJlZGljdGlvbi5lcnJvcn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtKHByZWRpY3Rpb24ub3V0cHV0LCAodmFsdWUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICh2YWx1ZS5zdGFydHNXaXRoKFwiaHR0cHM6XCIpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VGaWxlT3V0cHV0XG4gICAgICAgICAgPyBjcmVhdGVGaWxlT3V0cHV0KHsgdXJsOiB2YWx1ZSwgZmV0Y2g6IHRoaXMuZmV0Y2ggfSlcbiAgICAgICAgICA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYSByZXF1ZXN0IHRvIHRoZSBSZXBsaWNhdGUgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcm91dGUgLSBSRVNUIEFQSSBlbmRwb2ludCBwYXRoXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gUmVxdWVzdCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5tZXRob2RdIC0gSFRUUCBtZXRob2QuIERlZmF1bHRzIHRvIEdFVFxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnMucGFyYW1zXSAtIFF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtvYmplY3R8SGVhZGVyc30gW29wdGlvbnMuaGVhZGVyc10gLSBIVFRQIGhlYWRlcnNcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zLmRhdGFdIC0gQm9keSBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBYm9ydFNpZ25hbCB0byBjYW5jZWwgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8UmVzcG9uc2U+fSAtIFJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIG9iamVjdFxuICAgKiBAdGhyb3dzIHtBcGlFcnJvcn0gSWYgdGhlIHJlcXVlc3QgZmFpbGVkXG4gICAqL1xuICBhc3luYyByZXF1ZXN0KHJvdXRlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyBhdXRoLCBiYXNlVXJsLCB1c2VyQWdlbnQgfSA9IHRoaXM7XG5cbiAgICBsZXQgdXJsO1xuICAgIGlmIChyb3V0ZSBpbnN0YW5jZW9mIFVSTCkge1xuICAgICAgdXJsID0gcm91dGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCA9IG5ldyBVUkwoXG4gICAgICAgIHJvdXRlLnN0YXJ0c1dpdGgoXCIvXCIpID8gcm91dGUuc2xpY2UoMSkgOiByb3V0ZSxcbiAgICAgICAgYmFzZVVybC5lbmRzV2l0aChcIi9cIikgPyBiYXNlVXJsIDogYCR7YmFzZVVybH0vYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG1ldGhvZCA9IFwiR0VUXCIsIHBhcmFtcyA9IHt9LCBkYXRhLCBzaWduYWwgfSA9IG9wdGlvbnM7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICBcIlVzZXItQWdlbnRcIjogdXNlckFnZW50LFxuICAgIH07XG4gICAgaWYgKGF1dGgpIHtcbiAgICAgIGhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEJlYXJlciAke2F1dGh9YDtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaGVhZGVycykge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucy5oZWFkZXJzKSkge1xuICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgYm9keSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgICBib2R5ID0gZGF0YTtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3BlcmZvcm1hbmNlL25vRGVsZXRlOlxuICAgICAgZGVsZXRlIGhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl07IC8vIFVzZSBhdXRvbWF0aWMgY29udGVudCB0eXBlIGhlYWRlclxuICAgIH0gZWxzZSBpZiAoZGF0YSkge1xuICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXQgPSB7XG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keSxcbiAgICAgIHNpZ25hbCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2hvdWxkUmV0cnkgPVxuICAgICAgbWV0aG9kID09PSBcIkdFVFwiXG4gICAgICAgID8gKHJlc3BvbnNlKSA9PiByZXNwb25zZS5zdGF0dXMgPT09IDQyOSB8fCByZXNwb25zZS5zdGF0dXMgPj0gNTAwXG4gICAgICAgIDogKHJlc3BvbnNlKSA9PiByZXNwb25zZS5zdGF0dXMgPT09IDQyOTtcblxuICAgIC8vIFdvcmthcm91bmQgdG8gZml4IGBUeXBlRXJyb3I6IElsbGVnYWwgaW52b2NhdGlvbmAgZXJyb3IgaW4gQ2xvdWRmbGFyZSBXb3JrZXJzXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlcGxpY2F0ZS9yZXBsaWNhdGUtamF2YXNjcmlwdC9pc3N1ZXMvMTM0XG4gICAgY29uc3QgX2ZldGNoID0gdGhpcy5mZXRjaDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgd2l0aEF1dG9tYXRpY1JldHJpZXMoYXN5bmMgKCkgPT4gX2ZldGNoKHVybCwgaW5pdCksIHtcbiAgICAgIHNob3VsZFJldHJ5LFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwgaW5pdCk7XG4gICAgICBjb25zdCByZXNwb25zZVRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICB0aHJvdyBuZXcgQXBpRXJyb3IoXG4gICAgICAgIGBSZXF1ZXN0IHRvICR7dXJsfSBmYWlsZWQgd2l0aCBzdGF0dXMgJHtyZXNwb25zZS5zdGF0dXN9ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH06ICR7cmVzcG9uc2VUZXh0fS5gLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICByZXNwb25zZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIGEgbW9kZWwgYW5kIHdhaXQgZm9yIGl0cyBvdXRwdXQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGlmaWVyIC0gUmVxdWlyZWQuIFRoZSBtb2RlbCB2ZXJzaW9uIGlkZW50aWZpZXIgaW4gdGhlIGZvcm1hdCBcIntvd25lcn0ve25hbWV9Ont2ZXJzaW9ufVwiXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLmlucHV0IC0gUmVxdWlyZWQuIEFuIG9iamVjdCB3aXRoIHRoZSBtb2RlbCBpbnB1dHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLndlYmhvb2tdIC0gQW4gSFRUUFMgVVJMIGZvciByZWNlaXZpbmcgYSB3ZWJob29rIHdoZW4gdGhlIHByZWRpY3Rpb24gaGFzIG5ldyBvdXRwdXRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW29wdGlvbnMud2ViaG9va19ldmVudHNfZmlsdGVyXSAtIFlvdSBjYW4gY2hhbmdlIHdoaWNoIGV2ZW50cyB0cmlnZ2VyIHdlYmhvb2sgcmVxdWVzdHMgYnkgc3BlY2lmeWluZyB3ZWJob29rIGV2ZW50cyAoYHN0YXJ0YHxgb3V0cHV0YHxgbG9nc2B8YGNvbXBsZXRlZGApXG4gICAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBYm9ydFNpZ25hbCB0byBjYW5jZWwgdGhlIHByZWRpY3Rpb25cbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwcmVkaWN0aW9uIGZhaWxlZFxuICAgKiBAeWllbGRzIHtTZXJ2ZXJTZW50RXZlbnR9IEVhY2ggc3RyZWFtZWQgZXZlbnQgZnJvbSB0aGUgcHJlZGljdGlvblxuICAgKi9cbiAgYXN5bmMgKnN0cmVhbShyZWYsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7XG4gICAgICB3YWl0LFxuICAgICAgc2lnbmFsLFxuICAgICAgdXNlRmlsZU91dHB1dCA9IHRoaXMudXNlRmlsZU91dHB1dCxcbiAgICAgIC4uLmRhdGFcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBNb2RlbFZlcnNpb25JZGVudGlmaWVyLnBhcnNlKHJlZik7XG5cbiAgICBsZXQgcHJlZGljdGlvbjtcbiAgICBpZiAoaWRlbnRpZmllci52ZXJzaW9uKSB7XG4gICAgICBwcmVkaWN0aW9uID0gYXdhaXQgdGhpcy5wcmVkaWN0aW9ucy5jcmVhdGUoe1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICB2ZXJzaW9uOiBpZGVudGlmaWVyLnZlcnNpb24sXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlkZW50aWZpZXIub3duZXIgJiYgaWRlbnRpZmllci5uYW1lKSB7XG4gICAgICBwcmVkaWN0aW9uID0gYXdhaXQgdGhpcy5wcmVkaWN0aW9ucy5jcmVhdGUoe1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBtb2RlbDogYCR7aWRlbnRpZmllci5vd25lcn0vJHtpZGVudGlmaWVyLm5hbWV9YCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1vZGVsIHZlcnNpb24gaWRlbnRpZmllclwiKTtcbiAgICB9XG5cbiAgICBpZiAocHJlZGljdGlvbi51cmxzICYmIHByZWRpY3Rpb24udXJscy5zdHJlYW0pIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGNyZWF0ZVJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgdXJsOiBwcmVkaWN0aW9uLnVybHMuc3RyZWFtLFxuICAgICAgICBmZXRjaDogdGhpcy5mZXRjaCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHVzZUZpbGVPdXRwdXQsXG4gICAgICAgICAgLi4uKHNpZ25hbCA/IHsgc2lnbmFsIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgeWllbGQqIHN0cmVhbUFzeW5jSXRlcmF0b3Ioc3RyZWFtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUHJlZGljdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHN0cmVhbWluZ1wiKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFnaW5hdGUgdGhyb3VnaCBhIGxpc3Qgb2YgcmVzdWx0cy5cbiAgICpcbiAgICogQGdlbmVyYXRvclxuICAgKiBAZXhhbXBsZVxuICAgKiBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgcmVwbGljYXRlLnBhZ2luYXRlKHJlcGxpY2F0ZS5wcmVkaWN0aW9ucy5saXN0KSB7XG4gICAqICAgIGNvbnNvbGUubG9nKHBhZ2UpO1xuICAgKiB9XG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGVuZHBvaW50IC0gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAgICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFib3J0U2lnbmFsIHRvIGNhbmNlbCB0aGUgcmVxdWVzdC5cbiAgICogQHlpZWxkcyB7b2JqZWN0W119IEVhY2ggcGFnZSBvZiByZXN1bHRzXG4gICAqL1xuICBhc3luYyAqcGFnaW5hdGUoZW5kcG9pbnQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZW5kcG9pbnQoKTtcbiAgICB5aWVsZCByZXNwb25zZS5yZXN1bHRzO1xuICAgIGlmIChyZXNwb25zZS5uZXh0ICYmICEob3B0aW9ucy5zaWduYWwgJiYgb3B0aW9ucy5zaWduYWwuYWJvcnRlZCkpIHtcbiAgICAgIGNvbnN0IG5leHRQYWdlID0gKCkgPT5cbiAgICAgICAgdGhpcy5yZXF1ZXN0KHJlc3BvbnNlLm5leHQsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgc2lnbmFsOiBvcHRpb25zLnNpZ25hbCxcbiAgICAgICAgfSkudGhlbigocikgPT4gci5qc29uKCkpO1xuICAgICAgeWllbGQqIHRoaXMucGFnaW5hdGUobmV4dFBhZ2UsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0IGZvciBhIHByZWRpY3Rpb24gdG8gZmluaXNoLlxuICAgKlxuICAgKiBJZiB0aGUgcHJlZGljdGlvbiBoYXMgYWxyZWFkeSBmaW5pc2hlZCxcbiAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5LlxuICAgKiBPdGhlcndpc2UsIGl0IHBvbGxzIHRoZSBBUEkgdW50aWwgdGhlIHByZWRpY3Rpb24gZmluaXNoZXMuXG4gICAqXG4gICAqIEBhc3luY1xuICAgKiBAcGFyYW0ge29iamVjdH0gcHJlZGljdGlvbiAtIFByZWRpY3Rpb24gb2JqZWN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gT3B0aW9uc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuaW50ZXJ2YWxdIC0gUG9sbGluZyBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHRzIHRvIDUwMFxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3RvcF0gLSBBc3luYyBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBhZnRlciBlYWNoIHBvbGxpbmcgYXR0ZW1wdC4gUmVjZWl2ZXMgdGhlIHByZWRpY3Rpb24gb2JqZWN0IGFzIGFuIGFyZ3VtZW50LiBSZXR1cm4gZmFsc2UgdG8gY2FuY2VsIHBvbGxpbmcuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgcHJlZGljdGlvbiBkb2Vzbid0IGNvbXBsZXRlIHdpdGhpbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgYXR0ZW1wdHNcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwcmVkaWN0aW9uIGZhaWxlZFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBjb21wbGV0ZWQgcHJlZGljdGlvbiBvYmplY3RcbiAgICovXG4gIGFzeW5jIHdhaXQocHJlZGljdGlvbiwgb3B0aW9ucywgc3RvcCkge1xuICAgIGNvbnN0IHsgaWQgfSA9IHByZWRpY3Rpb247XG4gICAgaWYgKCFpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwcmVkaWN0aW9uXCIpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByZWRpY3Rpb24uc3RhdHVzID09PSBcInN1Y2NlZWRlZFwiIHx8XG4gICAgICBwcmVkaWN0aW9uLnN0YXR1cyA9PT0gXCJmYWlsZWRcIiB8fFxuICAgICAgcHJlZGljdGlvbi5zdGF0dXMgPT09IFwiY2FuY2VsZWRcIlxuICAgICkge1xuICAgICAgcmV0dXJuIHByZWRpY3Rpb247XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuXG4gICAgY29uc3Qgc2xlZXAgPSAobXMpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IChvcHRpb25zICYmIG9wdGlvbnMuaW50ZXJ2YWwpIHx8IDUwMDtcblxuICAgIGxldCB1cGRhdGVkUHJlZGljdGlvbiA9IGF3YWl0IHRoaXMucHJlZGljdGlvbnMuZ2V0KGlkKTtcblxuICAgIHdoaWxlIChcbiAgICAgIHVwZGF0ZWRQcmVkaWN0aW9uLnN0YXR1cyAhPT0gXCJzdWNjZWVkZWRcIiAmJlxuICAgICAgdXBkYXRlZFByZWRpY3Rpb24uc3RhdHVzICE9PSBcImZhaWxlZFwiICYmXG4gICAgICB1cGRhdGVkUHJlZGljdGlvbi5zdGF0dXMgIT09IFwiY2FuY2VsZWRcIlxuICAgICkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuICAgICAgaWYgKHN0b3AgJiYgKGF3YWl0IHN0b3AodXBkYXRlZFByZWRpY3Rpb24pKSA9PT0gdHJ1ZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2xlZXAoaW50ZXJ2YWwpO1xuICAgICAgdXBkYXRlZFByZWRpY3Rpb24gPSBhd2FpdCB0aGlzLnByZWRpY3Rpb25zLmdldChwcmVkaWN0aW9uLmlkKTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVkUHJlZGljdGlvbi5zdGF0dXMgPT09IFwiZmFpbGVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJlZGljdGlvbiBmYWlsZWQ6ICR7dXBkYXRlZFByZWRpY3Rpb24uZXJyb3J9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZWRQcmVkaWN0aW9uO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVwbGljYXRlO1xubW9kdWxlLmV4cG9ydHMudmFsaWRhdGVXZWJob29rID0gdmFsaWRhdGVXZWJob29rO1xubW9kdWxlLmV4cG9ydHMucGFyc2VQcm9ncmVzc0Zyb21Mb2dzID0gcGFyc2VQcm9ncmVzc0Zyb21Mb2dzO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/accounts.js":
|
|
/*!***********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/accounts.js ***!
|
|
\***********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * Get the current account\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the current account\n */\nasync function getCurrentAccount({ signal } = {}) {\n const response = await this.request(\"/account\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = {\n current: getCurrentAccount,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2FjY291bnRzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSxtQ0FBbUMsU0FBUyxJQUFJO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2FjY291bnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2V0IHRoZSBjdXJyZW50IGFjY291bnRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IFJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgYWNjb3VudFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50QWNjb3VudCh7IHNpZ25hbCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoXCIvYWNjb3VudFwiLCB7XG4gICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgIHNpZ25hbCxcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGN1cnJlbnQ6IGdldEN1cnJlbnRBY2NvdW50LFxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/accounts.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/collections.js":
|
|
/*!**************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/collections.js ***!
|
|
\**************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * Fetch a model collection\n *\n * @param {string} collection_slug - Required. The slug of the collection. See http://replicate.com/collections\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with the collection data\n */\nasync function getCollection(collection_slug, { signal } = {}) {\n const response = await this.request(`/collections/${collection_slug}`, {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * Fetch a list of model collections\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with the collections data\n */\nasync function listCollections({ signal } = {}) {\n const response = await this.request(\"/collections\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = { get: getCollection, list: listCollections };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2NvbGxlY3Rpb25zLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0EsZ0RBQWdELFNBQVMsSUFBSTtBQUM3RCxzREFBc0QsZ0JBQWdCO0FBQ3RFO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGlCQUFpQjtBQUM5QjtBQUNBLGlDQUFpQyxTQUFTLElBQUk7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBLG1CQUFtQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9yZXBsaWNhdGVAMS40LjAvbm9kZV9tb2R1bGVzL3JlcGxpY2F0ZS9saWIvY29sbGVjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGZXRjaCBhIG1vZGVsIGNvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sbGVjdGlvbl9zbHVnIC0gUmVxdWlyZWQuIFRoZSBzbHVnIG9mIHRoZSBjb2xsZWN0aW9uLiBTZWUgaHR0cDovL3JlcGxpY2F0ZS5jb20vY29sbGVjdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBjb2xsZWN0aW9uIGRhdGFcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbihjb2xsZWN0aW9uX3NsdWcsIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChgL2NvbGxlY3Rpb25zLyR7Y29sbGVjdGlvbl9zbHVnfWAsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG4vKipcbiAqIEZldGNoIGEgbGlzdCBvZiBtb2RlbCBjb2xsZWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBjb2xsZWN0aW9ucyBkYXRhXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxpc3RDb2xsZWN0aW9ucyh7IHNpZ25hbCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoXCIvY29sbGVjdGlvbnNcIiwge1xuICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICBzaWduYWwsXG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBnZXQ6IGdldENvbGxlY3Rpb24sIGxpc3Q6IGxpc3RDb2xsZWN0aW9ucyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/collections.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/deployments.js":
|
|
/*!**************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/deployments.js ***!
|
|
\**************************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("const { transformFileInputs } = __webpack_require__(/*! ./util */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/util.js\");\n\n/**\n * Create a new prediction with a deployment\n *\n * @param {string} deployment_owner - Required. The username of the user or organization who owns the deployment\n * @param {string} deployment_name - Required. The name of the deployment\n * @param {object} options\n * @param {object} options.input - Required. An object with the model inputs\n * @param {string} [options.webhook] - An HTTPS URL for receiving a webhook when the prediction has new output\n * @param {string[]} [options.webhook_events_filter] - You can change which events trigger webhook requests by specifying webhook events (`start`|`output`|`logs`|`completed`)\n * @param {boolean|integer} [options.wait] - Whether to wait until the prediction is completed before returning. If an integer is provided, it will wait for that many seconds. Defaults to false\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the created prediction data\n */\nasync function createPrediction(deployment_owner, deployment_name, options) {\n const { input, wait, signal, ...data } = options;\n\n if (data.webhook) {\n try {\n // eslint-disable-next-line no-new\n new URL(data.webhook);\n } catch (err) {\n throw new Error(\"Invalid webhook URL\");\n }\n }\n\n const headers = {};\n if (wait) {\n if (typeof wait === \"number\") {\n const n = Math.max(1, Math.ceil(Number(wait)) || 1);\n headers[\"Prefer\"] = `wait=${n}`;\n } else {\n headers[\"Prefer\"] = \"wait\";\n }\n }\n\n const response = await this.request(\n `/deployments/${deployment_owner}/${deployment_name}/predictions`,\n {\n method: \"POST\",\n headers,\n data: {\n ...data,\n input: await transformFileInputs(\n this,\n input,\n this.fileEncodingStrategy\n ),\n },\n signal,\n }\n );\n\n return response.json();\n}\n\n/**\n * Get a deployment\n *\n * @param {string} deployment_owner - Required. The username of the user or organization who owns the deployment\n * @param {string} deployment_name - Required. The name of the deployment\n * @param {object] [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the deployment data\n */\nasync function getDeployment(\n deployment_owner,\n deployment_name,\n { signal } = {}\n) {\n const response = await this.request(\n `/deployments/${deployment_owner}/${deployment_name}`,\n {\n method: \"GET\",\n signal,\n }\n );\n\n return response.json();\n}\n\n/**\n * @typedef {Object} DeploymentCreateRequest - Request body for `deployments.create`\n * @property {string} name - the name of the deployment\n * @property {string} model - the full name of the model that you want to deploy e.g. stability-ai/sdxl\n * @property {string} version - the 64-character string ID of the model version that you want to deploy\n * @property {string} hardware - the SKU for the hardware used to run the model, via `replicate.hardware.list()`\n * @property {number} min_instances - the minimum number of instances for scaling\n * @property {number} max_instances - the maximum number of instances for scaling\n */\n\n/**\n * Create a deployment\n *\n * @param {DeploymentCreateRequest} deployment_config - Required. The deployment config.\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the deployment data\n */\nasync function createDeployment(deployment_config, { signal } = {}) {\n const response = await this.request(\"/deployments\", {\n method: \"POST\",\n data: deployment_config,\n signal,\n });\n\n return response.json();\n}\n\n/**\n * @typedef {Object} DeploymentUpdateRequest - Request body for `deployments.update`\n * @property {string} version - the 64-character string ID of the model version that you want to deploy\n * @property {string} hardware - the SKU for the hardware used to run the model, via `replicate.hardware.list()`\n * @property {number} min_instances - the minimum number of instances for scaling\n * @property {number} max_instances - the maximum number of instances for scaling\n */\n\n/**\n * Update an existing deployment\n *\n * @param {string} deployment_owner - Required. The username of the user or organization who owns the deployment\n * @param {string} deployment_name - Required. The name of the deployment\n * @param {DeploymentUpdateRequest} deployment_config - Required. The deployment changes.\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the deployment data\n */\nasync function updateDeployment(\n deployment_owner,\n deployment_name,\n deployment_config,\n { signal } = {}\n) {\n const response = await this.request(\n `/deployments/${deployment_owner}/${deployment_name}`,\n {\n method: \"PATCH\",\n data: deployment_config,\n signal,\n }\n );\n\n return response.json();\n}\n\n/**\n * Delete a deployment\n *\n * @param {string} deployment_owner - Required. The username of the user or organization who owns the deployment\n * @param {string} deployment_name - Required. The name of the deployment\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<boolean>} Resolves with true if the deployment was deleted\n */\nasync function deleteDeployment(\n deployment_owner,\n deployment_name,\n { signal } = {}\n) {\n const response = await this.request(\n `/deployments/${deployment_owner}/${deployment_name}`,\n {\n method: \"DELETE\",\n signal,\n }\n );\n\n return response.status === 204;\n}\n\n/**\n * List all deployments\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with a page of deployments\n */\nasync function listDeployments({ signal } = {}) {\n const response = await this.request(\"/deployments\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = {\n predictions: {\n create: createPrediction,\n },\n get: getDeployment,\n create: createDeployment,\n update: updateDeployment,\n list: listDeployments,\n delete: deleteDeployment,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2RlcGxveW1lbnRzLmpzIiwibWFwcGluZ3MiOiJBQUFBLFFBQVEsc0JBQXNCLEVBQUUsbUJBQU8sQ0FBQyw2RkFBUTs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsV0FBVyxpQkFBaUI7QUFDNUIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0E7QUFDQSxVQUFVLCtCQUErQjs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEVBQUU7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixpQkFBaUIsR0FBRyxnQkFBZ0I7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXO0FBQ1gsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTO0FBQ2I7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUIsR0FBRyxnQkFBZ0I7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSxxREFBcUQsU0FBUyxJQUFJO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsUUFBUTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcseUJBQXlCO0FBQ3BDLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUztBQUNiO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCLEdBQUcsZ0JBQWdCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUztBQUNiO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCLEdBQUcsZ0JBQWdCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0EsaUNBQWlDLFNBQVMsSUFBSTtBQUM5QztBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9yZXBsaWNhdGVAMS40LjAvbm9kZV9tb2R1bGVzL3JlcGxpY2F0ZS9saWIvZGVwbG95bWVudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyB0cmFuc2Zvcm1GaWxlSW5wdXRzIH0gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBwcmVkaWN0aW9uIHdpdGggYSBkZXBsb3ltZW50XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRlcGxveW1lbnRfb3duZXIgLSBSZXF1aXJlZC4gVGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyIG9yIG9yZ2FuaXphdGlvbiB3aG8gb3ducyB0aGUgZGVwbG95bWVudFxuICogQHBhcmFtIHtzdHJpbmd9IGRlcGxveW1lbnRfbmFtZSAtIFJlcXVpcmVkLiBUaGUgbmFtZSBvZiB0aGUgZGVwbG95bWVudFxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLmlucHV0IC0gUmVxdWlyZWQuIEFuIG9iamVjdCB3aXRoIHRoZSBtb2RlbCBpbnB1dHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy53ZWJob29rXSAtIEFuIEhUVFBTIFVSTCBmb3IgcmVjZWl2aW5nIGEgd2ViaG9vayB3aGVuIHRoZSBwcmVkaWN0aW9uIGhhcyBuZXcgb3V0cHV0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3B0aW9ucy53ZWJob29rX2V2ZW50c19maWx0ZXJdIC0gWW91IGNhbiBjaGFuZ2Ugd2hpY2ggZXZlbnRzIHRyaWdnZXIgd2ViaG9vayByZXF1ZXN0cyBieSBzcGVjaWZ5aW5nIHdlYmhvb2sgZXZlbnRzIChgc3RhcnRgfGBvdXRwdXRgfGBsb2dzYHxgY29tcGxldGVkYClcbiAqIEBwYXJhbSB7Ym9vbGVhbnxpbnRlZ2VyfSBbb3B0aW9ucy53YWl0XSAtIFdoZXRoZXIgdG8gd2FpdCB1bnRpbCB0aGUgcHJlZGljdGlvbiBpcyBjb21wbGV0ZWQgYmVmb3JlIHJldHVybmluZy4gSWYgYW4gaW50ZWdlciBpcyBwcm92aWRlZCwgaXQgd2lsbCB3YWl0IGZvciB0aGF0IG1hbnkgc2Vjb25kcy4gRGVmYXVsdHMgdG8gZmFsc2VcbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gUmVzb2x2ZXMgd2l0aCB0aGUgY3JlYXRlZCBwcmVkaWN0aW9uIGRhdGFcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUHJlZGljdGlvbihkZXBsb3ltZW50X293bmVyLCBkZXBsb3ltZW50X25hbWUsIG9wdGlvbnMpIHtcbiAgY29uc3QgeyBpbnB1dCwgd2FpdCwgc2lnbmFsLCAuLi5kYXRhIH0gPSBvcHRpb25zO1xuXG4gIGlmIChkYXRhLndlYmhvb2spIHtcbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ld1xuICAgICAgbmV3IFVSTChkYXRhLndlYmhvb2spO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB3ZWJob29rIFVSTFwiKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoZWFkZXJzID0ge307XG4gIGlmICh3YWl0KSB7XG4gICAgaWYgKHR5cGVvZiB3YWl0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICBjb25zdCBuID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKE51bWJlcih3YWl0KSkgfHwgMSk7XG4gICAgICBoZWFkZXJzW1wiUHJlZmVyXCJdID0gYHdhaXQ9JHtufWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWRlcnNbXCJQcmVmZXJcIl0gPSBcIndhaXRcIjtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICBgL2RlcGxveW1lbnRzLyR7ZGVwbG95bWVudF9vd25lcn0vJHtkZXBsb3ltZW50X25hbWV9L3ByZWRpY3Rpb25zYCxcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaW5wdXQ6IGF3YWl0IHRyYW5zZm9ybUZpbGVJbnB1dHMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICB0aGlzLmZpbGVFbmNvZGluZ1N0cmF0ZWd5XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgc2lnbmFsLFxuICAgIH1cbiAgKTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG4vKipcbiAqIEdldCBhIGRlcGxveW1lbnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVwbG95bWVudF9vd25lciAtIFJlcXVpcmVkLiBUaGUgdXNlcm5hbWUgb2YgdGhlIHVzZXIgb3Igb3JnYW5pemF0aW9uIHdobyBvd25zIHRoZSBkZXBsb3ltZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gZGVwbG95bWVudF9uYW1lIC0gUmVxdWlyZWQuIFRoZSBuYW1lIG9mIHRoZSBkZXBsb3ltZW50XG4gKiBAcGFyYW0ge29iamVjdF0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IFJlc29sdmVzIHdpdGggdGhlIGRlcGxveW1lbnQgZGF0YVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXREZXBsb3ltZW50KFxuICBkZXBsb3ltZW50X293bmVyLFxuICBkZXBsb3ltZW50X25hbWUsXG4gIHsgc2lnbmFsIH0gPSB7fVxuKSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFxuICAgIGAvZGVwbG95bWVudHMvJHtkZXBsb3ltZW50X293bmVyfS8ke2RlcGxveW1lbnRfbmFtZX1gLFxuICAgIHtcbiAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgIHNpZ25hbCxcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXBsb3ltZW50Q3JlYXRlUmVxdWVzdCAtIFJlcXVlc3QgYm9keSBmb3IgYGRlcGxveW1lbnRzLmNyZWF0ZWBcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIGRlcGxveW1lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtb2RlbCAtIHRoZSBmdWxsIG5hbWUgb2YgdGhlIG1vZGVsIHRoYXQgeW91IHdhbnQgdG8gZGVwbG95IGUuZy4gc3RhYmlsaXR5LWFpL3NkeGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uIC0gdGhlIDY0LWNoYXJhY3RlciBzdHJpbmcgSUQgb2YgdGhlIG1vZGVsIHZlcnNpb24gdGhhdCB5b3Ugd2FudCB0byBkZXBsb3lcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBoYXJkd2FyZSAtIHRoZSBTS1UgZm9yIHRoZSBoYXJkd2FyZSB1c2VkIHRvIHJ1biB0aGUgbW9kZWwsIHZpYSBgcmVwbGljYXRlLmhhcmR3YXJlLmxpc3QoKWBcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtaW5faW5zdGFuY2VzIC0gdGhlIG1pbmltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyBmb3Igc2NhbGluZ1xuICogQHByb3BlcnR5IHtudW1iZXJ9IG1heF9pbnN0YW5jZXMgLSB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW5zdGFuY2VzIGZvciBzY2FsaW5nXG4gKi9cblxuLyoqXG4gKiBDcmVhdGUgYSBkZXBsb3ltZW50XG4gKlxuICogQHBhcmFtIHtEZXBsb3ltZW50Q3JlYXRlUmVxdWVzdH0gZGVwbG95bWVudF9jb25maWcgLSBSZXF1aXJlZC4gVGhlIGRlcGxveW1lbnQgY29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBkZXBsb3ltZW50IGRhdGFcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVwbG95bWVudChkZXBsb3ltZW50X2NvbmZpZywgeyBzaWduYWwgfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiL2RlcGxveW1lbnRzXCIsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGRhdGE6IGRlcGxveW1lbnRfY29uZmlnLFxuICAgIHNpZ25hbCxcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXBsb3ltZW50VXBkYXRlUmVxdWVzdCAtIFJlcXVlc3QgYm9keSBmb3IgYGRlcGxveW1lbnRzLnVwZGF0ZWBcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uIC0gdGhlIDY0LWNoYXJhY3RlciBzdHJpbmcgSUQgb2YgdGhlIG1vZGVsIHZlcnNpb24gdGhhdCB5b3Ugd2FudCB0byBkZXBsb3lcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBoYXJkd2FyZSAtIHRoZSBTS1UgZm9yIHRoZSBoYXJkd2FyZSB1c2VkIHRvIHJ1biB0aGUgbW9kZWwsIHZpYSBgcmVwbGljYXRlLmhhcmR3YXJlLmxpc3QoKWBcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtaW5faW5zdGFuY2VzIC0gdGhlIG1pbmltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyBmb3Igc2NhbGluZ1xuICogQHByb3BlcnR5IHtudW1iZXJ9IG1heF9pbnN0YW5jZXMgLSB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW5zdGFuY2VzIGZvciBzY2FsaW5nXG4gKi9cblxuLyoqXG4gKiBVcGRhdGUgYW4gZXhpc3RpbmcgZGVwbG95bWVudFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXBsb3ltZW50X293bmVyIC0gUmVxdWlyZWQuIFRoZSB1c2VybmFtZSBvZiB0aGUgdXNlciBvciBvcmdhbml6YXRpb24gd2hvIG93bnMgdGhlIGRlcGxveW1lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXBsb3ltZW50X25hbWUgLSBSZXF1aXJlZC4gVGhlIG5hbWUgb2YgdGhlIGRlcGxveW1lbnRcbiAqIEBwYXJhbSB7RGVwbG95bWVudFVwZGF0ZVJlcXVlc3R9IGRlcGxveW1lbnRfY29uZmlnIC0gUmVxdWlyZWQuIFRoZSBkZXBsb3ltZW50IGNoYW5nZXMuXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IFJlc29sdmVzIHdpdGggdGhlIGRlcGxveW1lbnQgZGF0YVxuICovXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVEZXBsb3ltZW50KFxuICBkZXBsb3ltZW50X293bmVyLFxuICBkZXBsb3ltZW50X25hbWUsXG4gIGRlcGxveW1lbnRfY29uZmlnLFxuICB7IHNpZ25hbCB9ID0ge31cbikge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICBgL2RlcGxveW1lbnRzLyR7ZGVwbG95bWVudF9vd25lcn0vJHtkZXBsb3ltZW50X25hbWV9YCxcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiUEFUQ0hcIixcbiAgICAgIGRhdGE6IGRlcGxveW1lbnRfY29uZmlnLFxuICAgICAgc2lnbmFsLFxuICAgIH1cbiAgKTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG4vKipcbiAqIERlbGV0ZSBhIGRlcGxveW1lbnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVwbG95bWVudF9vd25lciAtIFJlcXVpcmVkLiBUaGUgdXNlcm5hbWUgb2YgdGhlIHVzZXIgb3Igb3JnYW5pemF0aW9uIHdobyBvd25zIHRoZSBkZXBsb3ltZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gZGVwbG95bWVudF9uYW1lIC0gUmVxdWlyZWQuIFRoZSBuYW1lIG9mIHRoZSBkZXBsb3ltZW50XG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBSZXNvbHZlcyB3aXRoIHRydWUgaWYgdGhlIGRlcGxveW1lbnQgd2FzIGRlbGV0ZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlRGVwbG95bWVudChcbiAgZGVwbG95bWVudF9vd25lcixcbiAgZGVwbG95bWVudF9uYW1lLFxuICB7IHNpZ25hbCB9ID0ge31cbikge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICBgL2RlcGxveW1lbnRzLyR7ZGVwbG95bWVudF9vd25lcn0vJHtkZXBsb3ltZW50X25hbWV9YCxcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiREVMRVRFXCIsXG4gICAgICBzaWduYWwsXG4gICAgfVxuICApO1xuXG4gIHJldHVybiByZXNwb25zZS5zdGF0dXMgPT09IDIwNDtcbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBkZXBsb3ltZW50c1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gLSBSZXNvbHZlcyB3aXRoIGEgcGFnZSBvZiBkZXBsb3ltZW50c1xuICovXG5hc3luYyBmdW5jdGlvbiBsaXN0RGVwbG95bWVudHMoeyBzaWduYWwgfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiL2RlcGxveW1lbnRzXCIsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcHJlZGljdGlvbnM6IHtcbiAgICBjcmVhdGU6IGNyZWF0ZVByZWRpY3Rpb24sXG4gIH0sXG4gIGdldDogZ2V0RGVwbG95bWVudCxcbiAgY3JlYXRlOiBjcmVhdGVEZXBsb3ltZW50LFxuICB1cGRhdGU6IHVwZGF0ZURlcGxveW1lbnQsXG4gIGxpc3Q6IGxpc3REZXBsb3ltZW50cyxcbiAgZGVsZXRlOiBkZWxldGVEZXBsb3ltZW50LFxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/deployments.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/error.js":
|
|
/*!********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/error.js ***!
|
|
\********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * A representation of an API error.\n */\nclass ApiError extends Error {\n /**\n * Creates a representation of an API error.\n *\n * @param {string} message - Error message\n * @param {Request} request - HTTP request\n * @param {Response} response - HTTP response\n * @returns {ApiError} - An instance of ApiError\n */\n constructor(message, request, response) {\n super(message);\n this.name = \"ApiError\";\n this.request = request;\n this.response = response;\n }\n}\n\nmodule.exports = ApiError;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2Vycm9yLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsU0FBUztBQUN0QixhQUFhLFVBQVU7QUFDdkIsZUFBZSxVQUFVO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2Vycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhbiBBUEkgZXJyb3IuXG4gKi9cbmNsYXNzIEFwaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBhIHJlcHJlc2VudGF0aW9uIG9mIGFuIEFQSSBlcnJvci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSB7UmVxdWVzdH0gcmVxdWVzdCAtIEhUVFAgcmVxdWVzdFxuICAgKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNwb25zZSAtIEhUVFAgcmVzcG9uc2VcbiAgICogQHJldHVybnMge0FwaUVycm9yfSAtIEFuIGluc3RhbmNlIG9mIEFwaUVycm9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiQXBpRXJyb3JcIjtcbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0O1xuICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFwaUVycm9yO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/error.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/files.js":
|
|
/*!********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/files.js ***!
|
|
\********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * Create a file\n *\n * @param {object} file - Required. The file object.\n * @param {object} metadata - Optional. User-provided metadata associated with the file.\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with the file data\n */\nasync function createFile(file, metadata = {}, { signal } = {}) {\n const form = new FormData();\n\n let filename;\n let blob;\n if (file instanceof Blob) {\n filename = file.name || `blob_${Date.now()}`;\n blob = file;\n } else if (Buffer.isBuffer(file)) {\n filename = `buffer_${Date.now()}`;\n const bytes = new Uint8Array(file);\n blob = new Blob([bytes], {\n type: \"application/octet-stream\",\n name: filename,\n });\n } else {\n throw new Error(\"Invalid file argument, must be a Blob, File or Buffer\");\n }\n\n form.append(\"content\", blob, filename);\n form.append(\n \"metadata\",\n new Blob([JSON.stringify(metadata)], { type: \"application/json\" })\n );\n\n const response = await this.request(\"/files\", {\n method: \"POST\",\n data: form,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n signal,\n });\n\n return response.json();\n}\n\n/**\n * List all files\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with the files data\n */\nasync function listFiles({ signal } = {}) {\n const response = await this.request(\"/files\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * Get a file\n *\n * @param {string} file_id - Required. The ID of the file.\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with the file data\n */\nasync function getFile(file_id, { signal } = {}) {\n const response = await this.request(`/files/${file_id}`, {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * Delete a file\n *\n * @param {string} file_id - Required. The ID of the file.\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<boolean>} - Resolves with true if the file was deleted\n */\nasync function deleteFile(file_id, { signal } = {}) {\n const response = await this.request(`/files/${file_id}`, {\n method: \"DELETE\",\n signal,\n });\n\n return response.status === 204;\n}\n\nmodule.exports = {\n create: createFile,\n list: listFiles,\n get: getFile,\n delete: deleteFile,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2ZpbGVzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGlCQUFpQjtBQUM5QjtBQUNBLDZDQUE2QyxJQUFJLFNBQVMsSUFBSTtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsV0FBVztBQUMvQztBQUNBLElBQUk7QUFDSix5QkFBeUIsV0FBVztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsMEJBQTBCO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGlCQUFpQjtBQUM5QjtBQUNBLDJCQUEyQixTQUFTLElBQUk7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0Esa0NBQWtDLFNBQVMsSUFBSTtBQUMvQyxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0EscUNBQXFDLFNBQVMsSUFBSTtBQUNsRCxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9yZXBsaWNhdGVAMS40LjAvbm9kZV9tb2R1bGVzL3JlcGxpY2F0ZS9saWIvZmlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGUgYSBmaWxlXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGZpbGUgLSBSZXF1aXJlZC4gVGhlIGZpbGUgb2JqZWN0LlxuICogQHBhcmFtIHtvYmplY3R9IG1ldGFkYXRhIC0gT3B0aW9uYWwuIFVzZXItcHJvdmlkZWQgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLlxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSAtIFJlc29sdmVzIHdpdGggdGhlIGZpbGUgZGF0YVxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVGaWxlKGZpbGUsIG1ldGFkYXRhID0ge30sIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgbGV0IGZpbGVuYW1lO1xuICBsZXQgYmxvYjtcbiAgaWYgKGZpbGUgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgZmlsZW5hbWUgPSBmaWxlLm5hbWUgfHwgYGJsb2JfJHtEYXRlLm5vdygpfWA7XG4gICAgYmxvYiA9IGZpbGU7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGZpbGUpKSB7XG4gICAgZmlsZW5hbWUgPSBgYnVmZmVyXyR7RGF0ZS5ub3coKX1gO1xuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoZmlsZSk7XG4gICAgYmxvYiA9IG5ldyBCbG9iKFtieXRlc10sIHtcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIsXG4gICAgICBuYW1lOiBmaWxlbmFtZSxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZpbGUgYXJndW1lbnQsIG11c3QgYmUgYSBCbG9iLCBGaWxlIG9yIEJ1ZmZlclwiKTtcbiAgfVxuXG4gIGZvcm0uYXBwZW5kKFwiY29udGVudFwiLCBibG9iLCBmaWxlbmFtZSk7XG4gIGZvcm0uYXBwZW5kKFxuICAgIFwibWV0YWRhdGFcIixcbiAgICBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KVxuICApO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiL2ZpbGVzXCIsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGRhdGE6IGZvcm0sXG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXG4gICAgfSxcbiAgICBzaWduYWwsXG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICogTGlzdCBhbGwgZmlsZXNcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZmlsZXMgZGF0YVxuICovXG5hc3luYyBmdW5jdGlvbiBsaXN0RmlsZXMoeyBzaWduYWwgfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiL2ZpbGVzXCIsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG4vKipcbiAqIEdldCBhIGZpbGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZV9pZCAtIFJlcXVpcmVkLiBUaGUgSUQgb2YgdGhlIGZpbGUuXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZmlsZSBkYXRhXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEZpbGUoZmlsZV9pZCwgeyBzaWduYWwgfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KGAvZmlsZXMvJHtmaWxlX2lkfWAsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG4vKipcbiAqIERlbGV0ZSBhIGZpbGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZV9pZCAtIFJlcXVpcmVkLiBUaGUgSUQgb2YgdGhlIGZpbGUuXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFJlc29sdmVzIHdpdGggdHJ1ZSBpZiB0aGUgZmlsZSB3YXMgZGVsZXRlZFxuICovXG5hc3luYyBmdW5jdGlvbiBkZWxldGVGaWxlKGZpbGVfaWQsIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChgL2ZpbGVzLyR7ZmlsZV9pZH1gLCB7XG4gICAgbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgIHNpZ25hbCxcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY3JlYXRlOiBjcmVhdGVGaWxlLFxuICBsaXN0OiBsaXN0RmlsZXMsXG4gIGdldDogZ2V0RmlsZSxcbiAgZGVsZXRlOiBkZWxldGVGaWxlLFxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/files.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/hardware.js":
|
|
/*!***********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/hardware.js ***!
|
|
\***********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * List hardware\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object[]>} Resolves with the array of hardware\n */\nasync function listHardware({ signal } = {}) {\n const response = await this.request(\"/hardware\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = {\n list: listHardware,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2hhcmR3YXJlLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxtQkFBbUI7QUFDaEM7QUFDQSw4QkFBOEIsU0FBUyxJQUFJO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2hhcmR3YXJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlzdCBoYXJkd2FyZVxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0W10+fSBSZXNvbHZlcyB3aXRoIHRoZSBhcnJheSBvZiBoYXJkd2FyZVxuICovXG5hc3luYyBmdW5jdGlvbiBsaXN0SGFyZHdhcmUoeyBzaWduYWwgfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiL2hhcmR3YXJlXCIsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbGlzdDogbGlzdEhhcmR3YXJlLFxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/hardware.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/identifier.js":
|
|
/*!*************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/identifier.js ***!
|
|
\*************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/*\n * A reference to a model version in the format `owner/name` or `owner/name:version`.\n */\nclass ModelVersionIdentifier {\n /*\n * @param {string} Required. The model owner.\n * @param {string} Required. The model name.\n * @param {string} The model version.\n */\n constructor(owner, name, version = null) {\n this.owner = owner;\n this.name = name;\n this.version = version;\n }\n\n /*\n * Parse a reference to a model version\n *\n * @param {string}\n * @returns {ModelVersionIdentifier}\n * @throws {Error} If the reference is invalid.\n */\n static parse(ref) {\n const match = ref.match(\n /^(?<owner>[^/]+)\\/(?<name>[^/:]+)(:(?<version>.+))?$/\n );\n if (!match) {\n throw new Error(\n `Invalid reference to model version: ${ref}. Expected format: owner/name or owner/name:version`\n );\n }\n\n const { owner, name, version } = match.groups;\n\n return new ModelVersionIdentifier(owner, name, version);\n }\n}\n\nmodule.exports = ModelVersionIdentifier;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL2lkZW50aWZpZXIuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZUFBZTtBQUNmLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxJQUFJO0FBQ25EO0FBQ0E7O0FBRUEsWUFBWSx1QkFBdUI7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9yZXBsaWNhdGVAMS40LjAvbm9kZV9tb2R1bGVzL3JlcGxpY2F0ZS9saWIvaWRlbnRpZmllci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQSByZWZlcmVuY2UgdG8gYSBtb2RlbCB2ZXJzaW9uIGluIHRoZSBmb3JtYXQgYG93bmVyL25hbWVgIG9yIGBvd25lci9uYW1lOnZlcnNpb25gLlxuICovXG5jbGFzcyBNb2RlbFZlcnNpb25JZGVudGlmaWVyIHtcbiAgLypcbiAgICogQHBhcmFtIHtzdHJpbmd9IFJlcXVpcmVkLiBUaGUgbW9kZWwgb3duZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBSZXF1aXJlZC4gVGhlIG1vZGVsIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgbW9kZWwgdmVyc2lvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKG93bmVyLCBuYW1lLCB2ZXJzaW9uID0gbnVsbCkge1xuICAgIHRoaXMub3duZXIgPSBvd25lcjtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gIH1cblxuICAvKlxuICAgKiBQYXJzZSBhIHJlZmVyZW5jZSB0byBhIG1vZGVsIHZlcnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9XG4gICAqIEByZXR1cm5zIHtNb2RlbFZlcnNpb25JZGVudGlmaWVyfVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHJlZmVyZW5jZSBpcyBpbnZhbGlkLlxuICAgKi9cbiAgc3RhdGljIHBhcnNlKHJlZikge1xuICAgIGNvbnN0IG1hdGNoID0gcmVmLm1hdGNoKFxuICAgICAgL14oPzxvd25lcj5bXi9dKylcXC8oPzxuYW1lPlteLzpdKykoOig/PHZlcnNpb24+LispKT8kL1xuICAgICk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCByZWZlcmVuY2UgdG8gbW9kZWwgdmVyc2lvbjogJHtyZWZ9LiBFeHBlY3RlZCBmb3JtYXQ6IG93bmVyL25hbWUgb3Igb3duZXIvbmFtZTp2ZXJzaW9uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG93bmVyLCBuYW1lLCB2ZXJzaW9uIH0gPSBtYXRjaC5ncm91cHM7XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsVmVyc2lvbklkZW50aWZpZXIob3duZXIsIG5hbWUsIHZlcnNpb24pO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTW9kZWxWZXJzaW9uSWRlbnRpZmllcjtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/identifier.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/models.js":
|
|
/*!*********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/models.js ***!
|
|
\*********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * Get information about a model\n *\n * @param {string} model_owner - Required. The name of the user or organization that owns the model\n * @param {string} model_name - Required. The name of the model\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the model data\n */\nasync function getModel(model_owner, model_name, { signal } = {}) {\n const response = await this.request(`/models/${model_owner}/${model_name}`, {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * List model versions\n *\n * @param {string} model_owner - Required. The name of the user or organization that owns the model\n * @param {string} model_name - Required. The name of the model\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the list of model versions\n */\nasync function listModelVersions(model_owner, model_name, { signal } = {}) {\n const response = await this.request(\n `/models/${model_owner}/${model_name}/versions`,\n {\n method: \"GET\",\n signal,\n }\n );\n\n return response.json();\n}\n\n/**\n * Get a specific model version\n *\n * @param {string} model_owner - Required. The name of the user or organization that owns the model\n * @param {string} model_name - Required. The name of the model\n * @param {string} version_id - Required. The model version\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the model version data\n */\nasync function getModelVersion(\n model_owner,\n model_name,\n version_id,\n { signal } = {}\n) {\n const response = await this.request(\n `/models/${model_owner}/${model_name}/versions/${version_id}`,\n {\n method: \"GET\",\n signal,\n }\n );\n\n return response.json();\n}\n\n/**\n * List all public models\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the model version data\n */\nasync function listModels({ signal } = {}) {\n const response = await this.request(\"/models\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * Create a new model\n *\n * @param {string} model_owner - Required. The name of the user or organization that will own the model. This must be the same as the user or organization that is making the API request. In other words, the API token used in the request must belong to this user or organization.\n * @param {string} model_name - Required. The name of the model. This must be unique among all models owned by the user or organization.\n * @param {object} options\n * @param {(\"public\"|\"private\")} options.visibility - Required. Whether the model should be public or private. A public model can be viewed and run by anyone, whereas a private model can be viewed and run only by the user or organization members that own the model.\n * @param {string} options.hardware - Required. The SKU for the hardware used to run the model. Possible values can be found by calling `Replicate.hardware.list()`.\n * @param {string} options.description - A description of the model.\n * @param {string} options.github_url - A URL for the model's source code on GitHub.\n * @param {string} options.paper_url - A URL for the model's paper.\n * @param {string} options.license_url - A URL for the model's license.\n * @param {string} options.cover_image_url - A URL for the model's cover image. This should be an image file.\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the model version data\n */\nasync function createModel(model_owner, model_name, options) {\n const { signal, ...rest } = options;\n const data = { owner: model_owner, name: model_name, ...rest };\n\n const response = await this.request(\"/models\", {\n method: \"POST\",\n data,\n signal,\n });\n\n return response.json();\n}\n\n/**\n * Search for public models\n *\n * @param {string} query - The search query\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with a page of models matching the search query\n */\nasync function search(query, { signal } = {}) {\n const response = await this.request(\"/models\", {\n method: \"QUERY\",\n headers: {\n \"Content-Type\": \"text/plain\",\n },\n data: query,\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = {\n get: getModel,\n list: listModels,\n create: createModel,\n versions: { list: listModelVersions, get: getModelVersion },\n search,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL21vZGVscy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSxtREFBbUQsU0FBUyxJQUFJO0FBQ2hFLGlEQUFpRCxZQUFZLEdBQUcsV0FBVztBQUMzRTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGlCQUFpQjtBQUM5QjtBQUNBLDREQUE0RCxTQUFTLElBQUk7QUFDekU7QUFDQSxlQUFlLFlBQVksR0FBRyxXQUFXO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVM7QUFDYjtBQUNBO0FBQ0EsZUFBZSxZQUFZLEdBQUcsV0FBVyxZQUFZLFdBQVc7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSw0QkFBNEIsU0FBUyxJQUFJO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLHNCQUFzQjtBQUNqQyxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQTtBQUNBLFVBQVUsa0JBQWtCO0FBQzVCLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSwrQkFBK0IsU0FBUyxJQUFJO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUErQztBQUM3RDtBQUNBIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3JlcGxpY2F0ZUAxLjQuMC9ub2RlX21vZHVsZXMvcmVwbGljYXRlL2xpYi9tb2RlbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYSBtb2RlbFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbF9vd25lciAtIFJlcXVpcmVkLiBUaGUgbmFtZSBvZiB0aGUgdXNlciBvciBvcmdhbml6YXRpb24gdGhhdCBvd25zIHRoZSBtb2RlbFxuICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsX25hbWUgLSBSZXF1aXJlZC4gVGhlIG5hbWUgb2YgdGhlIG1vZGVsXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IFJlc29sdmVzIHdpdGggdGhlIG1vZGVsIGRhdGFcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TW9kZWwobW9kZWxfb3duZXIsIG1vZGVsX25hbWUsIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChgL21vZGVscy8ke21vZGVsX293bmVyfS8ke21vZGVsX25hbWV9YCwge1xuICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICBzaWduYWwsXG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICogTGlzdCBtb2RlbCB2ZXJzaW9uc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbF9vd25lciAtIFJlcXVpcmVkLiBUaGUgbmFtZSBvZiB0aGUgdXNlciBvciBvcmdhbml6YXRpb24gdGhhdCBvd25zIHRoZSBtb2RlbFxuICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsX25hbWUgLSBSZXF1aXJlZC4gVGhlIG5hbWUgb2YgdGhlIG1vZGVsXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IFJlc29sdmVzIHdpdGggdGhlIGxpc3Qgb2YgbW9kZWwgdmVyc2lvbnNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGlzdE1vZGVsVmVyc2lvbnMobW9kZWxfb3duZXIsIG1vZGVsX25hbWUsIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICBgL21vZGVscy8ke21vZGVsX293bmVyfS8ke21vZGVsX25hbWV9L3ZlcnNpb25zYCxcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBzaWduYWwsXG4gICAgfVxuICApO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICogR2V0IGEgc3BlY2lmaWMgbW9kZWwgdmVyc2lvblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbF9vd25lciAtIFJlcXVpcmVkLiBUaGUgbmFtZSBvZiB0aGUgdXNlciBvciBvcmdhbml6YXRpb24gdGhhdCBvd25zIHRoZSBtb2RlbFxuICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsX25hbWUgLSBSZXF1aXJlZC4gVGhlIG5hbWUgb2YgdGhlIG1vZGVsXG4gKiBAcGFyYW0ge3N0cmluZ30gdmVyc2lvbl9pZCAtIFJlcXVpcmVkLiBUaGUgbW9kZWwgdmVyc2lvblxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBtb2RlbCB2ZXJzaW9uIGRhdGFcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TW9kZWxWZXJzaW9uKFxuICBtb2RlbF9vd25lcixcbiAgbW9kZWxfbmFtZSxcbiAgdmVyc2lvbl9pZCxcbiAgeyBzaWduYWwgfSA9IHt9XG4pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoXG4gICAgYC9tb2RlbHMvJHttb2RlbF9vd25lcn0vJHttb2RlbF9uYW1lfS92ZXJzaW9ucy8ke3ZlcnNpb25faWR9YCxcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBzaWduYWwsXG4gICAgfVxuICApO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICogTGlzdCBhbGwgcHVibGljIG1vZGVsc1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gUmVzb2x2ZXMgd2l0aCB0aGUgbW9kZWwgdmVyc2lvbiBkYXRhXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxpc3RNb2RlbHMoeyBzaWduYWwgfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiL21vZGVsc1wiLCB7XG4gICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgIHNpZ25hbCxcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgbW9kZWxcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxfb3duZXIgLSBSZXF1aXJlZC4gVGhlIG5hbWUgb2YgdGhlIHVzZXIgb3Igb3JnYW5pemF0aW9uIHRoYXQgd2lsbCBvd24gdGhlIG1vZGVsLiBUaGlzIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIHVzZXIgb3Igb3JnYW5pemF0aW9uIHRoYXQgaXMgbWFraW5nIHRoZSBBUEkgcmVxdWVzdC4gSW4gb3RoZXIgd29yZHMsIHRoZSBBUEkgdG9rZW4gdXNlZCBpbiB0aGUgcmVxdWVzdCBtdXN0IGJlbG9uZyB0byB0aGlzIHVzZXIgb3Igb3JnYW5pemF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsX25hbWUgLSBSZXF1aXJlZC4gVGhlIG5hbWUgb2YgdGhlIG1vZGVsLiBUaGlzIG11c3QgYmUgdW5pcXVlIGFtb25nIGFsbCBtb2RlbHMgb3duZWQgYnkgdGhlIHVzZXIgb3Igb3JnYW5pemF0aW9uLlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7KFwicHVibGljXCJ8XCJwcml2YXRlXCIpfSBvcHRpb25zLnZpc2liaWxpdHkgLSBSZXF1aXJlZC4gV2hldGhlciB0aGUgbW9kZWwgc2hvdWxkIGJlIHB1YmxpYyBvciBwcml2YXRlLiBBIHB1YmxpYyBtb2RlbCBjYW4gYmUgdmlld2VkIGFuZCBydW4gYnkgYW55b25lLCB3aGVyZWFzIGEgcHJpdmF0ZSBtb2RlbCBjYW4gYmUgdmlld2VkIGFuZCBydW4gb25seSBieSB0aGUgdXNlciBvciBvcmdhbml6YXRpb24gbWVtYmVycyB0aGF0IG93biB0aGUgbW9kZWwuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5oYXJkd2FyZSAtIFJlcXVpcmVkLiBUaGUgU0tVIGZvciB0aGUgaGFyZHdhcmUgdXNlZCB0byBydW4gdGhlIG1vZGVsLiBQb3NzaWJsZSB2YWx1ZXMgY2FuIGJlIGZvdW5kIGJ5IGNhbGxpbmcgYFJlcGxpY2F0ZS5oYXJkd2FyZS5saXN0KClgLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZGVzY3JpcHRpb24gLSBBIGRlc2NyaXB0aW9uIG9mIHRoZSBtb2RlbC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdpdGh1Yl91cmwgLSBBIFVSTCBmb3IgdGhlIG1vZGVsJ3Mgc291cmNlIGNvZGUgb24gR2l0SHViLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFwZXJfdXJsIC0gQSBVUkwgZm9yIHRoZSBtb2RlbCdzIHBhcGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubGljZW5zZV91cmwgLSBBIFVSTCBmb3IgdGhlIG1vZGVsJ3MgbGljZW5zZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmNvdmVyX2ltYWdlX3VybCAtIEEgVVJMIGZvciB0aGUgbW9kZWwncyBjb3ZlciBpbWFnZS4gVGhpcyBzaG91bGQgYmUgYW4gaW1hZ2UgZmlsZS5cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gUmVzb2x2ZXMgd2l0aCB0aGUgbW9kZWwgdmVyc2lvbiBkYXRhXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1vZGVsKG1vZGVsX293bmVyLCBtb2RlbF9uYW1lLCBvcHRpb25zKSB7XG4gIGNvbnN0IHsgc2lnbmFsLCAuLi5yZXN0IH0gPSBvcHRpb25zO1xuICBjb25zdCBkYXRhID0geyBvd25lcjogbW9kZWxfb3duZXIsIG5hbWU6IG1vZGVsX25hbWUsIC4uLnJlc3QgfTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcIi9tb2RlbHNcIiwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgZGF0YSxcbiAgICBzaWduYWwsXG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICogU2VhcmNoIGZvciBwdWJsaWMgbW9kZWxzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5IC0gVGhlIHNlYXJjaCBxdWVyeVxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIGEgcGFnZSBvZiBtb2RlbHMgbWF0Y2hpbmcgdGhlIHNlYXJjaCBxdWVyeVxuICovXG5hc3luYyBmdW5jdGlvbiBzZWFyY2gocXVlcnksIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcIi9tb2RlbHNcIiwge1xuICAgIG1ldGhvZDogXCJRVUVSWVwiLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9wbGFpblwiLFxuICAgIH0sXG4gICAgZGF0YTogcXVlcnksXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0OiBnZXRNb2RlbCxcbiAgbGlzdDogbGlzdE1vZGVscyxcbiAgY3JlYXRlOiBjcmVhdGVNb2RlbCxcbiAgdmVyc2lvbnM6IHsgbGlzdDogbGlzdE1vZGVsVmVyc2lvbnMsIGdldDogZ2V0TW9kZWxWZXJzaW9uIH0sXG4gIHNlYXJjaCxcbn07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/models.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/predictions.js":
|
|
/*!**************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/predictions.js ***!
|
|
\**************************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("const { transformFileInputs } = __webpack_require__(/*! ./util */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/util.js\");\n\n/**\n * Create a new prediction\n *\n * @param {object} options\n * @param {string} options.model - The model.\n * @param {string} options.version - The model version.\n * @param {object} options.input - Required. An object with the model inputs\n * @param {string} [options.webhook] - An HTTPS URL for receiving a webhook when the prediction has new output\n * @param {string[]} [options.webhook_events_filter] - You can change which events trigger webhook requests by specifying webhook events (`start`|`output`|`logs`|`completed`)\n * @param {boolean|integer} [options.wait] - Whether to wait until the prediction is completed before returning. If an integer is provided, it will wait for that many seconds. Defaults to false\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the created prediction\n */\nasync function createPrediction(options) {\n const { model, version, input, wait, signal, ...data } = options;\n\n if (data.webhook) {\n try {\n // eslint-disable-next-line no-new\n new URL(data.webhook);\n } catch (err) {\n throw new Error(\"Invalid webhook URL\");\n }\n }\n\n const headers = {};\n if (wait) {\n if (typeof wait === \"number\") {\n const n = Math.max(1, Math.ceil(Number(wait)) || 1);\n headers[\"Prefer\"] = `wait=${n}`;\n } else {\n headers[\"Prefer\"] = \"wait\";\n }\n }\n\n let response;\n if (version) {\n response = await this.request(\"/predictions\", {\n method: \"POST\",\n headers,\n data: {\n ...data,\n input: await transformFileInputs(\n this,\n input,\n this.fileEncodingStrategy\n ),\n version,\n },\n signal,\n });\n } else if (model) {\n response = await this.request(`/models/${model}/predictions`, {\n method: \"POST\",\n headers,\n data: {\n ...data,\n input: await transformFileInputs(\n this,\n input,\n this.fileEncodingStrategy\n ),\n },\n signal,\n });\n } else {\n throw new Error(\"Either model or version must be specified\");\n }\n\n return response.json();\n}\n\n/**\n * Fetch a prediction by ID\n *\n * @param {number} prediction_id - Required. The prediction ID\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the prediction data\n */\nasync function getPrediction(prediction_id, { signal } = {}) {\n const response = await this.request(`/predictions/${prediction_id}`, {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * Cancel a prediction by ID\n *\n * @param {string} prediction_id - Required. The training ID\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the data for the training\n */\nasync function cancelPrediction(prediction_id, { signal } = {}) {\n const response = await this.request(`/predictions/${prediction_id}/cancel`, {\n method: \"POST\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * List all predictions\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with a page of predictions\n */\nasync function listPredictions({ signal } = {}) {\n const response = await this.request(\"/predictions\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = {\n create: createPrediction,\n get: getPrediction,\n cancel: cancelPrediction,\n list: listPredictions,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL3ByZWRpY3Rpb25zLmpzIiwibWFwcGluZ3MiOiJBQUFBLFFBQVEsc0JBQXNCLEVBQUUsbUJBQU8sQ0FBQyw2RkFBUTs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsV0FBVyxpQkFBaUI7QUFDNUIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0E7QUFDQSxVQUFVLCtDQUErQzs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEVBQUU7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0osNkNBQTZDLE1BQU07QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSw4Q0FBOEMsU0FBUyxJQUFJO0FBQzNELHNEQUFzRCxjQUFjO0FBQ3BFO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSxpREFBaUQsU0FBUyxJQUFJO0FBQzlELHNEQUFzRCxjQUFjO0FBQ3BFO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGlCQUFpQjtBQUM5QjtBQUNBLGlDQUFpQyxTQUFTLElBQUk7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9yZXBsaWNhdGVAMS40LjAvbm9kZV9tb2R1bGVzL3JlcGxpY2F0ZS9saWIvcHJlZGljdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyB0cmFuc2Zvcm1GaWxlSW5wdXRzIH0gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBwcmVkaWN0aW9uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm1vZGVsIC0gVGhlIG1vZGVsLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudmVyc2lvbiAtIFRoZSBtb2RlbCB2ZXJzaW9uLlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMuaW5wdXQgLSBSZXF1aXJlZC4gQW4gb2JqZWN0IHdpdGggdGhlIG1vZGVsIGlucHV0c1xuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLndlYmhvb2tdIC0gQW4gSFRUUFMgVVJMIGZvciByZWNlaXZpbmcgYSB3ZWJob29rIHdoZW4gdGhlIHByZWRpY3Rpb24gaGFzIG5ldyBvdXRwdXRcbiAqIEBwYXJhbSB7c3RyaW5nW119IFtvcHRpb25zLndlYmhvb2tfZXZlbnRzX2ZpbHRlcl0gLSBZb3UgY2FuIGNoYW5nZSB3aGljaCBldmVudHMgdHJpZ2dlciB3ZWJob29rIHJlcXVlc3RzIGJ5IHNwZWNpZnlpbmcgd2ViaG9vayBldmVudHMgKGBzdGFydGB8YG91dHB1dGB8YGxvZ3NgfGBjb21wbGV0ZWRgKVxuICogQHBhcmFtIHtib29sZWFufGludGVnZXJ9IFtvcHRpb25zLndhaXRdIC0gV2hldGhlciB0byB3YWl0IHVudGlsIHRoZSBwcmVkaWN0aW9uIGlzIGNvbXBsZXRlZCBiZWZvcmUgcmV0dXJuaW5nLiBJZiBhbiBpbnRlZ2VyIGlzIHByb3ZpZGVkLCBpdCB3aWxsIHdhaXQgZm9yIHRoYXQgbWFueSBzZWNvbmRzLiBEZWZhdWx0cyB0byBmYWxzZVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBjcmVhdGVkIHByZWRpY3Rpb25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUHJlZGljdGlvbihvcHRpb25zKSB7XG4gIGNvbnN0IHsgbW9kZWwsIHZlcnNpb24sIGlucHV0LCB3YWl0LCBzaWduYWwsIC4uLmRhdGEgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGRhdGEud2ViaG9vaykge1xuICAgIHRyeSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3XG4gICAgICBuZXcgVVJMKGRhdGEud2ViaG9vayk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHdlYmhvb2sgVVJMXCIpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhlYWRlcnMgPSB7fTtcbiAgaWYgKHdhaXQpIHtcbiAgICBpZiAodHlwZW9mIHdhaXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGNvbnN0IG4gPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoTnVtYmVyKHdhaXQpKSB8fCAxKTtcbiAgICAgIGhlYWRlcnNbXCJQcmVmZXJcIl0gPSBgd2FpdD0ke259YDtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyc1tcIlByZWZlclwiXSA9IFwid2FpdFwiO1xuICAgIH1cbiAgfVxuXG4gIGxldCByZXNwb25zZTtcbiAgaWYgKHZlcnNpb24pIHtcbiAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcIi9wcmVkaWN0aW9uc1wiLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaW5wdXQ6IGF3YWl0IHRyYW5zZm9ybUZpbGVJbnB1dHMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICB0aGlzLmZpbGVFbmNvZGluZ1N0cmF0ZWd5XG4gICAgICAgICksXG4gICAgICAgIHZlcnNpb24sXG4gICAgICB9LFxuICAgICAgc2lnbmFsLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKG1vZGVsKSB7XG4gICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoYC9tb2RlbHMvJHttb2RlbH0vcHJlZGljdGlvbnNgLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaW5wdXQ6IGF3YWl0IHRyYW5zZm9ybUZpbGVJbnB1dHMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICB0aGlzLmZpbGVFbmNvZGluZ1N0cmF0ZWd5XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgc2lnbmFsLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkVpdGhlciBtb2RlbCBvciB2ZXJzaW9uIG11c3QgYmUgc3BlY2lmaWVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuLyoqXG4gKiBGZXRjaCBhIHByZWRpY3Rpb24gYnkgSURcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gcHJlZGljdGlvbl9pZCAtIFJlcXVpcmVkLiBUaGUgcHJlZGljdGlvbiBJRFxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBwcmVkaWN0aW9uIGRhdGFcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0UHJlZGljdGlvbihwcmVkaWN0aW9uX2lkLCB7IHNpZ25hbCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoYC9wcmVkaWN0aW9ucy8ke3ByZWRpY3Rpb25faWR9YCwge1xuICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICBzaWduYWwsXG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICogQ2FuY2VsIGEgcHJlZGljdGlvbiBieSBJRFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVkaWN0aW9uX2lkIC0gUmVxdWlyZWQuIFRoZSB0cmFpbmluZyBJRFxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBkYXRhIGZvciB0aGUgdHJhaW5pbmdcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2FuY2VsUHJlZGljdGlvbihwcmVkaWN0aW9uX2lkLCB7IHNpZ25hbCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnJlcXVlc3QoYC9wcmVkaWN0aW9ucy8ke3ByZWRpY3Rpb25faWR9L2NhbmNlbGAsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIHNpZ25hbCxcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBwcmVkaWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IFtvcHRpb25zLnNpZ25hbF0gLSBBbiBvcHRpb25hbCBBYm9ydFNpZ25hbFxuICogQHJldHVybnMge1Byb21pc2U8b2JqZWN0Pn0gLSBSZXNvbHZlcyB3aXRoIGEgcGFnZSBvZiBwcmVkaWN0aW9uc1xuICovXG5hc3luYyBmdW5jdGlvbiBsaXN0UHJlZGljdGlvbnMoeyBzaWduYWwgfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiL3ByZWRpY3Rpb25zXCIsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY3JlYXRlOiBjcmVhdGVQcmVkaWN0aW9uLFxuICBnZXQ6IGdldFByZWRpY3Rpb24sXG4gIGNhbmNlbDogY2FuY2VsUHJlZGljdGlvbixcbiAgbGlzdDogbGlzdFByZWRpY3Rpb25zLFxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/predictions.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/stream.js":
|
|
/*!*********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/stream.js ***!
|
|
\*********************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("// Attempt to use readable-stream if available, attempt to use the built-in stream module.\n\nconst ApiError = __webpack_require__(/*! ./error */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/error.js\");\nconst { streamAsyncIterator } = __webpack_require__(/*! ./util */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/util.js\");\nconst {\n EventSourceParserStream,\n} = __webpack_require__(/*! ../vendor/eventsource-parser/stream */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/eventsource-parser/stream.js\");\nconst { TextDecoderStream } =\n typeof globalThis.TextDecoderStream === \"undefined\"\n ? __webpack_require__(/*! ../vendor/streams-text-encoding/text-decoder-stream */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/streams-text-encoding/text-decoder-stream.js\")\n : globalThis;\n\n/**\n * A server-sent event.\n */\nclass ServerSentEvent {\n /**\n * Create a new server-sent event.\n *\n * @param {string} event The event name.\n * @param {string} data The event data.\n * @param {string} id The event ID.\n * @param {number} retry The retry time.\n */\n constructor(event, data, id, retry) {\n this.event = event;\n this.data = data;\n this.id = id;\n this.retry = retry;\n }\n\n /**\n * Convert the event to a string.\n */\n toString() {\n if (this.event === \"output\") {\n return this.data;\n }\n\n return \"\";\n }\n}\n\n/**\n * Create a new stream of server-sent events.\n *\n * @param {object} config\n * @param {string} config.url The URL to connect to.\n * @param {typeof fetch} [config.fetch] The URL to connect to.\n * @param {object} [config.options] The EventSource options.\n * @param {boolean} [config.options.useFileOutput] Whether to use the file output stream.\n * @returns {ReadableStream<ServerSentEvent> & AsyncIterable<ServerSentEvent>}\n */\nfunction createReadableStream({ url, fetch, options = {} }) {\n const { useFileOutput = true, headers = {}, ...initOptions } = options;\n const shouldProcessFileOutput = useFileOutput && isFileStream(url);\n\n return new ReadableStream({\n async start(controller) {\n const init = {\n ...initOptions,\n headers: {\n ...headers,\n Accept: \"text/event-stream\",\n },\n };\n const response = await fetch(url, init);\n\n if (!response.ok) {\n const text = await response.text();\n const request = new Request(url, init);\n controller.error(\n new ApiError(\n `Request to ${url} failed with status ${response.status}: ${text}`,\n request,\n response\n )\n );\n }\n\n const stream = response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream());\n\n for await (const event of streamAsyncIterator(stream)) {\n if (event.event === \"error\") {\n controller.error(new Error(event.data));\n break;\n }\n\n let data = event.data;\n if (\n event.event === \"output\" &&\n shouldProcessFileOutput &&\n typeof data === \"string\"\n ) {\n data = createFileOutput({ url: data, fetch });\n }\n controller.enqueue(new ServerSentEvent(event.event, data, event.id));\n\n if (event.event === \"done\") {\n break;\n }\n }\n\n controller.close();\n },\n });\n}\n\n/**\n * Create a new readable stream for an output file\n * created by running a Replicate model.\n *\n * @param {object} config\n * @param {string} config.url The URL to connect to.\n * @param {typeof fetch} [config.fetch] The fetch function.\n * @returns {ReadableStream<Uint8Array>}\n */\nfunction createFileOutput({ url, fetch }) {\n let type = \"application/octet-stream\";\n\n class FileOutput extends ReadableStream {\n async blob() {\n const chunks = [];\n for await (const chunk of this) {\n chunks.push(chunk);\n }\n return new Blob(chunks, { type });\n }\n\n url() {\n return new URL(url);\n }\n\n toString() {\n return url;\n }\n }\n\n return new FileOutput({\n async start(controller) {\n const response = await fetch(url);\n\n if (!response.ok) {\n const text = await response.text();\n const request = new Request(url, init);\n controller.error(\n new ApiError(\n `Request to ${url} failed with status ${response.status}: ${text}`,\n request,\n response\n )\n );\n }\n\n if (response.headers.get(\"Content-Type\")) {\n type = response.headers.get(\"Content-Type\");\n }\n\n try {\n for await (const chunk of streamAsyncIterator(response.body)) {\n controller.enqueue(chunk);\n }\n controller.close();\n } catch (err) {\n controller.error(err);\n }\n },\n });\n}\n\nfunction isFileStream(url) {\n try {\n return new URL(url).pathname.startsWith(\"/v1/files/\");\n } catch {}\n return false;\n}\n\nmodule.exports = {\n createFileOutput,\n createReadableStream,\n ServerSentEvent,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL3N0cmVhbS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxpQkFBaUIsbUJBQU8sQ0FBQywrRkFBUztBQUNsQyxRQUFRLHNCQUFzQixFQUFFLG1CQUFPLENBQUMsNkZBQVE7QUFDaEQ7QUFDQTtBQUNBLEVBQUUsRUFBRSxtQkFBTyxDQUFDLGtKQUFxQztBQUNqRCxRQUFRLG9CQUFvQjtBQUM1QjtBQUNBLE1BQU0sbUJBQU8sQ0FBQyxrTEFBcUQ7QUFDbkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsYUFBYTtBQUNiO0FBQ0EsZ0NBQWdDLDBCQUEwQjtBQUMxRCxVQUFVLGtDQUFrQyxtQkFBbUI7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLEtBQUsscUJBQXFCLGdCQUFnQixJQUFJLEtBQUs7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0JBQWtCO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLGNBQWM7QUFDekIsYUFBYTtBQUNiO0FBQ0EsNEJBQTRCLFlBQVk7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLE1BQU07QUFDdEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLEtBQUsscUJBQXFCLGdCQUFnQixJQUFJLEtBQUs7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3JlcGxpY2F0ZUAxLjQuMC9ub2RlX21vZHVsZXMvcmVwbGljYXRlL2xpYi9zdHJlYW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQXR0ZW1wdCB0byB1c2UgcmVhZGFibGUtc3RyZWFtIGlmIGF2YWlsYWJsZSwgYXR0ZW1wdCB0byB1c2UgdGhlIGJ1aWx0LWluIHN0cmVhbSBtb2R1bGUuXG5cbmNvbnN0IEFwaUVycm9yID0gcmVxdWlyZShcIi4vZXJyb3JcIik7XG5jb25zdCB7IHN0cmVhbUFzeW5jSXRlcmF0b3IgfSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCB7XG4gIEV2ZW50U291cmNlUGFyc2VyU3RyZWFtLFxufSA9IHJlcXVpcmUoXCIuLi92ZW5kb3IvZXZlbnRzb3VyY2UtcGFyc2VyL3N0cmVhbVwiKTtcbmNvbnN0IHsgVGV4dERlY29kZXJTdHJlYW0gfSA9XG4gIHR5cGVvZiBnbG9iYWxUaGlzLlRleHREZWNvZGVyU3RyZWFtID09PSBcInVuZGVmaW5lZFwiXG4gICAgPyByZXF1aXJlKFwiLi4vdmVuZG9yL3N0cmVhbXMtdGV4dC1lbmNvZGluZy90ZXh0LWRlY29kZXItc3RyZWFtXCIpXG4gICAgOiBnbG9iYWxUaGlzO1xuXG4vKipcbiAqIEEgc2VydmVyLXNlbnQgZXZlbnQuXG4gKi9cbmNsYXNzIFNlcnZlclNlbnRFdmVudCB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc2VydmVyLXNlbnQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudCBUaGUgZXZlbnQgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgVGhlIGV2ZW50IGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgZXZlbnQgSUQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZXRyeSBUaGUgcmV0cnkgdGltZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGV2ZW50LCBkYXRhLCBpZCwgcmV0cnkpIHtcbiAgICB0aGlzLmV2ZW50ID0gZXZlbnQ7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5yZXRyeSA9IHJldHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIGV2ZW50IHRvIGEgc3RyaW5nLlxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgaWYgKHRoaXMuZXZlbnQgPT09IFwib3V0cHV0XCIpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgc3RyZWFtIG9mIHNlcnZlci1zZW50IGV2ZW50cy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gY29uZmlnLnVybCBUaGUgVVJMIHRvIGNvbm5lY3QgdG8uXG4gKiBAcGFyYW0ge3R5cGVvZiBmZXRjaH0gW2NvbmZpZy5mZXRjaF0gVGhlIFVSTCB0byBjb25uZWN0IHRvLlxuICogQHBhcmFtIHtvYmplY3R9IFtjb25maWcub3B0aW9uc10gVGhlIEV2ZW50U291cmNlIG9wdGlvbnMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtjb25maWcub3B0aW9ucy51c2VGaWxlT3V0cHV0XSBXaGV0aGVyIHRvIHVzZSB0aGUgZmlsZSBvdXRwdXQgc3RyZWFtLlxuICogQHJldHVybnMge1JlYWRhYmxlU3RyZWFtPFNlcnZlclNlbnRFdmVudD4gJiBBc3luY0l0ZXJhYmxlPFNlcnZlclNlbnRFdmVudD59XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJlYWRhYmxlU3RyZWFtKHsgdXJsLCBmZXRjaCwgb3B0aW9ucyA9IHt9IH0pIHtcbiAgY29uc3QgeyB1c2VGaWxlT3V0cHV0ID0gdHJ1ZSwgaGVhZGVycyA9IHt9LCAuLi5pbml0T3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2hvdWxkUHJvY2Vzc0ZpbGVPdXRwdXQgPSB1c2VGaWxlT3V0cHV0ICYmIGlzRmlsZVN0cmVhbSh1cmwpO1xuXG4gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IGluaXQgPSB7XG4gICAgICAgIC4uLmluaXRPcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgLi4uaGVhZGVycyxcbiAgICAgICAgICBBY2NlcHQ6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgaW5pdCk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwgaW5pdCk7XG4gICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoXG4gICAgICAgICAgbmV3IEFwaUVycm9yKFxuICAgICAgICAgICAgYFJlcXVlc3QgdG8gJHt1cmx9IGZhaWxlZCB3aXRoIHN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c306ICR7dGV4dH1gLFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIHJlc3BvbnNlXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdHJlYW0gPSByZXNwb25zZS5ib2R5XG4gICAgICAgIC5waXBlVGhyb3VnaChuZXcgVGV4dERlY29kZXJTdHJlYW0oKSlcbiAgICAgICAgLnBpcGVUaHJvdWdoKG5ldyBFdmVudFNvdXJjZVBhcnNlclN0cmVhbSgpKTtcblxuICAgICAgZm9yIGF3YWl0IChjb25zdCBldmVudCBvZiBzdHJlYW1Bc3luY0l0ZXJhdG9yKHN0cmVhbSkpIHtcbiAgICAgICAgaWYgKGV2ZW50LmV2ZW50ID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgICBjb250cm9sbGVyLmVycm9yKG5ldyBFcnJvcihldmVudC5kYXRhKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGF0YSA9IGV2ZW50LmRhdGE7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC5ldmVudCA9PT0gXCJvdXRwdXRcIiAmJlxuICAgICAgICAgIHNob3VsZFByb2Nlc3NGaWxlT3V0cHV0ICYmXG4gICAgICAgICAgdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgZGF0YSA9IGNyZWF0ZUZpbGVPdXRwdXQoeyB1cmw6IGRhdGEsIGZldGNoIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgU2VydmVyU2VudEV2ZW50KGV2ZW50LmV2ZW50LCBkYXRhLCBldmVudC5pZCkpO1xuXG4gICAgICAgIGlmIChldmVudC5ldmVudCA9PT0gXCJkb25lXCIpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHJlYWRhYmxlIHN0cmVhbSBmb3IgYW4gb3V0cHV0IGZpbGVcbiAqIGNyZWF0ZWQgYnkgcnVubmluZyBhIFJlcGxpY2F0ZSBtb2RlbC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gY29uZmlnLnVybCBUaGUgVVJMIHRvIGNvbm5lY3QgdG8uXG4gKiBAcGFyYW0ge3R5cGVvZiBmZXRjaH0gW2NvbmZpZy5mZXRjaF0gVGhlIGZldGNoIGZ1bmN0aW9uLlxuICogQHJldHVybnMge1JlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+fVxuICovXG5mdW5jdGlvbiBjcmVhdGVGaWxlT3V0cHV0KHsgdXJsLCBmZXRjaCB9KSB7XG4gIGxldCB0eXBlID0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcblxuICBjbGFzcyBGaWxlT3V0cHV0IGV4dGVuZHMgUmVhZGFibGVTdHJlYW0ge1xuICAgIGFzeW5jIGJsb2IoKSB7XG4gICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgdGhpcykge1xuICAgICAgICBjaHVua3MucHVzaChjaHVuayk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IEJsb2IoY2h1bmtzLCB7IHR5cGUgfSk7XG4gICAgfVxuXG4gICAgdXJsKCkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBGaWxlT3V0cHV0KHtcbiAgICBhc3luYyBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwgaW5pdCk7XG4gICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoXG4gICAgICAgICAgbmV3IEFwaUVycm9yKFxuICAgICAgICAgICAgYFJlcXVlc3QgdG8gJHt1cmx9IGZhaWxlZCB3aXRoIHN0YXR1cyAke3Jlc3BvbnNlLnN0YXR1c306ICR7dGV4dH1gLFxuICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgIHJlc3BvbnNlXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIikpIHtcbiAgICAgICAgdHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiQ29udGVudC1UeXBlXCIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHN0cmVhbUFzeW5jSXRlcmF0b3IocmVzcG9uc2UuYm9keSkpIHtcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb250cm9sbGVyLmVycm9yKGVycik7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzRmlsZVN0cmVhbSh1cmwpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFVSTCh1cmwpLnBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvdjEvZmlsZXMvXCIpO1xuICB9IGNhdGNoIHt9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNyZWF0ZUZpbGVPdXRwdXQsXG4gIGNyZWF0ZVJlYWRhYmxlU3RyZWFtLFxuICBTZXJ2ZXJTZW50RXZlbnQsXG59O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/stream.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/trainings.js":
|
|
/*!************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/trainings.js ***!
|
|
\************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * Create a new training\n *\n * @param {string} model_owner - Required. The username of the user or organization who owns the model\n * @param {string} model_name - Required. The name of the model\n * @param {string} version_id - Required. The version ID\n * @param {object} options\n * @param {string} options.destination - Required. The destination for the trained version in the form \"{username}/{model_name}\"\n * @param {object} options.input - Required. An object with the model inputs\n * @param {string} [options.webhook] - An HTTPS URL for receiving a webhook when the training updates\n * @param {string[]} [options.webhook_events_filter] - You can change which events trigger webhook requests by specifying webhook events (`start`|`output`|`logs`|`completed`)\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the data for the created training\n */\nasync function createTraining(model_owner, model_name, version_id, options) {\n const { signal, ...data } = options;\n\n if (data.webhook) {\n try {\n // eslint-disable-next-line no-new\n new URL(data.webhook);\n } catch (err) {\n throw new Error(\"Invalid webhook URL\");\n }\n }\n\n const response = await this.request(\n `/models/${model_owner}/${model_name}/versions/${version_id}/trainings`,\n {\n method: \"POST\",\n data,\n signal,\n }\n );\n\n return response.json();\n}\n\n/**\n * Fetch a training by ID\n *\n * @param {string} training_id - Required. The training ID\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the data for the training\n */\nasync function getTraining(training_id, { signal } = {}) {\n const response = await this.request(`/trainings/${training_id}`, {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * Cancel a training by ID\n *\n * @param {string} training_id - Required. The training ID\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the data for the training\n */\nasync function cancelTraining(training_id, { signal } = {}) {\n const response = await this.request(`/trainings/${training_id}/cancel`, {\n method: \"POST\",\n signal,\n });\n\n return response.json();\n}\n\n/**\n * List all trainings\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} - Resolves with a page of trainings\n */\nasync function listTrainings({ signal } = {}) {\n const response = await this.request(\"/trainings\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = {\n create: createTraining,\n get: getTraining,\n cancel: cancelTraining,\n list: listTrainings,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL3RyYWluaW5ncy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRLHNGQUFzRixTQUFTLEVBQUUsV0FBVztBQUMvSCxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQTtBQUNBLFVBQVUsa0JBQWtCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLFlBQVksR0FBRyxXQUFXLFlBQVksV0FBVztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGlCQUFpQjtBQUM5QjtBQUNBLDBDQUEwQyxTQUFTLElBQUk7QUFDdkQsb0RBQW9ELFlBQVk7QUFDaEU7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsYUFBYTtBQUN4QixhQUFhLGlCQUFpQjtBQUM5QjtBQUNBLDZDQUE2QyxTQUFTLElBQUk7QUFDMUQsb0RBQW9ELFlBQVk7QUFDaEU7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0EsK0JBQStCLFNBQVMsSUFBSTtBQUM1QztBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3JlcGxpY2F0ZUAxLjQuMC9ub2RlX21vZHVsZXMvcmVwbGljYXRlL2xpYi90cmFpbmluZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGUgYSBuZXcgdHJhaW5pbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxfb3duZXIgLSBSZXF1aXJlZC4gVGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyIG9yIG9yZ2FuaXphdGlvbiB3aG8gb3ducyB0aGUgbW9kZWxcbiAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlbF9uYW1lIC0gUmVxdWlyZWQuIFRoZSBuYW1lIG9mIHRoZSBtb2RlbFxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb25faWQgLSBSZXF1aXJlZC4gVGhlIHZlcnNpb24gSURcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5kZXN0aW5hdGlvbiAtIFJlcXVpcmVkLiBUaGUgZGVzdGluYXRpb24gZm9yIHRoZSB0cmFpbmVkIHZlcnNpb24gaW4gdGhlIGZvcm0gXCJ7dXNlcm5hbWV9L3ttb2RlbF9uYW1lfVwiXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5pbnB1dCAtIFJlcXVpcmVkLiBBbiBvYmplY3Qgd2l0aCB0aGUgbW9kZWwgaW5wdXRzXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMud2ViaG9va10gLSBBbiBIVFRQUyBVUkwgZm9yIHJlY2VpdmluZyBhIHdlYmhvb2sgd2hlbiB0aGUgdHJhaW5pbmcgdXBkYXRlc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gW29wdGlvbnMud2ViaG9va19ldmVudHNfZmlsdGVyXSAtIFlvdSBjYW4gY2hhbmdlIHdoaWNoIGV2ZW50cyB0cmlnZ2VyIHdlYmhvb2sgcmVxdWVzdHMgYnkgc3BlY2lmeWluZyB3ZWJob29rIGV2ZW50cyAoYHN0YXJ0YHxgb3V0cHV0YHxgbG9nc2B8YGNvbXBsZXRlZGApXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IFJlc29sdmVzIHdpdGggdGhlIGRhdGEgZm9yIHRoZSBjcmVhdGVkIHRyYWluaW5nXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRyYWluaW5nKG1vZGVsX293bmVyLCBtb2RlbF9uYW1lLCB2ZXJzaW9uX2lkLCBvcHRpb25zKSB7XG4gIGNvbnN0IHsgc2lnbmFsLCAuLi5kYXRhIH0gPSBvcHRpb25zO1xuXG4gIGlmIChkYXRhLndlYmhvb2spIHtcbiAgICB0cnkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ld1xuICAgICAgbmV3IFVSTChkYXRhLndlYmhvb2spO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB3ZWJob29rIFVSTFwiKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICBgL21vZGVscy8ke21vZGVsX293bmVyfS8ke21vZGVsX25hbWV9L3ZlcnNpb25zLyR7dmVyc2lvbl9pZH0vdHJhaW5pbmdzYCxcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgZGF0YSxcbiAgICAgIHNpZ25hbCxcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuLyoqXG4gKiBGZXRjaCBhIHRyYWluaW5nIGJ5IElEXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRyYWluaW5nX2lkIC0gUmVxdWlyZWQuIFRoZSB0cmFpbmluZyBJRFxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBkYXRhIGZvciB0aGUgdHJhaW5pbmdcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0VHJhaW5pbmcodHJhaW5pbmdfaWQsIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChgL3RyYWluaW5ncy8ke3RyYWluaW5nX2lkfWAsIHtcbiAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgc2lnbmFsLFxuICB9KTtcblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG4vKipcbiAqIENhbmNlbCBhIHRyYWluaW5nIGJ5IElEXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRyYWluaW5nX2lkIC0gUmVxdWlyZWQuIFRoZSB0cmFpbmluZyBJRFxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSBSZXNvbHZlcyB3aXRoIHRoZSBkYXRhIGZvciB0aGUgdHJhaW5pbmdcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2FuY2VsVHJhaW5pbmcodHJhaW5pbmdfaWQsIHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChgL3RyYWluaW5ncy8ke3RyYWluaW5nX2lkfS9jYW5jZWxgLCB7XG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBzaWduYWwsXG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbi8qKlxuICogTGlzdCBhbGwgdHJhaW5pbmdzXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gW29wdGlvbnMuc2lnbmFsXSAtIEFuIG9wdGlvbmFsIEFib3J0U2lnbmFsXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSAtIFJlc29sdmVzIHdpdGggYSBwYWdlIG9mIHRyYWluaW5nc1xuICovXG5hc3luYyBmdW5jdGlvbiBsaXN0VHJhaW5pbmdzKHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcIi90cmFpbmluZ3NcIiwge1xuICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICBzaWduYWwsXG4gIH0pO1xuXG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjcmVhdGU6IGNyZWF0ZVRyYWluaW5nLFxuICBnZXQ6IGdldFRyYWluaW5nLFxuICBjYW5jZWw6IGNhbmNlbFRyYWluaW5nLFxuICBsaXN0OiBsaXN0VHJhaW5pbmdzLFxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/trainings.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/util.js":
|
|
/*!*******************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/util.js ***!
|
|
\*******************************************************************************/
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
eval("const ApiError = __webpack_require__(/*! ./error */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/error.js\");\nconst { create: createFile } = __webpack_require__(/*! ./files */ \"(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/files.js\");\n\n/**\n * @see {@link validateWebhook}\n * @overload\n * @param {object} requestData - The request data\n * @param {string} requestData.id - The webhook ID header from the incoming request.\n * @param {string} requestData.timestamp - The webhook timestamp header from the incoming request.\n * @param {string} requestData.body - The raw body of the incoming webhook request.\n * @param {string} requestData.secret - The webhook secret, obtained from `replicate.webhooks.defaul.secret` method.\n * @param {string} requestData.signature - The webhook signature header from the incoming request, comprising one or more space-delimited signatures.\n * @param {Crypto} [crypto] - An optional `Crypto` implementation that conforms to the [browser Crypto interface](https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto)\n */\n\n/**\n * @see {@link validateWebhook}\n * @overload\n * @param {object} requestData - The request object\n * @param {object} requestData.headers - The request headers\n * @param {string} requestData.headers[\"webhook-id\"] - The webhook ID header from the incoming request\n * @param {string} requestData.headers[\"webhook-timestamp\"] - The webhook timestamp header from the incoming request\n * @param {string} requestData.headers[\"webhook-signature\"] - The webhook signature header from the incoming request, comprising one or more space-delimited signatures\n * @param {string} requestData.body - The raw body of the incoming webhook request\n * @param {string} secret - The webhook secret, obtained from `replicate.webhooks.defaul.secret` method\n * @param {Crypto} [crypto] - An optional `Crypto` implementation that conforms to the [browser Crypto interface](https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto)\n */\n\n/**\n * Validate a webhook signature\n *\n * @returns {Promise<boolean>} - True if the signature is valid\n * @throws {Error} - If the request is missing required headers, body, or secret\n */\nasync function validateWebhook(requestData, secretOrCrypto, customCrypto) {\n let id;\n let body;\n let timestamp;\n let signature;\n let secret;\n let crypto = globalThis.crypto;\n\n if (requestData && requestData.headers && requestData.body) {\n if (typeof requestData.headers.get === \"function\") {\n // Headers object (e.g. Fetch API Headers)\n id = requestData.headers.get(\"webhook-id\");\n timestamp = requestData.headers.get(\"webhook-timestamp\");\n signature = requestData.headers.get(\"webhook-signature\");\n } else {\n // Plain object with header key-value pairs\n id = requestData.headers[\"webhook-id\"];\n timestamp = requestData.headers[\"webhook-timestamp\"];\n signature = requestData.headers[\"webhook-signature\"];\n }\n body = requestData.body;\n if (typeof secretOrCrypto !== \"string\") {\n throw new Error(\n \"Unexpected value for secret passed to validateWebhook, expected a string\"\n );\n }\n\n secret = secretOrCrypto;\n if (customCrypto) {\n crypto = customCrypto;\n }\n } else {\n id = requestData.id;\n body = requestData.body;\n timestamp = requestData.timestamp;\n signature = requestData.signature;\n secret = requestData.secret;\n if (secretOrCrypto) {\n crypto = secretOrCrypto;\n }\n }\n\n if (body instanceof ReadableStream || body.readable) {\n try {\n body = await new Response(body).text();\n } catch (err) {\n throw new Error(`Error reading body: ${err.message}`);\n }\n } else if (isTypedArray(body)) {\n body = await new Blob([body]).text();\n } else if (typeof body === \"object\") {\n body = JSON.stringify(body);\n } else if (typeof body !== \"string\") {\n throw new Error(\"Invalid body type\");\n }\n\n if (!id || !timestamp || !signature) {\n throw new Error(\"Missing required webhook headers\");\n }\n\n if (!body) {\n throw new Error(\"Missing required body\");\n }\n\n if (!secret) {\n throw new Error(\"Missing required secret\");\n }\n\n if (!crypto) {\n throw new Error(\n 'Missing `crypto` implementation. If using Node 18 pass in require(\"node:crypto\").webcrypto'\n );\n }\n\n const signedContent = `${id}.${timestamp}.${body}`;\n\n const computedSignature = await createHMACSHA256(\n secret.split(\"_\").pop(),\n signedContent,\n crypto\n );\n\n const expectedSignatures = signature\n .split(\" \")\n .map((sig) => sig.split(\",\")[1]);\n\n return expectedSignatures.some(\n (expectedSignature) => expectedSignature === computedSignature\n );\n}\n\n/**\n * @param {string} secret - base64 encoded string\n * @param {string} data - text body of request\n * @param {Crypto} crypto - an implementation of the web Crypto api\n */\nasync function createHMACSHA256(secret, data, crypto) {\n const encoder = new TextEncoder();\n const key = await crypto.subtle.importKey(\n \"raw\",\n base64ToBytes(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"]\n );\n\n const signature = await crypto.subtle.sign(\"HMAC\", key, encoder.encode(data));\n return bytesToBase64(signature);\n}\n\n/**\n * Convert a base64 encoded string into bytes.\n *\n * @param {string} the base64 encoded string\n * @return {Uint8Array}\n *\n * Two functions for encoding/decoding base64 strings using web standards. Not\n * intended to be used to encode/decode arbitrary string data.\n * See: https://developer.mozilla.org/en-US/docs/Glossary/Base64#javascript_support\n * See: https://stackoverflow.com/a/31621532\n *\n * Performance might take a hit because of the conversion to string and then to binary,\n * if this is the case we might want to look at an alternative solution.\n * See: https://jsben.ch/wnaZC\n */\nfunction base64ToBytes(base64) {\n return Uint8Array.from(atob(base64), (m) => m.codePointAt(0));\n}\n\n/**\n * Convert a base64 encoded string into bytes.\n *\n * See {@link base64ToBytes} for caveats.\n *\n * @param {Uint8Array | ArrayBuffer} the base64 encoded string\n * @return {string}\n */\nfunction bytesToBase64(bytes) {\n return btoa(String.fromCharCode.apply(null, new Uint8Array(bytes)));\n}\n\n/**\n * Automatically retry a request if it fails with an appropriate status code.\n *\n * A GET request is retried if it fails with a 429 or 5xx status code.\n * A non-GET request is retried only if it fails with a 429 status code.\n *\n * If the response sets a Retry-After header,\n * the request is retried after the number of seconds specified in the header.\n * Otherwise, the request is retried after the specified interval,\n * with exponential backoff and jitter.\n *\n * @param {Function} request - A function that returns a Promise that resolves with a Response object\n * @param {object} options\n * @param {Function} [options.shouldRetry] - A function that returns true if the request should be retried\n * @param {number} [options.maxRetries] - Maximum number of retries. Defaults to 5\n * @param {number} [options.interval] - Interval between retries in milliseconds. Defaults to 500\n * @returns {Promise<Response>} - Resolves with the response object\n * @throws {ApiError} If the request failed\n */\nasync function withAutomaticRetries(request, options = {}) {\n const shouldRetry = options.shouldRetry || (() => false);\n const maxRetries = options.maxRetries || 5;\n const interval = options.interval || 500;\n const jitter = options.jitter || 100;\n\n // eslint-disable-next-line no-promise-executor-return\n const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\n let attempts = 0;\n do {\n let delay = interval * 2 ** attempts + Math.random() * jitter;\n\n /* eslint-disable no-await-in-loop */\n try {\n const response = await request();\n if (response.ok || !shouldRetry(response)) {\n return response;\n }\n } catch (error) {\n if (error instanceof ApiError) {\n const retryAfter = error.response.headers.get(\"Retry-After\");\n if (retryAfter) {\n if (!Number.isInteger(retryAfter)) {\n // Retry-After is a date\n const date = new Date(retryAfter);\n if (!Number.isNaN(date.getTime())) {\n delay = date.getTime() - new Date().getTime();\n }\n } else {\n // Retry-After is a number of seconds\n delay = retryAfter * 1000;\n }\n }\n }\n }\n\n if (Number.isInteger(maxRetries) && maxRetries > 0) {\n if (Number.isInteger(delay) && delay > 0) {\n await sleep(interval * 2 ** (options.maxRetries - maxRetries));\n }\n attempts += 1;\n }\n } while (attempts < maxRetries);\n\n return request();\n}\n\n/**\n * Walks the inputs and, for any File or Blob, tries to upload it to Replicate\n * and replaces the input with the URL of the uploaded file.\n *\n * @param {Replicate} client - The client used to upload the file\n * @param {object} inputs - The inputs to transform\n * @param {\"default\" | \"upload\" | \"data-uri\"} strategy - Whether to upload files to Replicate, encode as dataURIs or try both.\n * @returns {Promise<object>} - The transformed inputs\n * @throws {ApiError} If the request to upload the file fails\n */\nasync function transformFileInputs(client, inputs, strategy) {\n switch (strategy) {\n case \"data-uri\":\n return await transformFileInputsToBase64EncodedDataURIs(client, inputs);\n case \"upload\":\n return await transformFileInputsToReplicateFileURLs(client, inputs);\n case \"default\":\n try {\n return await transformFileInputsToReplicateFileURLs(client, inputs);\n } catch (error) {\n if (\n error instanceof ApiError &&\n error.response.status >= 400 &&\n error.response.status < 500\n ) {\n throw error;\n }\n return await transformFileInputsToBase64EncodedDataURIs(inputs);\n }\n default:\n throw new Error(`Unexpected file upload strategy: ${strategy}`);\n }\n}\n\n/**\n * Walks the inputs and, for any File or Blob, tries to upload it to Replicate\n * and replaces the input with the URL of the uploaded file.\n *\n * @param {Replicate} client - The client used to upload the file\n * @param {object} inputs - The inputs to transform\n * @returns {Promise<object>} - The transformed inputs\n * @throws {ApiError} If the request to upload the file fails\n */\nasync function transformFileInputsToReplicateFileURLs(client, inputs) {\n return await transform(inputs, async (value) => {\n if (value instanceof Blob || value instanceof Buffer) {\n const file = await createFile.call(client, value);\n return file.urls.get;\n }\n\n return value;\n });\n}\n\nconst MAX_DATA_URI_SIZE = 10_000_000;\n\n/**\n * Walks the inputs and transforms any binary data found into a\n * base64-encoded data URI.\n *\n * @param {object} inputs - The inputs to transform\n * @returns {Promise<object>} - The transformed inputs\n * @throws {Error} If the size of inputs exceeds a given threshold set by MAX_DATA_URI_SIZE\n */\nasync function transformFileInputsToBase64EncodedDataURIs(inputs) {\n let totalBytes = 0;\n return await transform(inputs, async (value) => {\n let buffer;\n let mime;\n\n if (value instanceof Blob) {\n // Currently, we use a NodeJS only API for base64 encoding, as\n // we move to support the browser we could support either using\n // btoa (which does string encoding), the FileReader API or\n // a JavaScript implementation like base64-js.\n // See: https://developer.mozilla.org/en-US/docs/Glossary/Base64\n // See: https://github.com/beatgammit/base64-js\n buffer = await value.arrayBuffer();\n mime = value.type;\n } else if (isTypedArray(value)) {\n buffer = value;\n } else {\n return value;\n }\n\n totalBytes += buffer.byteLength;\n if (totalBytes > MAX_DATA_URI_SIZE) {\n throw new Error(\n `Combined filesize of prediction ${totalBytes} bytes exceeds 10mb limit for inline encoding, please provide URLs instead`\n );\n }\n\n const data = bytesToBase64(buffer);\n mime = mime || \"application/octet-stream\";\n\n return `data:${mime};base64,${data}`;\n });\n}\n\n// Walk a JavaScript object and transform the leaf values.\nasync function transform(value, mapper) {\n if (Array.isArray(value)) {\n const copy = [];\n for (const val of value) {\n const transformed = await transform(val, mapper);\n copy.push(transformed);\n }\n return copy;\n }\n\n if (isPlainObject(value)) {\n const copy = {};\n for (const key of Object.keys(value)) {\n copy[key] = await transform(value[key], mapper);\n }\n return copy;\n }\n\n return await mapper(value);\n}\n\nfunction isTypedArray(arr) {\n return (\n arr instanceof Int8Array ||\n arr instanceof Int16Array ||\n arr instanceof Int32Array ||\n arr instanceof Uint8Array ||\n arr instanceof Uint8ClampedArray ||\n arr instanceof Uint16Array ||\n arr instanceof Uint32Array ||\n arr instanceof Float32Array ||\n arr instanceof Float64Array\n );\n}\n\n// Test for a plain JS object.\n// Source: lodash.isPlainObject\nfunction isPlainObject(value) {\n const isObjectLike = typeof value === \"object\" && value !== null;\n if (!isObjectLike || String(value) !== \"[object Object]\") {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor =\n Object.prototype.hasOwnProperty.call(proto, \"constructor\") &&\n proto.constructor;\n return (\n typeof Ctor === \"function\" &&\n Ctor instanceof Ctor &&\n Function.prototype.toString.call(Ctor) ===\n Function.prototype.toString.call(Object)\n );\n}\n\n/**\n * Parse progress from prediction logs.\n *\n * This function supports log statements in the following format,\n * which are generated by https://github.com/tqdm/tqdm and similar libraries:\n *\n * ```\n * 76%|████████████████████████████ | 7568/10000 [00:33<00:10, 229.00it/s]\n * ```\n *\n * @example\n * const progress = parseProgressFromLogs(\"76%|████████████████████████████ | 7568/10000 [00:33<00:10, 229.00it/s]\");\n * console.log(progress);\n * // {\n * // percentage: 0.76,\n * // current: 7568,\n * // total: 10000,\n * // }\n *\n * @param {object|string} input - A prediction object or string.\n * @returns {(object|null)} - An object with the percentage, current, and total, or null if no progress can be parsed.\n */\nfunction parseProgressFromLogs(input) {\n const logs = typeof input === \"object\" && input.logs ? input.logs : input;\n if (!logs || typeof logs !== \"string\") {\n return null;\n }\n\n const pattern = /^\\s*(\\d+)%\\s*\\|.+?\\|\\s*(\\d+)\\/(\\d+)/;\n const lines = logs.split(\"\\n\").reverse();\n\n for (const line of lines) {\n const matches = line.match(pattern);\n\n if (matches && matches.length === 4) {\n return {\n percentage: parseInt(matches[1], 10) / 100,\n current: parseInt(matches[2], 10),\n total: parseInt(matches[3], 10),\n };\n }\n }\n\n return null;\n}\n\n/**\n * Helper to make any `ReadableStream` iterable, this is supported\n * by most server runtimes but browsers still haven't implemented\n * it yet.\n * See: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream#browser_compatibility\n *\n * @template T\n * @param {ReadableStream<T>} stream an instance of a `ReadableStream`\n * @yields {T} a chunk/event from the stream\n */\nasync function* streamAsyncIterator(stream) {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) return;\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nmodule.exports = {\n transform,\n transformFileInputs,\n validateWebhook,\n withAutomaticRetries,\n parseProgressFromLogs,\n streamAsyncIterator,\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL3V0aWwuanMiLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsK0ZBQVM7QUFDbEMsUUFBUSxxQkFBcUIsRUFBRSxtQkFBTyxDQUFDLCtGQUFTOztBQUVoRDtBQUNBLFNBQVM7QUFDVDtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxrQkFBa0I7QUFDL0IsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTiw2Q0FBNkMsWUFBWTtBQUN6RDtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLEdBQUcsR0FBRyxVQUFVLEdBQUcsS0FBSzs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLCtCQUErQjtBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxQkFBcUI7QUFDN0I7QUFDQSxXQUFXLDBCQUEwQjtBQUNyQyxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxtQkFBbUI7QUFDaEMsWUFBWSxVQUFVO0FBQ3RCO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsV0FBVztBQUN0QixXQUFXLFFBQVE7QUFDbkIsV0FBVyxtQ0FBbUM7QUFDOUMsYUFBYSxpQkFBaUI7QUFDOUIsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMERBQTBELFNBQVM7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsV0FBVztBQUN0QixXQUFXLFFBQVE7QUFDbkIsYUFBYSxpQkFBaUI7QUFDOUIsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsaUJBQWlCO0FBQzlCLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLFlBQVk7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixNQUFNLFNBQVMsS0FBSztBQUN2QyxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsYUFBYSxlQUFlO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtQkFBbUI7QUFDOUIsWUFBWSxHQUFHO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsY0FBYztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL3V0aWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQXBpRXJyb3IgPSByZXF1aXJlKFwiLi9lcnJvclwiKTtcbmNvbnN0IHsgY3JlYXRlOiBjcmVhdGVGaWxlIH0gPSByZXF1aXJlKFwiLi9maWxlc1wiKTtcblxuLyoqXG4gKiBAc2VlIHtAbGluayB2YWxpZGF0ZVdlYmhvb2t9XG4gKiBAb3ZlcmxvYWRcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXF1ZXN0RGF0YSAtIFRoZSByZXF1ZXN0IGRhdGFcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0RGF0YS5pZCAtIFRoZSB3ZWJob29rIElEIGhlYWRlciBmcm9tIHRoZSBpbmNvbWluZyByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3REYXRhLnRpbWVzdGFtcCAtIFRoZSB3ZWJob29rIHRpbWVzdGFtcCBoZWFkZXIgZnJvbSB0aGUgaW5jb21pbmcgcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0RGF0YS5ib2R5IC0gVGhlIHJhdyBib2R5IG9mIHRoZSBpbmNvbWluZyB3ZWJob29rIHJlcXVlc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdERhdGEuc2VjcmV0IC0gVGhlIHdlYmhvb2sgc2VjcmV0LCBvYnRhaW5lZCBmcm9tIGByZXBsaWNhdGUud2ViaG9va3MuZGVmYXVsLnNlY3JldGAgbWV0aG9kLlxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3REYXRhLnNpZ25hdHVyZSAtIFRoZSB3ZWJob29rIHNpZ25hdHVyZSBoZWFkZXIgZnJvbSB0aGUgaW5jb21pbmcgcmVxdWVzdCwgY29tcHJpc2luZyBvbmUgb3IgbW9yZSBzcGFjZS1kZWxpbWl0ZWQgc2lnbmF0dXJlcy5cbiAqIEBwYXJhbSB7Q3J5cHRvfSBbY3J5cHRvXSAtIEFuIG9wdGlvbmFsIGBDcnlwdG9gIGltcGxlbWVudGF0aW9uIHRoYXQgY29uZm9ybXMgdG8gdGhlIFticm93c2VyIENyeXB0byBpbnRlcmZhY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvY3J5cHRvKVxuICovXG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdmFsaWRhdGVXZWJob29rfVxuICogQG92ZXJsb2FkXG4gKiBAcGFyYW0ge29iamVjdH0gcmVxdWVzdERhdGEgLSBUaGUgcmVxdWVzdCBvYmplY3RcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXF1ZXN0RGF0YS5oZWFkZXJzIC0gVGhlIHJlcXVlc3QgaGVhZGVyc1xuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3REYXRhLmhlYWRlcnNbXCJ3ZWJob29rLWlkXCJdIC0gVGhlIHdlYmhvb2sgSUQgaGVhZGVyIGZyb20gdGhlIGluY29taW5nIHJlcXVlc3RcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0RGF0YS5oZWFkZXJzW1wid2ViaG9vay10aW1lc3RhbXBcIl0gLSBUaGUgd2ViaG9vayB0aW1lc3RhbXAgaGVhZGVyIGZyb20gdGhlIGluY29taW5nIHJlcXVlc3RcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0RGF0YS5oZWFkZXJzW1wid2ViaG9vay1zaWduYXR1cmVcIl0gLSBUaGUgd2ViaG9vayBzaWduYXR1cmUgaGVhZGVyIGZyb20gdGhlIGluY29taW5nIHJlcXVlc3QsIGNvbXByaXNpbmcgb25lIG9yIG1vcmUgc3BhY2UtZGVsaW1pdGVkIHNpZ25hdHVyZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0RGF0YS5ib2R5IC0gVGhlIHJhdyBib2R5IG9mIHRoZSBpbmNvbWluZyB3ZWJob29rIHJlcXVlc3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWNyZXQgLSBUaGUgd2ViaG9vayBzZWNyZXQsIG9idGFpbmVkIGZyb20gYHJlcGxpY2F0ZS53ZWJob29rcy5kZWZhdWwuc2VjcmV0YCBtZXRob2RcbiAqIEBwYXJhbSB7Q3J5cHRvfSBbY3J5cHRvXSAtIEFuIG9wdGlvbmFsIGBDcnlwdG9gIGltcGxlbWVudGF0aW9uIHRoYXQgY29uZm9ybXMgdG8gdGhlIFticm93c2VyIENyeXB0byBpbnRlcmZhY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvY3J5cHRvKVxuICovXG5cbi8qKlxuICogVmFsaWRhdGUgYSB3ZWJob29rIHNpZ25hdHVyZVxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZFxuICogQHRocm93cyB7RXJyb3J9IC0gSWYgdGhlIHJlcXVlc3QgaXMgbWlzc2luZyByZXF1aXJlZCBoZWFkZXJzLCBib2R5LCBvciBzZWNyZXRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVXZWJob29rKHJlcXVlc3REYXRhLCBzZWNyZXRPckNyeXB0bywgY3VzdG9tQ3J5cHRvKSB7XG4gIGxldCBpZDtcbiAgbGV0IGJvZHk7XG4gIGxldCB0aW1lc3RhbXA7XG4gIGxldCBzaWduYXR1cmU7XG4gIGxldCBzZWNyZXQ7XG4gIGxldCBjcnlwdG8gPSBnbG9iYWxUaGlzLmNyeXB0bztcblxuICBpZiAocmVxdWVzdERhdGEgJiYgcmVxdWVzdERhdGEuaGVhZGVycyAmJiByZXF1ZXN0RGF0YS5ib2R5KSB7XG4gICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YS5oZWFkZXJzLmdldCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAvLyBIZWFkZXJzIG9iamVjdCAoZS5nLiBGZXRjaCBBUEkgSGVhZGVycylcbiAgICAgIGlkID0gcmVxdWVzdERhdGEuaGVhZGVycy5nZXQoXCJ3ZWJob29rLWlkXCIpO1xuICAgICAgdGltZXN0YW1wID0gcmVxdWVzdERhdGEuaGVhZGVycy5nZXQoXCJ3ZWJob29rLXRpbWVzdGFtcFwiKTtcbiAgICAgIHNpZ25hdHVyZSA9IHJlcXVlc3REYXRhLmhlYWRlcnMuZ2V0KFwid2ViaG9vay1zaWduYXR1cmVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFBsYWluIG9iamVjdCB3aXRoIGhlYWRlciBrZXktdmFsdWUgcGFpcnNcbiAgICAgIGlkID0gcmVxdWVzdERhdGEuaGVhZGVyc1tcIndlYmhvb2staWRcIl07XG4gICAgICB0aW1lc3RhbXAgPSByZXF1ZXN0RGF0YS5oZWFkZXJzW1wid2ViaG9vay10aW1lc3RhbXBcIl07XG4gICAgICBzaWduYXR1cmUgPSByZXF1ZXN0RGF0YS5oZWFkZXJzW1wid2ViaG9vay1zaWduYXR1cmVcIl07XG4gICAgfVxuICAgIGJvZHkgPSByZXF1ZXN0RGF0YS5ib2R5O1xuICAgIGlmICh0eXBlb2Ygc2VjcmV0T3JDcnlwdG8gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJVbmV4cGVjdGVkIHZhbHVlIGZvciBzZWNyZXQgcGFzc2VkIHRvIHZhbGlkYXRlV2ViaG9vaywgZXhwZWN0ZWQgYSBzdHJpbmdcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzZWNyZXQgPSBzZWNyZXRPckNyeXB0bztcbiAgICBpZiAoY3VzdG9tQ3J5cHRvKSB7XG4gICAgICBjcnlwdG8gPSBjdXN0b21DcnlwdG87XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlkID0gcmVxdWVzdERhdGEuaWQ7XG4gICAgYm9keSA9IHJlcXVlc3REYXRhLmJvZHk7XG4gICAgdGltZXN0YW1wID0gcmVxdWVzdERhdGEudGltZXN0YW1wO1xuICAgIHNpZ25hdHVyZSA9IHJlcXVlc3REYXRhLnNpZ25hdHVyZTtcbiAgICBzZWNyZXQgPSByZXF1ZXN0RGF0YS5zZWNyZXQ7XG4gICAgaWYgKHNlY3JldE9yQ3J5cHRvKSB7XG4gICAgICBjcnlwdG8gPSBzZWNyZXRPckNyeXB0bztcbiAgICB9XG4gIH1cblxuICBpZiAoYm9keSBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtIHx8IGJvZHkucmVhZGFibGUpIHtcbiAgICB0cnkge1xuICAgICAgYm9keSA9IGF3YWl0IG5ldyBSZXNwb25zZShib2R5KS50ZXh0KCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHJlYWRpbmcgYm9keTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNUeXBlZEFycmF5KGJvZHkpKSB7XG4gICAgYm9keSA9IGF3YWl0IG5ldyBCbG9iKFtib2R5XSkudGV4dCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSBcIm9iamVjdFwiKSB7XG4gICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBib2R5IHR5cGVcIik7XG4gIH1cblxuICBpZiAoIWlkIHx8ICF0aW1lc3RhbXAgfHwgIXNpZ25hdHVyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgd2ViaG9vayBoZWFkZXJzXCIpO1xuICB9XG5cbiAgaWYgKCFib2R5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBib2R5XCIpO1xuICB9XG5cbiAgaWYgKCFzZWNyZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIHNlY3JldFwiKTtcbiAgfVxuXG4gIGlmICghY3J5cHRvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ01pc3NpbmcgYGNyeXB0b2AgaW1wbGVtZW50YXRpb24uIElmIHVzaW5nIE5vZGUgMTggcGFzcyBpbiByZXF1aXJlKFwibm9kZTpjcnlwdG9cIikud2ViY3J5cHRvJ1xuICAgICk7XG4gIH1cblxuICBjb25zdCBzaWduZWRDb250ZW50ID0gYCR7aWR9LiR7dGltZXN0YW1wfS4ke2JvZHl9YDtcblxuICBjb25zdCBjb21wdXRlZFNpZ25hdHVyZSA9IGF3YWl0IGNyZWF0ZUhNQUNTSEEyNTYoXG4gICAgc2VjcmV0LnNwbGl0KFwiX1wiKS5wb3AoKSxcbiAgICBzaWduZWRDb250ZW50LFxuICAgIGNyeXB0b1xuICApO1xuXG4gIGNvbnN0IGV4cGVjdGVkU2lnbmF0dXJlcyA9IHNpZ25hdHVyZVxuICAgIC5zcGxpdChcIiBcIilcbiAgICAubWFwKChzaWcpID0+IHNpZy5zcGxpdChcIixcIilbMV0pO1xuXG4gIHJldHVybiBleHBlY3RlZFNpZ25hdHVyZXMuc29tZShcbiAgICAoZXhwZWN0ZWRTaWduYXR1cmUpID0+IGV4cGVjdGVkU2lnbmF0dXJlID09PSBjb21wdXRlZFNpZ25hdHVyZVxuICApO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWNyZXQgLSBiYXNlNjQgZW5jb2RlZCBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gdGV4dCBib2R5IG9mIHJlcXVlc3RcbiAqIEBwYXJhbSB7Q3J5cHRvfSBjcnlwdG8gLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgd2ViIENyeXB0byBhcGlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSE1BQ1NIQTI1NihzZWNyZXQsIGRhdGEsIGNyeXB0bykge1xuICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KFxuICAgIFwicmF3XCIsXG4gICAgYmFzZTY0VG9CeXRlcyhzZWNyZXQpLFxuICAgIHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH0sXG4gICAgZmFsc2UsXG4gICAgW1wic2lnblwiXVxuICApO1xuXG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihcIkhNQUNcIiwga2V5LCBlbmNvZGVyLmVuY29kZShkYXRhKSk7XG4gIHJldHVybiBieXRlc1RvQmFzZTY0KHNpZ25hdHVyZSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBpbnRvIGJ5dGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aGUgYmFzZTY0IGVuY29kZWQgc3RyaW5nXG4gKiBAcmV0dXJuIHtVaW50OEFycmF5fVxuICpcbiAqIFR3byBmdW5jdGlvbnMgZm9yIGVuY29kaW5nL2RlY29kaW5nIGJhc2U2NCBzdHJpbmdzIHVzaW5nIHdlYiBzdGFuZGFyZHMuIE5vdFxuICogaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBlbmNvZGUvZGVjb2RlIGFyYml0cmFyeSBzdHJpbmcgZGF0YS5cbiAqIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9CYXNlNjQjamF2YXNjcmlwdF9zdXBwb3J0XG4gKiBTZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMTYyMTUzMlxuICpcbiAqIFBlcmZvcm1hbmNlIG1pZ2h0IHRha2UgYSBoaXQgYmVjYXVzZSBvZiB0aGUgY29udmVyc2lvbiB0byBzdHJpbmcgYW5kIHRoZW4gdG8gYmluYXJ5LFxuICogaWYgdGhpcyBpcyB0aGUgY2FzZSB3ZSBtaWdodCB3YW50IHRvIGxvb2sgYXQgYW4gYWx0ZXJuYXRpdmUgc29sdXRpb24uXG4gKiBTZWU6IGh0dHBzOi8vanNiZW4uY2gvd25hWkNcbiAqL1xuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyhiYXNlNjQpIHtcbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NCksIChtKSA9PiBtLmNvZGVQb2ludEF0KDApKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nIGludG8gYnl0ZXMuXG4gKlxuICogU2VlIHtAbGluayBiYXNlNjRUb0J5dGVzfSBmb3IgY2F2ZWF0cy5cbiAqXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXkgfCBBcnJheUJ1ZmZlcn0gdGhlIGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBieXRlc1RvQmFzZTY0KGJ5dGVzKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKSk7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSByZXRyeSBhIHJlcXVlc3QgaWYgaXQgZmFpbHMgd2l0aCBhbiBhcHByb3ByaWF0ZSBzdGF0dXMgY29kZS5cbiAqXG4gKiBBIEdFVCByZXF1ZXN0IGlzIHJldHJpZWQgaWYgaXQgZmFpbHMgd2l0aCBhIDQyOSBvciA1eHggc3RhdHVzIGNvZGUuXG4gKiBBIG5vbi1HRVQgcmVxdWVzdCBpcyByZXRyaWVkIG9ubHkgaWYgaXQgZmFpbHMgd2l0aCBhIDQyOSBzdGF0dXMgY29kZS5cbiAqXG4gKiBJZiB0aGUgcmVzcG9uc2Ugc2V0cyBhIFJldHJ5LUFmdGVyIGhlYWRlcixcbiAqIHRoZSByZXF1ZXN0IGlzIHJldHJpZWQgYWZ0ZXIgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZCBpbiB0aGUgaGVhZGVyLlxuICogT3RoZXJ3aXNlLCB0aGUgcmVxdWVzdCBpcyByZXRyaWVkIGFmdGVyIHRoZSBzcGVjaWZpZWQgaW50ZXJ2YWwsXG4gKiB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgYW5kIGppdHRlci5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXF1ZXN0IC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIFJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLnNob3VsZFJldHJ5XSAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHJlcXVlc3Qgc2hvdWxkIGJlIHJldHJpZWRcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhSZXRyaWVzXSAtIE1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMuIERlZmF1bHRzIHRvIDVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5pbnRlcnZhbF0gLSBJbnRlcnZhbCBiZXR3ZWVuIHJldHJpZXMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byA1MDBcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3BvbnNlPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBvYmplY3RcbiAqIEB0aHJvd3Mge0FwaUVycm9yfSBJZiB0aGUgcmVxdWVzdCBmYWlsZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gd2l0aEF1dG9tYXRpY1JldHJpZXMocmVxdWVzdCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHNob3VsZFJldHJ5ID0gb3B0aW9ucy5zaG91bGRSZXRyeSB8fCAoKCkgPT4gZmFsc2UpO1xuICBjb25zdCBtYXhSZXRyaWVzID0gb3B0aW9ucy5tYXhSZXRyaWVzIHx8IDU7XG4gIGNvbnN0IGludGVydmFsID0gb3B0aW9ucy5pbnRlcnZhbCB8fCA1MDA7XG4gIGNvbnN0IGppdHRlciA9IG9wdGlvbnMuaml0dGVyIHx8IDEwMDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvbWlzZS1leGVjdXRvci1yZXR1cm5cbiAgY29uc3Qgc2xlZXAgPSAobXMpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG5cbiAgbGV0IGF0dGVtcHRzID0gMDtcbiAgZG8ge1xuICAgIGxldCBkZWxheSA9IGludGVydmFsICogMiAqKiBhdHRlbXB0cyArIE1hdGgucmFuZG9tKCkgKiBqaXR0ZXI7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdCgpO1xuICAgICAgaWYgKHJlc3BvbnNlLm9rIHx8ICFzaG91bGRSZXRyeShyZXNwb25zZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvcikge1xuICAgICAgICBjb25zdCByZXRyeUFmdGVyID0gZXJyb3IucmVzcG9uc2UuaGVhZGVycy5nZXQoXCJSZXRyeS1BZnRlclwiKTtcbiAgICAgICAgaWYgKHJldHJ5QWZ0ZXIpIHtcbiAgICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocmV0cnlBZnRlcikpIHtcbiAgICAgICAgICAgIC8vIFJldHJ5LUFmdGVyIGlzIGEgZGF0ZVxuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHJldHJ5QWZ0ZXIpO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGRlbGF5ID0gZGF0ZS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUmV0cnktQWZ0ZXIgaXMgYSBudW1iZXIgb2Ygc2Vjb25kc1xuICAgICAgICAgICAgZGVsYXkgPSByZXRyeUFmdGVyICogMTAwMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihtYXhSZXRyaWVzKSAmJiBtYXhSZXRyaWVzID4gMCkge1xuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIoZGVsYXkpICYmIGRlbGF5ID4gMCkge1xuICAgICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbCAqIDIgKiogKG9wdGlvbnMubWF4UmV0cmllcyAtIG1heFJldHJpZXMpKTtcbiAgICAgIH1cbiAgICAgIGF0dGVtcHRzICs9IDE7XG4gICAgfVxuICB9IHdoaWxlIChhdHRlbXB0cyA8IG1heFJldHJpZXMpO1xuXG4gIHJldHVybiByZXF1ZXN0KCk7XG59XG5cbi8qKlxuICogV2Fsa3MgdGhlIGlucHV0cyBhbmQsIGZvciBhbnkgRmlsZSBvciBCbG9iLCB0cmllcyB0byB1cGxvYWQgaXQgdG8gUmVwbGljYXRlXG4gKiBhbmQgcmVwbGFjZXMgdGhlIGlucHV0IHdpdGggdGhlIFVSTCBvZiB0aGUgdXBsb2FkZWQgZmlsZS5cbiAqXG4gKiBAcGFyYW0ge1JlcGxpY2F0ZX0gY2xpZW50IC0gVGhlIGNsaWVudCB1c2VkIHRvIHVwbG9hZCB0aGUgZmlsZVxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0cyAtIFRoZSBpbnB1dHMgdG8gdHJhbnNmb3JtXG4gKiBAcGFyYW0ge1wiZGVmYXVsdFwiIHwgXCJ1cGxvYWRcIiB8IFwiZGF0YS11cmlcIn0gc3RyYXRlZ3kgLSBXaGV0aGVyIHRvIHVwbG9hZCBmaWxlcyB0byBSZXBsaWNhdGUsIGVuY29kZSBhcyBkYXRhVVJJcyBvciB0cnkgYm90aC5cbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IC0gVGhlIHRyYW5zZm9ybWVkIGlucHV0c1xuICogQHRocm93cyB7QXBpRXJyb3J9IElmIHRoZSByZXF1ZXN0IHRvIHVwbG9hZCB0aGUgZmlsZSBmYWlsc1xuICovXG5hc3luYyBmdW5jdGlvbiB0cmFuc2Zvcm1GaWxlSW5wdXRzKGNsaWVudCwgaW5wdXRzLCBzdHJhdGVneSkge1xuICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgY2FzZSBcImRhdGEtdXJpXCI6XG4gICAgICByZXR1cm4gYXdhaXQgdHJhbnNmb3JtRmlsZUlucHV0c1RvQmFzZTY0RW5jb2RlZERhdGFVUklzKGNsaWVudCwgaW5wdXRzKTtcbiAgICBjYXNlIFwidXBsb2FkXCI6XG4gICAgICByZXR1cm4gYXdhaXQgdHJhbnNmb3JtRmlsZUlucHV0c1RvUmVwbGljYXRlRmlsZVVSTHMoY2xpZW50LCBpbnB1dHMpO1xuICAgIGNhc2UgXCJkZWZhdWx0XCI6XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdHJhbnNmb3JtRmlsZUlucHV0c1RvUmVwbGljYXRlRmlsZVVSTHMoY2xpZW50LCBpbnB1dHMpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgQXBpRXJyb3IgJiZcbiAgICAgICAgICBlcnJvci5yZXNwb25zZS5zdGF0dXMgPj0gNDAwICYmXG4gICAgICAgICAgZXJyb3IucmVzcG9uc2Uuc3RhdHVzIDwgNTAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0cmFuc2Zvcm1GaWxlSW5wdXRzVG9CYXNlNjRFbmNvZGVkRGF0YVVSSXMoaW5wdXRzKTtcbiAgICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGZpbGUgdXBsb2FkIHN0cmF0ZWd5OiAke3N0cmF0ZWd5fWApO1xuICB9XG59XG5cbi8qKlxuICogV2Fsa3MgdGhlIGlucHV0cyBhbmQsIGZvciBhbnkgRmlsZSBvciBCbG9iLCB0cmllcyB0byB1cGxvYWQgaXQgdG8gUmVwbGljYXRlXG4gKiBhbmQgcmVwbGFjZXMgdGhlIGlucHV0IHdpdGggdGhlIFVSTCBvZiB0aGUgdXBsb2FkZWQgZmlsZS5cbiAqXG4gKiBAcGFyYW0ge1JlcGxpY2F0ZX0gY2xpZW50IC0gVGhlIGNsaWVudCB1c2VkIHRvIHVwbG9hZCB0aGUgZmlsZVxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0cyAtIFRoZSBpbnB1dHMgdG8gdHJhbnNmb3JtXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxvYmplY3Q+fSAtIFRoZSB0cmFuc2Zvcm1lZCBpbnB1dHNcbiAqIEB0aHJvd3Mge0FwaUVycm9yfSBJZiB0aGUgcmVxdWVzdCB0byB1cGxvYWQgdGhlIGZpbGUgZmFpbHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtRmlsZUlucHV0c1RvUmVwbGljYXRlRmlsZVVSTHMoY2xpZW50LCBpbnB1dHMpIHtcbiAgcmV0dXJuIGF3YWl0IHRyYW5zZm9ybShpbnB1dHMsIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgfHwgdmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBjcmVhdGVGaWxlLmNhbGwoY2xpZW50LCB2YWx1ZSk7XG4gICAgICByZXR1cm4gZmlsZS51cmxzLmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0pO1xufVxuXG5jb25zdCBNQVhfREFUQV9VUklfU0laRSA9IDEwXzAwMF8wMDA7XG5cbi8qKlxuICogV2Fsa3MgdGhlIGlucHV0cyBhbmQgdHJhbnNmb3JtcyBhbnkgYmluYXJ5IGRhdGEgZm91bmQgaW50byBhXG4gKiBiYXNlNjQtZW5jb2RlZCBkYXRhIFVSSS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gaW5wdXRzIC0gVGhlIGlucHV0cyB0byB0cmFuc2Zvcm1cbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IC0gVGhlIHRyYW5zZm9ybWVkIGlucHV0c1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBzaXplIG9mIGlucHV0cyBleGNlZWRzIGEgZ2l2ZW4gdGhyZXNob2xkIHNldCBieSBNQVhfREFUQV9VUklfU0laRVxuICovXG5hc3luYyBmdW5jdGlvbiB0cmFuc2Zvcm1GaWxlSW5wdXRzVG9CYXNlNjRFbmNvZGVkRGF0YVVSSXMoaW5wdXRzKSB7XG4gIGxldCB0b3RhbEJ5dGVzID0gMDtcbiAgcmV0dXJuIGF3YWl0IHRyYW5zZm9ybShpbnB1dHMsIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgIGxldCBidWZmZXI7XG4gICAgbGV0IG1pbWU7XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAvLyBDdXJyZW50bHksIHdlIHVzZSBhIE5vZGVKUyBvbmx5IEFQSSBmb3IgYmFzZTY0IGVuY29kaW5nLCBhc1xuICAgICAgLy8gd2UgbW92ZSB0byBzdXBwb3J0IHRoZSBicm93c2VyIHdlIGNvdWxkIHN1cHBvcnQgZWl0aGVyIHVzaW5nXG4gICAgICAvLyBidG9hICh3aGljaCBkb2VzIHN0cmluZyBlbmNvZGluZyksIHRoZSBGaWxlUmVhZGVyIEFQSSBvclxuICAgICAgLy8gYSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIGxpa2UgYmFzZTY0LWpzLlxuICAgICAgLy8gU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0Jhc2U2NFxuICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanNcbiAgICAgIGJ1ZmZlciA9IGF3YWl0IHZhbHVlLmFycmF5QnVmZmVyKCk7XG4gICAgICBtaW1lID0gdmFsdWUudHlwZTtcbiAgICB9IGVsc2UgaWYgKGlzVHlwZWRBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGJ1ZmZlciA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdG90YWxCeXRlcyArPSBidWZmZXIuYnl0ZUxlbmd0aDtcbiAgICBpZiAodG90YWxCeXRlcyA+IE1BWF9EQVRBX1VSSV9TSVpFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb21iaW5lZCBmaWxlc2l6ZSBvZiBwcmVkaWN0aW9uICR7dG90YWxCeXRlc30gYnl0ZXMgZXhjZWVkcyAxMG1iIGxpbWl0IGZvciBpbmxpbmUgZW5jb2RpbmcsIHBsZWFzZSBwcm92aWRlIFVSTHMgaW5zdGVhZGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IGJ5dGVzVG9CYXNlNjQoYnVmZmVyKTtcbiAgICBtaW1lID0gbWltZSB8fCBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiO1xuXG4gICAgcmV0dXJuIGBkYXRhOiR7bWltZX07YmFzZTY0LCR7ZGF0YX1gO1xuICB9KTtcbn1cblxuLy8gV2FsayBhIEphdmFTY3JpcHQgb2JqZWN0IGFuZCB0cmFuc2Zvcm0gdGhlIGxlYWYgdmFsdWVzLlxuYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtKHZhbHVlLCBtYXBwZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgY29weSA9IFtdO1xuICAgIGZvciAoY29uc3QgdmFsIG9mIHZhbHVlKSB7XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IGF3YWl0IHRyYW5zZm9ybSh2YWwsIG1hcHBlcik7XG4gICAgICBjb3B5LnB1c2godHJhbnNmb3JtZWQpO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgIGNvbnN0IGNvcHkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICAgIGNvcHlba2V5XSA9IGF3YWl0IHRyYW5zZm9ybSh2YWx1ZVtrZXldLCBtYXBwZXIpO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBtYXBwZXIodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBpc1R5cGVkQXJyYXkoYXJyKSB7XG4gIHJldHVybiAoXG4gICAgYXJyIGluc3RhbmNlb2YgSW50OEFycmF5IHx8XG4gICAgYXJyIGluc3RhbmNlb2YgSW50MTZBcnJheSB8fFxuICAgIGFyciBpbnN0YW5jZW9mIEludDMyQXJyYXkgfHxcbiAgICBhcnIgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8XG4gICAgYXJyIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkgfHxcbiAgICBhcnIgaW5zdGFuY2VvZiBVaW50MTZBcnJheSB8fFxuICAgIGFyciBpbnN0YW5jZW9mIFVpbnQzMkFycmF5IHx8XG4gICAgYXJyIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8XG4gICAgYXJyIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5XG4gICk7XG59XG5cbi8vIFRlc3QgZm9yIGEgcGxhaW4gSlMgb2JqZWN0LlxuLy8gU291cmNlOiBsb2Rhc2guaXNQbGFpbk9iamVjdFxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBjb25zdCBpc09iamVjdExpa2UgPSB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGw7XG4gIGlmICghaXNPYmplY3RMaWtlIHx8IFN0cmluZyh2YWx1ZSkgIT09IFwiW29iamVjdCBPYmplY3RdXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBDdG9yID1cbiAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvdG8sIFwiY29uc3RydWN0b3JcIikgJiZcbiAgICBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgQ3RvciA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChDdG9yKSA9PT1cbiAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE9iamVjdClcbiAgKTtcbn1cblxuLyoqXG4gKiBQYXJzZSBwcm9ncmVzcyBmcm9tIHByZWRpY3Rpb24gbG9ncy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIGxvZyBzdGF0ZW1lbnRzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0LFxuICogd2hpY2ggYXJlIGdlbmVyYXRlZCBieSBodHRwczovL2dpdGh1Yi5jb20vdHFkbS90cWRtIGFuZCBzaW1pbGFyIGxpYnJhcmllczpcbiAqXG4gKiBgYGBcbiAqIDc2JXzilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojiloggICAgICAgICB8IDc1NjgvMTAwMDAgWzAwOjMzPDAwOjEwLCAyMjkuMDBpdC9zXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHByb2dyZXNzID0gcGFyc2VQcm9ncmVzc0Zyb21Mb2dzKFwiNzYlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiCAgICAgICAgIHwgNzU2OC8xMDAwMCBbMDA6MzM8MDA6MTAsIDIyOS4wMGl0L3NdXCIpO1xuICogY29uc29sZS5sb2cocHJvZ3Jlc3MpO1xuICogLy8ge1xuICogLy8gICBwZXJjZW50YWdlOiAwLjc2LFxuICogLy8gICBjdXJyZW50OiA3NTY4LFxuICogLy8gICB0b3RhbDogMTAwMDAsXG4gKiAvLyB9XG4gKlxuICogQHBhcmFtIHtvYmplY3R8c3RyaW5nfSBpbnB1dCAtIEEgcHJlZGljdGlvbiBvYmplY3Qgb3Igc3RyaW5nLlxuICogQHJldHVybnMgeyhvYmplY3R8bnVsbCl9IC0gQW4gb2JqZWN0IHdpdGggdGhlIHBlcmNlbnRhZ2UsIGN1cnJlbnQsIGFuZCB0b3RhbCwgb3IgbnVsbCBpZiBubyBwcm9ncmVzcyBjYW4gYmUgcGFyc2VkLlxuICovXG5mdW5jdGlvbiBwYXJzZVByb2dyZXNzRnJvbUxvZ3MoaW5wdXQpIHtcbiAgY29uc3QgbG9ncyA9IHR5cGVvZiBpbnB1dCA9PT0gXCJvYmplY3RcIiAmJiBpbnB1dC5sb2dzID8gaW5wdXQubG9ncyA6IGlucHV0O1xuICBpZiAoIWxvZ3MgfHwgdHlwZW9mIGxvZ3MgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBhdHRlcm4gPSAvXlxccyooXFxkKyklXFxzKlxcfC4rP1xcfFxccyooXFxkKylcXC8oXFxkKykvO1xuICBjb25zdCBsaW5lcyA9IGxvZ3Muc3BsaXQoXCJcXG5cIikucmV2ZXJzZSgpO1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBsaW5lLm1hdGNoKHBhdHRlcm4pO1xuXG4gICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBlcmNlbnRhZ2U6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSAvIDEwMCxcbiAgICAgICAgY3VycmVudDogcGFyc2VJbnQobWF0Y2hlc1syXSwgMTApLFxuICAgICAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1szXSwgMTApLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdG8gbWFrZSBhbnkgYFJlYWRhYmxlU3RyZWFtYCBpdGVyYWJsZSwgdGhpcyBpcyBzdXBwb3J0ZWRcbiAqIGJ5IG1vc3Qgc2VydmVyIHJ1bnRpbWVzIGJ1dCBicm93c2VycyBzdGlsbCBoYXZlbid0IGltcGxlbWVudGVkXG4gKiBpdCB5ZXQuXG4gKiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZWFkYWJsZVN0cmVhbSNicm93c2VyX2NvbXBhdGliaWxpdHlcbiAqXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtSZWFkYWJsZVN0cmVhbTxUPn0gc3RyZWFtIGFuIGluc3RhbmNlIG9mIGEgYFJlYWRhYmxlU3RyZWFtYFxuICogQHlpZWxkcyB7VH0gYSBjaHVuay9ldmVudCBmcm9tIHRoZSBzdHJlYW1cbiAqL1xuYXN5bmMgZnVuY3Rpb24qIHN0cmVhbUFzeW5jSXRlcmF0b3Ioc3RyZWFtKSB7XG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIGlmIChkb25lKSByZXR1cm47XG4gICAgICB5aWVsZCB2YWx1ZTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHRyYW5zZm9ybSxcbiAgdHJhbnNmb3JtRmlsZUlucHV0cyxcbiAgdmFsaWRhdGVXZWJob29rLFxuICB3aXRoQXV0b21hdGljUmV0cmllcyxcbiAgcGFyc2VQcm9ncmVzc0Zyb21Mb2dzLFxuICBzdHJlYW1Bc3luY0l0ZXJhdG9yLFxufTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/util.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/webhooks.js":
|
|
/*!***********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/webhooks.js ***!
|
|
\***********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("/**\n * Get the default webhook signing secret\n *\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] - An optional AbortSignal\n * @returns {Promise<object>} Resolves with the signing secret for the default webhook\n */\nasync function getDefaultWebhookSecret({ signal } = {}) {\n const response = await this.request(\"/webhooks/default/secret\", {\n method: \"GET\",\n signal,\n });\n\n return response.json();\n}\n\nmodule.exports = {\n default: {\n secret: {\n get: getDefaultWebhookSecret,\n },\n },\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL3dlYmhvb2tzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSx5Q0FBeUMsU0FBUyxJQUFJO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvbGliL3dlYmhvb2tzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IHdlYmhvb2sgc2lnbmluZyBzZWNyZXRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBbb3B0aW9ucy5zaWduYWxdIC0gQW4gb3B0aW9uYWwgQWJvcnRTaWduYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPG9iamVjdD59IFJlc29sdmVzIHdpdGggdGhlIHNpZ25pbmcgc2VjcmV0IGZvciB0aGUgZGVmYXVsdCB3ZWJob29rXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERlZmF1bHRXZWJob29rU2VjcmV0KHsgc2lnbmFsIH0gPSB7fSkge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcIi93ZWJob29rcy9kZWZhdWx0L3NlY3JldFwiLCB7XG4gICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgIHNpZ25hbCxcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRlZmF1bHQ6IHtcbiAgICBzZWNyZXQ6IHtcbiAgICAgIGdldDogZ2V0RGVmYXVsdFdlYmhvb2tTZWNyZXQsXG4gICAgfSxcbiAgfSxcbn07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/lib/webhooks.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/package.json":
|
|
/*!********************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/package.json ***!
|
|
\********************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
"use strict";
|
|
module.exports = /*#__PURE__*/JSON.parse('{"name":"replicate","version":"1.4.0","description":"JavaScript client for Replicate","repository":"github:replicate/replicate-javascript","homepage":"https://github.com/replicate/replicate-javascript#readme","bugs":"https://github.com/replicate/replicate-javascript/issues","license":"Apache-2.0","main":"index.js","type":"commonjs","types":"index.d.ts","files":["CONTRIBUTING.md","LICENSE","README.md","index.d.ts","index.js","lib/**/*.js","vendor/**/*","package.json"],"engines":{"node":">=18.0.0","npm":">=7.19.0","git":">=2.11.0","yarn":">=1.7.0"},"scripts":{"check":"tsc","format":"biome format . --write","lint-biome":"biome lint .","lint-publint":"publint","lint":"npm run lint-biome && npm run lint-publint","test":"jest"},"optionalDependencies":{"readable-stream":">=4.0.0"},"devDependencies":{"@biomejs/biome":"^1.4.1","@types/jest":"^29.5.3","@typescript-eslint/eslint-plugin":"^5.56.0","cross-fetch":"^3.1.5","jest":"^29.7.0","nock":"^14.0.0-beta.6","publint":"^0.2.7","ts-jest":"^29.1.0","typescript":"^5.0.2"}}');
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/eventsource-parser/stream.js":
|
|
/*!*******************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/eventsource-parser/stream.js ***!
|
|
\*******************************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("// Source: https://github.com/rexxars/eventsource-parser/tree/v1.1.2\n//\n// MIT License\n//\n// Copyright (c) 2024 Espen Hovlandsdal <espen@hovlandsdal.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if ((from && typeof from === \"object\") || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, {\n get: () => from[key],\n enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable,\n });\n }\n return to;\n};\nvar __toCommonJS = (mod) =>\n __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// /input.ts\nvar input_exports = {};\n__export(input_exports, {\n EventSourceParserStream: () => EventSourceParserStream,\n});\nmodule.exports = __toCommonJS(input_exports);\n\n// http-url:https://unpkg.com/eventsource-parser@1.1.2/dist/index.js\nfunction createParser(onParse) {\n let isFirstChunk;\n let buffer;\n let startingPosition;\n let startingFieldLength;\n let eventId;\n let eventName;\n let data;\n reset();\n return {\n feed,\n reset,\n };\n function reset() {\n isFirstChunk = true;\n buffer = \"\";\n startingPosition = 0;\n startingFieldLength = -1;\n eventId = void 0;\n eventName = void 0;\n data = \"\";\n }\n function feed(chunk) {\n buffer = buffer ? buffer + chunk : chunk;\n if (isFirstChunk && hasBom(buffer)) {\n buffer = buffer.slice(BOM.length);\n }\n isFirstChunk = false;\n const length = buffer.length;\n let position = 0;\n let discardTrailingNewline = false;\n while (position < length) {\n if (discardTrailingNewline) {\n if (buffer[position] === \"\\n\") {\n ++position;\n }\n discardTrailingNewline = false;\n }\n let lineLength = -1;\n let fieldLength = startingFieldLength;\n let character;\n for (\n let index = startingPosition;\n lineLength < 0 && index < length;\n ++index\n ) {\n character = buffer[index];\n if (character === \":\" && fieldLength < 0) {\n fieldLength = index - position;\n } else if (character === \"\\r\") {\n discardTrailingNewline = true;\n lineLength = index - position;\n } else if (character === \"\\n\") {\n lineLength = index - position;\n }\n }\n if (lineLength < 0) {\n startingPosition = length - position;\n startingFieldLength = fieldLength;\n break;\n } else {\n startingPosition = 0;\n startingFieldLength = -1;\n }\n parseEventStreamLine(buffer, position, fieldLength, lineLength);\n position += lineLength + 1;\n }\n if (position === length) {\n buffer = \"\";\n } else if (position > 0) {\n buffer = buffer.slice(position);\n }\n }\n function parseEventStreamLine(lineBuffer, index, fieldLength, lineLength) {\n if (lineLength === 0) {\n if (data.length > 0) {\n onParse({\n type: \"event\",\n id: eventId,\n event: eventName || void 0,\n data: data.slice(0, -1),\n // remove trailing newline\n });\n data = \"\";\n eventId = void 0;\n }\n eventName = void 0;\n return;\n }\n const noValue = fieldLength < 0;\n const field = lineBuffer.slice(\n index,\n index + (noValue ? lineLength : fieldLength)\n );\n let step = 0;\n if (noValue) {\n step = lineLength;\n } else if (lineBuffer[index + fieldLength + 1] === \" \") {\n step = fieldLength + 2;\n } else {\n step = fieldLength + 1;\n }\n const position = index + step;\n const valueLength = lineLength - step;\n const value = lineBuffer.slice(position, position + valueLength).toString();\n if (field === \"data\") {\n data += value ? \"\".concat(value, \"\\n\") : \"\\n\";\n } else if (field === \"event\") {\n eventName = value;\n } else if (field === \"id\" && !value.includes(\"\\0\")) {\n eventId = value;\n } else if (field === \"retry\") {\n const retry = parseInt(value, 10);\n if (!Number.isNaN(retry)) {\n onParse({\n type: \"reconnect-interval\",\n value: retry,\n });\n }\n }\n }\n}\nvar BOM = [239, 187, 191];\nfunction hasBom(buffer) {\n return BOM.every((charCode, index) => buffer.charCodeAt(index) === charCode);\n}\n\n// http-url:https://unpkg.com/eventsource-parser@1.1.2/dist/stream.js\nvar EventSourceParserStream = class extends TransformStream {\n constructor() {\n let parser;\n super({\n start(controller) {\n parser = createParser((event) => {\n if (event.type === \"event\") {\n controller.enqueue(event);\n }\n });\n },\n transform(chunk) {\n parser.feed(chunk);\n },\n });\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvdmVuZG9yL2V2ZW50c291cmNlLXBhcnNlci9zdHJlYW0uanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrQ0FBa0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixrQkFBa0IsYUFBYTs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3JlcGxpY2F0ZUAxLjQuMC9ub2RlX21vZHVsZXMvcmVwbGljYXRlL3ZlbmRvci9ldmVudHNvdXJjZS1wYXJzZXIvc3RyZWFtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL3JleHhhcnMvZXZlbnRzb3VyY2UtcGFyc2VyL3RyZWUvdjEuMS4yXG4vL1xuLy8gTUlUIExpY2Vuc2Vcbi8vXG4vLyBDb3B5cmlnaHQgKGMpIDIwMjQgRXNwZW4gSG92bGFuZHNkYWwgPGVzcGVuQGhvdmxhbmRzZGFsLmNvbT5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4vLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoKGZyb20gJiYgdHlwZW9mIGZyb20gPT09IFwib2JqZWN0XCIpIHx8IHR5cGVvZiBmcm9tID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBmb3IgKGxldCBrZXkgb2YgX19nZXRPd25Qcm9wTmFtZXMoZnJvbSkpXG4gICAgICBpZiAoIV9faGFzT3duUHJvcC5jYWxsKHRvLCBrZXkpICYmIGtleSAhPT0gZXhjZXB0KVxuICAgICAgICBfX2RlZlByb3AodG8sIGtleSwge1xuICAgICAgICAgIGdldDogKCkgPT4gZnJvbVtrZXldLFxuICAgICAgICAgIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlLFxuICAgICAgICB9KTtcbiAgfVxuICByZXR1cm4gdG87XG59O1xudmFyIF9fdG9Db21tb25KUyA9IChtb2QpID0+XG4gIF9fY29weVByb3BzKF9fZGVmUHJvcCh7fSwgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSksIG1vZCk7XG5cbi8vIC9pbnB1dC50c1xudmFyIGlucHV0X2V4cG9ydHMgPSB7fTtcbl9fZXhwb3J0KGlucHV0X2V4cG9ydHMsIHtcbiAgRXZlbnRTb3VyY2VQYXJzZXJTdHJlYW06ICgpID0+IEV2ZW50U291cmNlUGFyc2VyU3RyZWFtLFxufSk7XG5tb2R1bGUuZXhwb3J0cyA9IF9fdG9Db21tb25KUyhpbnB1dF9leHBvcnRzKTtcblxuLy8gaHR0cC11cmw6aHR0cHM6Ly91bnBrZy5jb20vZXZlbnRzb3VyY2UtcGFyc2VyQDEuMS4yL2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlcihvblBhcnNlKSB7XG4gIGxldCBpc0ZpcnN0Q2h1bms7XG4gIGxldCBidWZmZXI7XG4gIGxldCBzdGFydGluZ1Bvc2l0aW9uO1xuICBsZXQgc3RhcnRpbmdGaWVsZExlbmd0aDtcbiAgbGV0IGV2ZW50SWQ7XG4gIGxldCBldmVudE5hbWU7XG4gIGxldCBkYXRhO1xuICByZXNldCgpO1xuICByZXR1cm4ge1xuICAgIGZlZWQsXG4gICAgcmVzZXQsXG4gIH07XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlzRmlyc3RDaHVuayA9IHRydWU7XG4gICAgYnVmZmVyID0gXCJcIjtcbiAgICBzdGFydGluZ1Bvc2l0aW9uID0gMDtcbiAgICBzdGFydGluZ0ZpZWxkTGVuZ3RoID0gLTE7XG4gICAgZXZlbnRJZCA9IHZvaWQgMDtcbiAgICBldmVudE5hbWUgPSB2b2lkIDA7XG4gICAgZGF0YSA9IFwiXCI7XG4gIH1cbiAgZnVuY3Rpb24gZmVlZChjaHVuaykge1xuICAgIGJ1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlciArIGNodW5rIDogY2h1bms7XG4gICAgaWYgKGlzRmlyc3RDaHVuayAmJiBoYXNCb20oYnVmZmVyKSkge1xuICAgICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKEJPTS5sZW5ndGgpO1xuICAgIH1cbiAgICBpc0ZpcnN0Q2h1bmsgPSBmYWxzZTtcbiAgICBjb25zdCBsZW5ndGggPSBidWZmZXIubGVuZ3RoO1xuICAgIGxldCBwb3NpdGlvbiA9IDA7XG4gICAgbGV0IGRpc2NhcmRUcmFpbGluZ05ld2xpbmUgPSBmYWxzZTtcbiAgICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICAgIGlmIChkaXNjYXJkVHJhaWxpbmdOZXdsaW5lKSB7XG4gICAgICAgIGlmIChidWZmZXJbcG9zaXRpb25dID09PSBcIlxcblwiKSB7XG4gICAgICAgICAgKytwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBkaXNjYXJkVHJhaWxpbmdOZXdsaW5lID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBsZXQgbGluZUxlbmd0aCA9IC0xO1xuICAgICAgbGV0IGZpZWxkTGVuZ3RoID0gc3RhcnRpbmdGaWVsZExlbmd0aDtcbiAgICAgIGxldCBjaGFyYWN0ZXI7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgaW5kZXggPSBzdGFydGluZ1Bvc2l0aW9uO1xuICAgICAgICBsaW5lTGVuZ3RoIDwgMCAmJiBpbmRleCA8IGxlbmd0aDtcbiAgICAgICAgKytpbmRleFxuICAgICAgKSB7XG4gICAgICAgIGNoYXJhY3RlciA9IGJ1ZmZlcltpbmRleF07XG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IFwiOlwiICYmIGZpZWxkTGVuZ3RoIDwgMCkge1xuICAgICAgICAgIGZpZWxkTGVuZ3RoID0gaW5kZXggLSBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IFwiXFxyXCIpIHtcbiAgICAgICAgICBkaXNjYXJkVHJhaWxpbmdOZXdsaW5lID0gdHJ1ZTtcbiAgICAgICAgICBsaW5lTGVuZ3RoID0gaW5kZXggLSBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICBsaW5lTGVuZ3RoID0gaW5kZXggLSBwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxpbmVMZW5ndGggPCAwKSB7XG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb24gPSBsZW5ndGggLSBwb3NpdGlvbjtcbiAgICAgICAgc3RhcnRpbmdGaWVsZExlbmd0aCA9IGZpZWxkTGVuZ3RoO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb24gPSAwO1xuICAgICAgICBzdGFydGluZ0ZpZWxkTGVuZ3RoID0gLTE7XG4gICAgICB9XG4gICAgICBwYXJzZUV2ZW50U3RyZWFtTGluZShidWZmZXIsIHBvc2l0aW9uLCBmaWVsZExlbmd0aCwgbGluZUxlbmd0aCk7XG4gICAgICBwb3NpdGlvbiArPSBsaW5lTGVuZ3RoICsgMTtcbiAgICB9XG4gICAgaWYgKHBvc2l0aW9uID09PSBsZW5ndGgpIHtcbiAgICAgIGJ1ZmZlciA9IFwiXCI7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA+IDApIHtcbiAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZShwb3NpdGlvbik7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHBhcnNlRXZlbnRTdHJlYW1MaW5lKGxpbmVCdWZmZXIsIGluZGV4LCBmaWVsZExlbmd0aCwgbGluZUxlbmd0aCkge1xuICAgIGlmIChsaW5lTGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIG9uUGFyc2Uoe1xuICAgICAgICAgIHR5cGU6IFwiZXZlbnRcIixcbiAgICAgICAgICBpZDogZXZlbnRJZCxcbiAgICAgICAgICBldmVudDogZXZlbnROYW1lIHx8IHZvaWQgMCxcbiAgICAgICAgICBkYXRhOiBkYXRhLnNsaWNlKDAsIC0xKSxcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgbmV3bGluZVxuICAgICAgICB9KTtcbiAgICAgICAgZGF0YSA9IFwiXCI7XG4gICAgICAgIGV2ZW50SWQgPSB2b2lkIDA7XG4gICAgICB9XG4gICAgICBldmVudE5hbWUgPSB2b2lkIDA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5vVmFsdWUgPSBmaWVsZExlbmd0aCA8IDA7XG4gICAgY29uc3QgZmllbGQgPSBsaW5lQnVmZmVyLnNsaWNlKFxuICAgICAgaW5kZXgsXG4gICAgICBpbmRleCArIChub1ZhbHVlID8gbGluZUxlbmd0aCA6IGZpZWxkTGVuZ3RoKVxuICAgICk7XG4gICAgbGV0IHN0ZXAgPSAwO1xuICAgIGlmIChub1ZhbHVlKSB7XG4gICAgICBzdGVwID0gbGluZUxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGxpbmVCdWZmZXJbaW5kZXggKyBmaWVsZExlbmd0aCArIDFdID09PSBcIiBcIikge1xuICAgICAgc3RlcCA9IGZpZWxkTGVuZ3RoICsgMjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RlcCA9IGZpZWxkTGVuZ3RoICsgMTtcbiAgICB9XG4gICAgY29uc3QgcG9zaXRpb24gPSBpbmRleCArIHN0ZXA7XG4gICAgY29uc3QgdmFsdWVMZW5ndGggPSBsaW5lTGVuZ3RoIC0gc3RlcDtcbiAgICBjb25zdCB2YWx1ZSA9IGxpbmVCdWZmZXIuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdmFsdWVMZW5ndGgpLnRvU3RyaW5nKCk7XG4gICAgaWYgKGZpZWxkID09PSBcImRhdGFcIikge1xuICAgICAgZGF0YSArPSB2YWx1ZSA/IFwiXCIuY29uY2F0KHZhbHVlLCBcIlxcblwiKSA6IFwiXFxuXCI7XG4gICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gXCJldmVudFwiKSB7XG4gICAgICBldmVudE5hbWUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkID09PSBcImlkXCIgJiYgIXZhbHVlLmluY2x1ZGVzKFwiXFwwXCIpKSB7XG4gICAgICBldmVudElkID0gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChmaWVsZCA9PT0gXCJyZXRyeVwiKSB7XG4gICAgICBjb25zdCByZXRyeSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICBpZiAoIU51bWJlci5pc05hTihyZXRyeSkpIHtcbiAgICAgICAgb25QYXJzZSh7XG4gICAgICAgICAgdHlwZTogXCJyZWNvbm5lY3QtaW50ZXJ2YWxcIixcbiAgICAgICAgICB2YWx1ZTogcmV0cnksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxudmFyIEJPTSA9IFsyMzksIDE4NywgMTkxXTtcbmZ1bmN0aW9uIGhhc0JvbShidWZmZXIpIHtcbiAgcmV0dXJuIEJPTS5ldmVyeSgoY2hhckNvZGUsIGluZGV4KSA9PiBidWZmZXIuY2hhckNvZGVBdChpbmRleCkgPT09IGNoYXJDb2RlKTtcbn1cblxuLy8gaHR0cC11cmw6aHR0cHM6Ly91bnBrZy5jb20vZXZlbnRzb3VyY2UtcGFyc2VyQDEuMS4yL2Rpc3Qvc3RyZWFtLmpzXG52YXIgRXZlbnRTb3VyY2VQYXJzZXJTdHJlYW0gPSBjbGFzcyBleHRlbmRzIFRyYW5zZm9ybVN0cmVhbSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBwYXJzZXI7XG4gICAgc3VwZXIoe1xuICAgICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgICBwYXJzZXIgPSBjcmVhdGVQYXJzZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFwiZXZlbnRcIikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHRyYW5zZm9ybShjaHVuaykge1xuICAgICAgICBwYXJzZXIuZmVlZChjaHVuayk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/eventsource-parser/stream.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/streams-text-encoding/text-decoder-stream.js":
|
|
/*!***********************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/streams-text-encoding/text-decoder-stream.js ***!
|
|
\***********************************************************************************************************************/
|
|
/***/ ((module) => {
|
|
|
|
eval("// Adapted from https://github.com/stardazed/sd-streams\n//\n// MIT License\n//\n// Copyright (c) 2018-Present @zenmumbler\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// /input.ts\nvar input_exports = {};\n__export(input_exports, {\n TextDecoderStream: () => TextDecoderStream\n});\nmodule.exports = __toCommonJS(input_exports);\n\n// http-url:https://unpkg.com/@stardazed/streams-text-encoding@1.0.2/dist/sd-streams-text-encoding.esm.js\nvar decDecoder = Symbol(\"decDecoder\");\nvar decTransform = Symbol(\"decTransform\");\nvar TextDecodeTransformer = class {\n constructor(decoder) {\n this.decoder_ = decoder;\n }\n transform(chunk, controller) {\n if (!(chunk instanceof ArrayBuffer || ArrayBuffer.isView(chunk))) {\n throw new TypeError(\"Input data must be a BufferSource\");\n }\n const text = this.decoder_.decode(chunk, { stream: true });\n if (text.length !== 0) {\n controller.enqueue(text);\n }\n }\n flush(controller) {\n const text = this.decoder_.decode();\n if (text.length !== 0) {\n controller.enqueue(text);\n }\n }\n};\nvar TextDecoderStream = class {\n constructor(label, options) {\n const decoder = new TextDecoder(label || \"utf-8\", options || {});\n this[decDecoder] = decoder;\n this[decTransform] = new TransformStream(new TextDecodeTransformer(decoder));\n }\n get encoding() {\n return this[decDecoder].encoding;\n }\n get fatal() {\n return this[decDecoder].fatal;\n }\n get ignoreBOM() {\n return this[decDecoder].ignoreBOM;\n }\n get readable() {\n return this[decTransform].readable;\n }\n get writable() {\n return this[decTransform].writable;\n }\n};\nvar encEncoder = Symbol(\"encEncoder\");\nvar encTransform = Symbol(\"encTransform\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vcmVwbGljYXRlQDEuNC4wL25vZGVfbW9kdWxlcy9yZXBsaWNhdGUvdmVuZG9yL3N0cmVhbXMtdGV4dC1lbmNvZGluZy90ZXh0LWRlY29kZXItc3RyZWFtLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0NBQWtDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsNEZBQTRGO0FBQ3pIO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxrQkFBa0IsYUFBYTs7QUFFbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxjQUFjO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9yZXBsaWNhdGVAMS40LjAvbm9kZV9tb2R1bGVzL3JlcGxpY2F0ZS92ZW5kb3Ivc3RyZWFtcy10ZXh0LWVuY29kaW5nL3RleHQtZGVjb2Rlci1zdHJlYW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFyZGF6ZWQvc2Qtc3RyZWFtc1xuLy9cbi8vIE1JVCBMaWNlbnNlXG4vL1xuLy8gQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQgQHplbm11bWJsZXJcbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4vLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBfX2dldE93blByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19leHBvcnQgPSAodGFyZ2V0LCBhbGwpID0+IHtcbiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpXG4gICAgX19kZWZQcm9wKHRhcmdldCwgbmFtZSwgeyBnZXQ6IGFsbFtuYW1lXSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbn07XG52YXIgX19jb3B5UHJvcHMgPSAodG8sIGZyb20sIGV4Y2VwdCwgZGVzYykgPT4ge1xuICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgZnJvbSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZm9yIChsZXQga2V5IG9mIF9fZ2V0T3duUHJvcE5hbWVzKGZyb20pKVxuICAgICAgaWYgKCFfX2hhc093blByb3AuY2FsbCh0bywga2V5KSAmJiBrZXkgIT09IGV4Y2VwdClcbiAgICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsgZ2V0OiAoKSA9PiBmcm9tW2tleV0sIGVudW1lcmFibGU6ICEoZGVzYyA9IF9fZ2V0T3duUHJvcERlc2MoZnJvbSwga2V5KSkgfHwgZGVzYy5lbnVtZXJhYmxlIH0pO1xuICB9XG4gIHJldHVybiB0bztcbn07XG52YXIgX190b0NvbW1vbkpTID0gKG1vZCkgPT4gX19jb3B5UHJvcHMoX19kZWZQcm9wKHt9LCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KSwgbW9kKTtcblxuLy8gL2lucHV0LnRzXG52YXIgaW5wdXRfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoaW5wdXRfZXhwb3J0cywge1xuICBUZXh0RGVjb2RlclN0cmVhbTogKCkgPT4gVGV4dERlY29kZXJTdHJlYW1cbn0pO1xubW9kdWxlLmV4cG9ydHMgPSBfX3RvQ29tbW9uSlMoaW5wdXRfZXhwb3J0cyk7XG5cbi8vIGh0dHAtdXJsOmh0dHBzOi8vdW5wa2cuY29tL0BzdGFyZGF6ZWQvc3RyZWFtcy10ZXh0LWVuY29kaW5nQDEuMC4yL2Rpc3Qvc2Qtc3RyZWFtcy10ZXh0LWVuY29kaW5nLmVzbS5qc1xudmFyIGRlY0RlY29kZXIgPSBTeW1ib2woXCJkZWNEZWNvZGVyXCIpO1xudmFyIGRlY1RyYW5zZm9ybSA9IFN5bWJvbChcImRlY1RyYW5zZm9ybVwiKTtcbnZhciBUZXh0RGVjb2RlVHJhbnNmb3JtZXIgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGRlY29kZXIpIHtcbiAgICB0aGlzLmRlY29kZXJfID0gZGVjb2RlcjtcbiAgfVxuICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICBpZiAoIShjaHVuayBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IEFycmF5QnVmZmVyLmlzVmlldyhjaHVuaykpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW5wdXQgZGF0YSBtdXN0IGJlIGEgQnVmZmVyU291cmNlXCIpO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5kZWNvZGVyXy5kZWNvZGUoY2h1bmssIHsgc3RyZWFtOiB0cnVlIH0pO1xuICAgIGlmICh0ZXh0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHRleHQpO1xuICAgIH1cbiAgfVxuICBmbHVzaChjb250cm9sbGVyKSB7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZGVjb2Rlcl8uZGVjb2RlKCk7XG4gICAgaWYgKHRleHQubGVuZ3RoICE9PSAwKSB7XG4gICAgICBjb250cm9sbGVyLmVucXVldWUodGV4dCk7XG4gICAgfVxuICB9XG59O1xudmFyIFRleHREZWNvZGVyU3RyZWFtID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihsYWJlbCwgb3B0aW9ucykge1xuICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIobGFiZWwgfHwgXCJ1dGYtOFwiLCBvcHRpb25zIHx8IHt9KTtcbiAgICB0aGlzW2RlY0RlY29kZXJdID0gZGVjb2RlcjtcbiAgICB0aGlzW2RlY1RyYW5zZm9ybV0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtKG5ldyBUZXh0RGVjb2RlVHJhbnNmb3JtZXIoZGVjb2RlcikpO1xuICB9XG4gIGdldCBlbmNvZGluZygpIHtcbiAgICByZXR1cm4gdGhpc1tkZWNEZWNvZGVyXS5lbmNvZGluZztcbiAgfVxuICBnZXQgZmF0YWwoKSB7XG4gICAgcmV0dXJuIHRoaXNbZGVjRGVjb2Rlcl0uZmF0YWw7XG4gIH1cbiAgZ2V0IGlnbm9yZUJPTSgpIHtcbiAgICByZXR1cm4gdGhpc1tkZWNEZWNvZGVyXS5pZ25vcmVCT007XG4gIH1cbiAgZ2V0IHJlYWRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzW2RlY1RyYW5zZm9ybV0ucmVhZGFibGU7XG4gIH1cbiAgZ2V0IHdyaXRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzW2RlY1RyYW5zZm9ybV0ud3JpdGFibGU7XG4gIH1cbn07XG52YXIgZW5jRW5jb2RlciA9IFN5bWJvbChcImVuY0VuY29kZXJcIik7XG52YXIgZW5jVHJhbnNmb3JtID0gU3ltYm9sKFwiZW5jVHJhbnNmb3JtXCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/replicate@1.4.0/node_modules/replicate/vendor/streams-text-encoding/text-decoder-stream.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |