needle-cloud 1.9.9-dev.dd2b398 → 1.9.9-dev.ec1ecfb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.esm.js +1 -1
- package/dist/index.esm.js +1 -2
- package/dist/web/functions/get.d.ts +0 -58
- package/dist/web/functions/upload.d.ts +2 -2
- package/package.json +5 -5
- package/dist/index.esm.js.map +0 -1
- package/dist/needle-share-cli/src/cli.d.ts +0 -1
- package/dist/needle-share-cli/src/index.d.ts +0 -1
- package/dist/needle-share-cli/src/web/auth.config.d.ts +0 -9
- package/dist/needle-share-cli/src/web/auth.d.ts +0 -79
- package/dist/needle-share-cli/src/web/functions/checkout.d.ts +0 -10
- package/dist/needle-share-cli/src/web/functions/get.d.ts +0 -91
- package/dist/needle-share-cli/src/web/functions/index.d.ts +0 -3
- package/dist/needle-share-cli/src/web/functions/upload.d.ts +0 -28
- package/dist/needle-share-cli/src/web/functions/utils.d.ts +0 -5
- package/dist/needle-share-cli/src/web/index.d.ts +0 -4
- package/dist/needle-share-cli/src/web/polyfill.d.ts +0 -1
- package/dist/needle-share-cli/src/web/utils.d.ts +0 -1
- package/dist/needle-share-cli/src/web/web-components/LoginButton.d.ts +0 -9
- package/dist/needle-share-cli/src/web/web-components/index.d.ts +0 -1
- package/dist/pako.esm-01431bd2.js.map +0 -1
package/dist/cli.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"node-fetch";import{File as n}from"@web-std/file";import o from"node:crypto";import t from"@caporal/core";import i,{existsSync as a,statSync as s,readFileSync as r,readdirSync as c,appendFileSync as l,mkdirSync as p,writeFileSync as u,readFile as d}from"fs";import m,{TextEncoder as f}from"util";import h,{Readable as g}from"stream";import v,{resolve as x,join as b,relative as y}from"path";import w from"http";import _ from"https";import k from"url";import j from"assert";import T from"tty";import S,{tmpdir as $}from"os";import E from"zlib";import{EventEmitter as C}from"events";import O,{randomUUID as R}from"crypto";import z from"buffer";import N from"open";import A from"ora";import{realpathSync as L,mkdirSync as F,existsSync as U,statSync as I,rename as q}from"node:fs";import{writeFile as P}from"node:fs/promises";import B from"node:os";import D from"node:path";import M from"dotenv";import W from"@logto/node";import{Router as G}from"express";import H from"body-parser";import{execSync as J}from"child_process";import{minimatch as K}from"minimatch";import V,{WebSocketServer as Y}from"ws";import{createInterface as Q}from"node:readline";const X={status:"/v1/status",version:"/v1/version",api:"/v1/api",usage:{get:"/v1/usage"},affiliate:{get:"/v1/affiliate/get",link_clicked:"/v1/affiliate/link_clicked"},account:{public_key:"/v1/account/public_key",post_machine:"/v1/account/machine",connect:"/v1/account/connect",get_licenses:"/v1/account/get/licenses",set_license_active:"/v1/account/set_license_active",set_licenses_active:"/v1/account/set_licenses_active",buy_licenses:"/v1/account/buy_licenses",update_licenses:"/v1/account/update_licenses",update_payment_method:"/v1/account/update_payment_method",get_billing:"/v1/account/get_billing",resume_subscription:"/v1/account/resume_subscription",cancel_subscription:"/v1/account/cancel_subscription",start_billingportal_session:"/v1/account/start_billingportal_session",post_preferences:"/v1/account/preferences",get_preferences:"/v1/account/preferences"},ai:{llmstxt:"/v1/ai/llmstxt",chat:"/v1/ai/chat",list_chats:"/v1/ai/chat/list",ask:"/v1/ai/ask"},organizations:{get:"/v1/organizations/get",orgs_details:"/v1/organizations/details",licenses:"/v1/organizations/licenses",get_invitations:"/v1/organizations/get_invitations"},events:{get:"/v1/events/get",post:"/v1/events/post",list:"/v1/events/list"},reports:{get:"/v1/reports/get",post:"/v1/reports/post"},questionnaire:{get:"/v1/questionnaires/get",post:"/v1/questionnaires/post"},roadmap:{get:"/v1/roadmap/get",post_vote:"/v1/roadmap/post"},tokens:{create:"/v1/tokens/create",delete:"/v1/tokens/delete",list:"/v1/tokens/list"},get:{stats:"/v1/get/stats",jobs:"/v1/list/jobs",uploads:"/v1/list/uploads",uploads_deleted:"/v1/list/uploads/deleted",deployments:"/v1/list/deployments",discounts:"/v1/get/discounts"},urls:{public:"/v1/public",public_download_urls:"/v1/public/download/urls"},view:{get:"/v1/view",get_analytics:"/v1/view/analytics",get_public_info:"/v1/view/public/info",post_version:"/v1/view/post_version",update:"/v1/view/update",delete:"/v1/view/delete",restore:"/v1/view/restore"},content:{list:"/v1/content/list",get:"/v1/content/get",create:"/v1/content/create",update:"/v1/content/update",delete:"/v1/content/delete",featured:"/v1/content/featured",download:"/v1/content/download"},collections:{list:"/v1/collections/list",get:"/v1/collections/get",create:"/v1/collections/create",update:"/v1/collections/update",delete:"/v1/collections/delete",add_item:"/v1/collections/add-item",remove_item:"/v1/collections/remove-item",reorder_items:"/v1/collections/reorder-items"},upload:{request:"/v1/upload/request",request_put_url:"/v1/upload/put",update_results:"/v1/upload/results",done:"/v1/upload/done",cancel:"/v1/upload/cancel"},jobs:{create:"/v1/jobs/create",get_id:"/v1/jobs/get_id",request_start:"/v1/jobs/request_start",request_download_url:"/v1/download/get_presigned_url",request_download_urls:"/v1/download/get_presigned_urls",request_restart:"/v1/jobs/restart",delete:"/v1/jobs/delete",post_update:"/v1/jobs/update",post_meta:"/v1/jobs/meta",post_results_stats:"/v1/jobs/results_stats",post_usage:"/v1/jobs/post_usage",get_status:"/v1/jobs/status",get_org:"/v1/jobs/org",query:"/v1/jobs/query",request_job_that_needs_stats:"/v1/jobs/job_needs_stats"},worker:{ping:"/v1/worker/ping",get_available_count:"/v1/worker/get_available_count",post_available_info:"/v1/worker/post_available_info",get_available_info:"/v1/worker/get_available_info"},local_projects:{get:{user:"/v1/local_projects/user",by_id:"/v1/local_projects/"},post:"/v1/local_projects"}};function Z(e){const n={authorization:"Bearer "+e.authToken};return e.org&&(n["x-needle-cloud-org"]=e.org),e.roles&&(n.roles=e.roles.join(",")),e.roles_org&&(n.roles_org=e.roles_org.join(",")),n}const ee={credentials:"omit"};function ne(e,n){return function(){return e.apply(n,arguments)}}const{toString:oe}=Object.prototype,{getPrototypeOf:te}=Object,ie=(ae=Object.create(null),e=>{const n=oe.call(e);return ae[n]||(ae[n]=n.slice(8,-1).toLowerCase())});var ae;const se=e=>(e=e.toLowerCase(),n=>ie(n)===e),re=e=>n=>typeof n===e,{isArray:ce}=Array,le=re("undefined"),pe=se("ArrayBuffer"),ue=re("string"),de=re("function"),me=re("number"),fe=e=>null!==e&&"object"==typeof e,he=e=>{if("object"!==ie(e))return!1;const n=te(e);return!(null!==n&&n!==Object.prototype&&null!==Object.getPrototypeOf(n)||Symbol.toStringTag in e||Symbol.iterator in e)},ge=se("Date"),ve=se("File"),xe=se("Blob"),be=se("FileList"),ye=se("URLSearchParams"),[we,_e,ke,je]=["ReadableStream","Request","Response","Headers"].map(se);function Te(e,n,{allOwnKeys:o=!1}={}){if(null==e)return;let t,i;if("object"!=typeof e&&(e=[e]),ce(e))for(t=0,i=e.length;t<i;t++)n.call(null,e[t],t,e);else{const i=o?Object.getOwnPropertyNames(e):Object.keys(e),a=i.length;let s;for(t=0;t<a;t++)s=i[t],n.call(null,e[s],s,e)}}function Se(e,n){n=n.toLowerCase();const o=Object.keys(e);let t,i=o.length;for(;i-- >0;)if(t=o[i],n===t.toLowerCase())return t;return null}const $e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Ee=e=>!le(e)&&e!==$e,Ce=(Oe="undefined"!=typeof Uint8Array&&te(Uint8Array),e=>Oe&&e instanceof Oe);var Oe;const Re=se("HTMLFormElement"),ze=(({hasOwnProperty:e})=>(n,o)=>e.call(n,o))(Object.prototype),Ne=se("RegExp"),Ae=(e,n)=>{const o=Object.getOwnPropertyDescriptors(e),t={};Te(o,(o,i)=>{let a;!1!==(a=n(o,i,e))&&(t[i]=a||o)}),Object.defineProperties(e,t)},Le="abcdefghijklmnopqrstuvwxyz",Fe="0123456789",Ue={DIGIT:Fe,ALPHA:Le,ALPHA_DIGIT:Le+Le.toUpperCase()+Fe},Ie=se("AsyncFunction"),qe=(Pe="function"==typeof setImmediate,Be=de($e.postMessage),Pe?setImmediate:Be?(De=`axios@${Math.random()}`,Me=[],$e.addEventListener("message",({source:e,data:n})=>{e===$e&&n===De&&Me.length&&Me.shift()()},!1),e=>{Me.push(e),$e.postMessage(De,"*")}):e=>setTimeout(e));var Pe,Be,De,Me;const We="undefined"!=typeof queueMicrotask?queueMicrotask.bind($e):"undefined"!=typeof process&&process.nextTick||qe;var Ge={isArray:ce,isArrayBuffer:pe,isBuffer:function(e){return null!==e&&!le(e)&&null!==e.constructor&&!le(e.constructor)&&de(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let n;return e&&("function"==typeof FormData&&e instanceof FormData||de(e.append)&&("formdata"===(n=ie(e))||"object"===n&&de(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let n;return n="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&pe(e.buffer),n},isString:ue,isNumber:me,isBoolean:e=>!0===e||!1===e,isObject:fe,isPlainObject:he,isReadableStream:we,isRequest:_e,isResponse:ke,isHeaders:je,isUndefined:le,isDate:ge,isFile:ve,isBlob:xe,isRegExp:Ne,isFunction:de,isStream:e=>fe(e)&&de(e.pipe),isURLSearchParams:ye,isTypedArray:Ce,isFileList:be,forEach:Te,merge:function e(){const{caseless:n}=Ee(this)&&this||{},o={},t=(t,i)=>{const a=n&&Se(o,i)||i;o[a]=he(o[a])&&he(t)?e(o[a],t):he(t)?e({},t):ce(t)?t.slice():t};for(let e=0,n=arguments.length;e<n;e++)arguments[e]&&Te(arguments[e],t);return o},extend:(e,n,o,{allOwnKeys:t}={})=>(Te(n,(n,t)=>{e[t]=o&&de(n)?ne(n,o):n},{allOwnKeys:t}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,n,o,t)=>{e.prototype=Object.create(n.prototype,t),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:n.prototype}),o&&Object.assign(e.prototype,o)},toFlatObject:(e,n,o,t)=>{let i,a,s;const r={};if(n=n||{},null==e)return n;do{for(i=Object.getOwnPropertyNames(e),a=i.length;a-- >0;)s=i[a],t&&!t(s,e,n)||r[s]||(n[s]=e[s],r[s]=!0);e=!1!==o&&te(e)}while(e&&(!o||o(e,n))&&e!==Object.prototype);return n},kindOf:ie,kindOfTest:se,endsWith:(e,n,o)=>{e=String(e),(void 0===o||o>e.length)&&(o=e.length);const t=e.indexOf(n,o-=n.length);return-1!==t&&t===o},toArray:e=>{if(!e)return null;if(ce(e))return e;let n=e.length;if(!me(n))return null;const o=new Array(n);for(;n-- >0;)o[n]=e[n];return o},forEachEntry:(e,n)=>{const o=(e&&e[Symbol.iterator]).call(e);let t;for(;(t=o.next())&&!t.done;){const o=t.value;n.call(e,o[0],o[1])}},matchAll:(e,n)=>{let o;const t=[];for(;null!==(o=e.exec(n));)t.push(o);return t},isHTMLForm:Re,hasOwnProperty:ze,hasOwnProp:ze,reduceDescriptors:Ae,freezeMethods:e=>{Ae(e,(n,o)=>{if(de(e)&&-1!==["arguments","caller","callee"].indexOf(o))return!1;de(e[o])&&(n.enumerable=!1,"writable"in n?n.writable=!1:n.set||(n.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")}))})},toObjectSet:(e,n)=>{const o={},t=e=>{e.forEach(e=>{o[e]=!0})};return ce(e)?t(e):t(String(e).split(n)),o},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,n,o){return n.toUpperCase()+o}),noop:()=>{},toFiniteNumber:(e,n)=>null!=e&&Number.isFinite(e=+e)?e:n,findKey:Se,global:$e,isContextDefined:Ee,ALPHABET:Ue,generateString:(e=16,n=Ue.ALPHA_DIGIT)=>{let o="";const{length:t}=n;for(;e--;)o+=n[Math.random()*t|0];return o},isSpecCompliantForm:function(e){return!!(e&&de(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const n=new Array(10),o=(e,t)=>{if(fe(e)){if(n.indexOf(e)>=0)return;if(!("toJSON"in e)){n[t]=e;const i=ce(e)?[]:{};return Te(e,(e,n)=>{const a=o(e,t+1);!le(a)&&(i[n]=a)}),n[t]=void 0,i}}return e};return o(e,0)},isAsyncFn:Ie,isThenable:e=>e&&(fe(e)||de(e))&&de(e.then)&&de(e.catch),setImmediate:qe,asap:We};function He(e,n,o,t,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",n&&(this.code=n),o&&(this.config=o),t&&(this.request=t),i&&(this.response=i)}Ge.inherits(He,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Ge.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Je=He.prototype,Ke={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ke[e]={value:e}}),Object.defineProperties(He,Ke),Object.defineProperty(Je,"isAxiosError",{value:!0}),He.from=(e,n,o,t,i,a)=>{const s=Object.create(Je);return Ge.toFlatObject(e,s,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),He.call(s,e.message,n,o,t,i),s.cause=e,s.name=e.name,a&&Object.assign(s,a),s};var Ve=h.Stream,Ye=Qe;function Qe(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}m.inherits(Qe,Ve),Qe.create=function(e,n){var o=new this;for(var t in n=n||{})o[t]=n[t];o.source=e;var i=e.emit;return e.emit=function(){return o._handleEmit(arguments),i.apply(e,arguments)},e.on("error",function(){}),o.pauseStream&&e.pause(),o},Object.defineProperty(Qe.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),Qe.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},Qe.prototype.resume=function(){this._released||this.release(),this.source.resume()},Qe.prototype.pause=function(){this.source.pause()},Qe.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},Qe.prototype.pipe=function(){var e=Ve.prototype.pipe.apply(this,arguments);return this.resume(),e},Qe.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},Qe.prototype._checkIfMaxDataSizeExceeded=function(){this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize||(this._maxDataSizeExceeded=!0,this.emit("error",new Error("DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.")))};var Xe=h.Stream,Ze=en;function en(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}m.inherits(en,Xe),en.create=function(e){var n=new this;for(var o in e=e||{})n[o]=e[o];return n},en.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!Buffer.isBuffer(e)},en.prototype.append=function(e){if(en.isStreamLike(e)){if(!(e instanceof Ye)){var n=Ye.create(e,{maxDataSize:Infinity,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=n}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},en.prototype.pipe=function(e,n){return Xe.prototype.pipe.call(this,e,n),this.resume(),e},en.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},en.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){en.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},en.prototype._pipeNext=function(e){if(this._currentStream=e,en.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});this.write(e),this._getNext()},en.prototype._handleErrors=function(e){var n=this;e.on("error",function(e){n._emitError(e)})},en.prototype.write=function(e){this.emit("data",e)},en.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},en.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},en.prototype.end=function(){this._reset(),this.emit("end")},en.prototype.destroy=function(){this._reset(),this.emit("close")},en.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},en.prototype._checkDataSize=function(){this._updateDataSize(),this.dataSize<=this.maxDataSize||this._emitError(new Error("DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded."))},en.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach(function(n){n.dataSize&&(e.dataSize+=n.dataSize)}),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},en.prototype._emitError=function(e){this._reset(),this.emit("error",e)};var nn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function on(e){var n={exports:{}};return e(n,n.exports),n.exports}var tn={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}},an=on(function(e,n){var o,t,i,a=v.extname,s=/^\s*([^;\s]*)(?:;|\s|$)/,r=/^text\//i;function c(e){if(!e||"string"!=typeof e)return!1;var n=s.exec(e),o=n&&tn[n[1].toLowerCase()];return o&&o.charset?o.charset:!(!n||!r.test(n[1]))&&"UTF-8"}n.charset=c,n.charsets={lookup:c},n.contentType=function(e){if(!e||"string"!=typeof e)return!1;var o=-1===e.indexOf("/")?n.lookup(e):e;if(!o)return!1;if(-1===o.indexOf("charset")){var t=n.charset(o);t&&(o+="; charset="+t.toLowerCase())}return o},n.extension=function(e){if(!e||"string"!=typeof e)return!1;var o=s.exec(e),t=o&&n.extensions[o[1].toLowerCase()];return!(!t||!t.length)&&t[0]},n.extensions=Object.create(null),n.lookup=function(e){if(!e||"string"!=typeof e)return!1;var o=a("x."+e).toLowerCase().substr(1);return o&&n.types[o]||!1},n.types=Object.create(null),o=n.extensions,t=n.types,i=["nginx","apache",void 0,"iana"],Object.keys(tn).forEach(function(e){var n=tn[e],a=n.extensions;if(a&&a.length){o[e]=a;for(var s=0;s<a.length;s++){var r=a[s];if(t[r]){var c=i.indexOf(tn[t[r]].source),l=i.indexOf(n.source);if("application/octet-stream"!==t[r]&&(c>l||c===l&&"application/"===t[r].substr(0,12)))continue}t[r]=e}}})}),sn=function(e){var n="function"==typeof setImmediate?setImmediate:"object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:null;n?n(e):setTimeout(e,0)},rn=function(e){var n=!1;return sn(function(){n=!0}),function(o,t){n?e(o,t):sn(function(){e(o,t)})}},cn=function(e){Object.keys(e.jobs).forEach(ln.bind(e)),e.jobs={}};function ln(e){"function"==typeof this.jobs[e]&&this.jobs[e]()}var pn=function(e,n,o,t){var i=o.keyedList?o.keyedList[o.index]:o.index;o.jobs[i]=function(e,n,o,t){return 2==e.length?e(o,rn(t)):e(o,n,rn(t))}(n,i,e[i],function(e,n){i in o.jobs&&(delete o.jobs[i],e?cn(o):o.results[i]=n,t(e,o.results))})},un=function(e,n){var o=!Array.isArray(e),t={index:0,keyedList:o||n?Object.keys(e):null,jobs:{},results:o?{}:[],size:o?Object.keys(e).length:e.length};return n&&t.keyedList.sort(o?n:function(o,t){return n(e[o],e[t])}),t},dn=function(e){Object.keys(this.jobs).length&&(this.index=this.size,cn(this),rn(e)(null,this.results))},mn=function(e,n,o,t){var i=un(e,o);return pn(e,n,i,function o(a,s){a?t(a,s):(i.index++,i.index<(i.keyedList||e).length?pn(e,n,i,o):t(null,i.results))}),dn.bind(i,t)};function fn(e,n){return e<n?-1:e>n?1:0}mn.ascending=fn,mn.descending=function(e,n){return-1*fn(e,n)};var hn=function(e,n){return Object.keys(n).forEach(function(o){e[o]=e[o]||n[o]}),e},gn=k.parse,vn=h.Stream,xn=bn;function bn(e){if(!(this instanceof bn))return new bn(e);for(var n in this._overheadLength=0,this._valueLength=0,this._valuesToMeasure=[],Ze.call(this),e=e||{})this[n]=e[n]}m.inherits(bn,Ze),bn.LINE_BREAK="\r\n",bn.DEFAULT_CONTENT_TYPE="application/octet-stream",bn.prototype.append=function(e,n,o){"string"==typeof(o=o||{})&&(o={filename:o});var t=Ze.prototype.append.bind(this);if("number"==typeof n&&(n=""+n),m.isArray(n))this._error(new Error("Arrays are not supported."));else{var i=this._multiPartHeader(e,n,o),a=this._multiPartFooter();t(i),t(n),t(a),this._trackLength(i,n,o)}},bn.prototype._trackLength=function(e,n,o){var t=0;null!=o.knownLength?t+=+o.knownLength:Buffer.isBuffer(n)?t=n.length:"string"==typeof n&&(t=Buffer.byteLength(n)),this._valueLength+=t,this._overheadLength+=Buffer.byteLength(e)+bn.LINE_BREAK.length,n&&(n.path||n.readable&&n.hasOwnProperty("httpVersion")||n instanceof vn)&&(o.knownLength||this._valuesToMeasure.push(n))},bn.prototype._lengthRetriever=function(e,n){e.hasOwnProperty("fd")?null!=e.end&&Infinity!=e.end&&null!=e.start?n(null,e.end+1-(e.start?e.start:0)):i.stat(e.path,function(o,t){o?n(o):n(null,t.size-(e.start?e.start:0))}):e.hasOwnProperty("httpVersion")?n(null,+e.headers["content-length"]):e.hasOwnProperty("httpModule")?(e.on("response",function(o){e.pause(),n(null,+o.headers["content-length"])}),e.resume()):n("Unknown stream")},bn.prototype._multiPartHeader=function(e,n,o){if("string"==typeof o.header)return o.header;var t,i=this._getContentDisposition(n,o),a=this._getContentType(n,o),s="",r={"Content-Disposition":["form-data",'name="'+e+'"'].concat(i||[]),"Content-Type":[].concat(a||[])};for(var c in"object"==typeof o.header&&hn(r,o.header),r)r.hasOwnProperty(c)&&null!=(t=r[c])&&(Array.isArray(t)||(t=[t]),t.length&&(s+=c+": "+t.join("; ")+bn.LINE_BREAK));return"--"+this.getBoundary()+bn.LINE_BREAK+s+bn.LINE_BREAK},bn.prototype._getContentDisposition=function(e,n){var o,t;return"string"==typeof n.filepath?o=v.normalize(n.filepath).replace(/\\/g,"/"):n.filename||e.name||e.path?o=v.basename(n.filename||e.name||e.path):e.readable&&e.hasOwnProperty("httpVersion")&&(o=v.basename(e.client._httpMessage.path||"")),o&&(t='filename="'+o+'"'),t},bn.prototype._getContentType=function(e,n){var o=n.contentType;return!o&&e.name&&(o=an.lookup(e.name)),!o&&e.path&&(o=an.lookup(e.path)),!o&&e.readable&&e.hasOwnProperty("httpVersion")&&(o=e.headers["content-type"]),o||!n.filepath&&!n.filename||(o=an.lookup(n.filepath||n.filename)),o||"object"!=typeof e||(o=bn.DEFAULT_CONTENT_TYPE),o},bn.prototype._multiPartFooter=function(){return function(e){var n=bn.LINE_BREAK;0===this._streams.length&&(n+=this._lastBoundary()),e(n)}.bind(this)},bn.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+bn.LINE_BREAK},bn.prototype.getHeaders=function(e){var n,o={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(n in e)e.hasOwnProperty(n)&&(o[n.toLowerCase()]=e[n]);return o},bn.prototype.setBoundary=function(e){this._boundary=e},bn.prototype.getBoundary=function(){return this._boundary||this._generateBoundary(),this._boundary},bn.prototype.getBuffer=function(){for(var e=new Buffer.alloc(0),n=this.getBoundary(),o=0,t=this._streams.length;o<t;o++)"function"!=typeof this._streams[o]&&(e=Buffer.isBuffer(this._streams[o])?Buffer.concat([e,this._streams[o]]):Buffer.concat([e,Buffer.from(this._streams[o])]),"string"==typeof this._streams[o]&&this._streams[o].substring(2,n.length+2)===n||(e=Buffer.concat([e,Buffer.from(bn.LINE_BREAK)])));return Buffer.concat([e,Buffer.from(this._lastBoundary())])},bn.prototype._generateBoundary=function(){for(var e="--------------------------",n=0;n<24;n++)e+=Math.floor(10*Math.random()).toString(16);this._boundary=e},bn.prototype.getLengthSync=function(){var e=this._overheadLength+this._valueLength;return this._streams.length&&(e+=this._lastBoundary().length),this.hasKnownLength()||this._error(new Error("Cannot calculate proper length in synchronous way.")),e},bn.prototype.hasKnownLength=function(){var e=!0;return this._valuesToMeasure.length&&(e=!1),e},bn.prototype.getLength=function(e){var n=this._overheadLength+this._valueLength;this._streams.length&&(n+=this._lastBoundary().length),this._valuesToMeasure.length?function(e,n,o){for(var t=un(e);t.index<(t.keyedList||e).length;)pn(e,n,t,function(e,n){e?o(e,n):0!==Object.keys(t.jobs).length||o(null,t.results)}),t.index++;dn.bind(t,o)}(this._valuesToMeasure,this._lengthRetriever,function(o,t){o?e(o):(t.forEach(function(e){n+=e}),e(null,n))}):process.nextTick(e.bind(this,null,n))},bn.prototype.submit=function(e,n){var o,t,i={method:"post"};return"string"==typeof e?(e=gn(e),t=hn({port:e.port,path:e.pathname,host:e.hostname,protocol:e.protocol},i)):(t=hn(e,i)).port||(t.port="https:"==t.protocol?443:80),t.headers=this.getHeaders(e.headers),o="https:"==t.protocol?_.request(t):w.request(t),this.getLength(function(e,t){if(e&&"Unknown stream"!==e)this._error(e);else if(t&&o.setHeader("Content-Length",t),this.pipe(o),n){var i,a=function(e,t){return o.removeListener("error",a),o.removeListener("response",i),n.call(this,e,t)};i=a.bind(this,null),o.on("error",a),o.on("response",i)}}.bind(this)),o},bn.prototype._error=function(e){this.error||(this.error=e,this.pause(),this.emit("error",e))},bn.prototype.toString=function(){return"[object FormData]"};var yn=xn;function wn(e){return Ge.isPlainObject(e)||Ge.isArray(e)}function _n(e){return Ge.endsWith(e,"[]")?e.slice(0,-2):e}function kn(e,n,o){return e?e.concat(n).map(function(e,n){return e=_n(e),!o&&n?"["+e+"]":e}).join(o?".":""):n}const jn=Ge.toFlatObject(Ge,{},null,function(e){return/^is[A-Z]/.test(e)});function Tn(e,n,o){if(!Ge.isObject(e))throw new TypeError("target must be an object");n=n||new(yn||FormData);const t=(o=Ge.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,n){return!Ge.isUndefined(n[e])})).metaTokens,i=o.visitor||l,a=o.dots,s=o.indexes,r=(o.Blob||"undefined"!=typeof Blob&&Blob)&&Ge.isSpecCompliantForm(n);if(!Ge.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Ge.isDate(e))return e.toISOString();if(!r&&Ge.isBlob(e))throw new He("Blob is not supported. Use a Buffer instead.");return Ge.isArrayBuffer(e)||Ge.isTypedArray(e)?r&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,o,i){let r=e;if(e&&!i&&"object"==typeof e)if(Ge.endsWith(o,"{}"))o=t?o:o.slice(0,-2),e=JSON.stringify(e);else if(Ge.isArray(e)&&function(e){return Ge.isArray(e)&&!e.some(wn)}(e)||(Ge.isFileList(e)||Ge.endsWith(o,"[]"))&&(r=Ge.toArray(e)))return o=_n(o),r.forEach(function(e,t){!Ge.isUndefined(e)&&null!==e&&n.append(!0===s?kn([o],t,a):null===s?o:o+"[]",c(e))}),!1;return!!wn(e)||(n.append(kn(i,o,a),c(e)),!1)}const p=[],u=Object.assign(jn,{defaultVisitor:l,convertValue:c,isVisitable:wn});if(!Ge.isObject(e))throw new TypeError("data must be an object");return function e(o,t){if(!Ge.isUndefined(o)){if(-1!==p.indexOf(o))throw Error("Circular reference detected in "+t.join("."));p.push(o),Ge.forEach(o,function(o,a){!0===(!(Ge.isUndefined(o)||null===o)&&i.call(n,o,Ge.isString(a)?a.trim():a,t,u))&&e(o,t?t.concat(a):[a])}),p.pop()}}(e),n}function Sn(e){const n={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return n[e]})}function $n(e,n){this._pairs=[],e&&Tn(e,this,n)}const En=$n.prototype;function Cn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function On(e,n,o){if(!n)return e;const t=o&&o.encode||Cn,i=o&&o.serialize;let a;if(a=i?i(n,o):Ge.isURLSearchParams(n)?n.toString():new $n(n,o).toString(t),a){const n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e}En.append=function(e,n){this._pairs.push([e,n])},En.toString=function(e){const n=e?function(n){return e.call(this,n,Sn)}:Sn;return this._pairs.map(function(e){return n(e[0])+"="+n(e[1])},"").join("&")};var Rn=class{constructor(){this.handlers=[]}use(e,n,o){return this.handlers.push({fulfilled:e,rejected:n,synchronous:!!o&&o.synchronous,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Ge.forEach(this.handlers,function(n){null!==n&&e(n)})}},zn={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Nn={isNode:!0,classes:{URLSearchParams:k.URLSearchParams,FormData:yn,Blob:"undefined"!=typeof Blob&&Blob||null},protocols:["http","https","file","data"]};const An="undefined"!=typeof window&&"undefined"!=typeof document,Ln=(Fn="undefined"!=typeof navigator&&navigator.product,An&&["ReactNative","NativeScript","NS"].indexOf(Fn)<0);var Fn,Un={__proto__:null,hasBrowserEnv:An,hasStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,hasStandardBrowserEnv:Ln,origin:An&&window.location.href||"http://localhost",...Nn};function In(e){function n(e,o,t,i){let a=e[i++];if("__proto__"===a)return!0;const s=Number.isFinite(+a),r=i>=e.length;return a=!a&&Ge.isArray(t)?t.length:a,r?(t[a]=Ge.hasOwnProp(t,a)?[t[a],o]:o,!s):(t[a]&&Ge.isObject(t[a])||(t[a]=[]),n(e,o,t[a],i)&&Ge.isArray(t[a])&&(t[a]=function(e){const n={},o=Object.keys(e);let t;const i=o.length;let a;for(t=0;t<i;t++)a=o[t],n[a]=e[a];return n}(t[a])),!s)}if(Ge.isFormData(e)&&Ge.isFunction(e.entries)){const o={};return Ge.forEachEntry(e,(e,t)=>{n(function(e){return Ge.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),t,o,0)}),o}return null}const qn={transitional:zn,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const o=n.getContentType()||"",t=o.indexOf("application/json")>-1,i=Ge.isObject(e);if(i&&Ge.isHTMLForm(e)&&(e=new FormData(e)),Ge.isFormData(e))return t?JSON.stringify(In(e)):e;if(Ge.isArrayBuffer(e)||Ge.isBuffer(e)||Ge.isStream(e)||Ge.isFile(e)||Ge.isBlob(e)||Ge.isReadableStream(e))return e;if(Ge.isArrayBufferView(e))return e.buffer;if(Ge.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(i){if(o.indexOf("application/x-www-form-urlencoded")>-1)return function(e,n){return Tn(e,new Un.classes.URLSearchParams,Object.assign({visitor:function(e,n,o,t){return Un.isNode&&Ge.isBuffer(e)?(this.append(n,e.toString("base64")),!1):t.defaultVisitor.apply(this,arguments)}},n))}(e,this.formSerializer).toString();if((a=Ge.isFileList(e))||o.indexOf("multipart/form-data")>-1){const n=this.env&&this.env.FormData;return Tn(a?{"files[]":e}:e,n&&new n,this.formSerializer)}}return i||t?(n.setContentType("application/json",!1),function(e,n,o){if(Ge.isString(e))try{return(0,JSON.parse)(e),Ge.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const n=this.transitional||qn.transitional,o=n&&n.forcedJSONParsing,t="json"===this.responseType;if(Ge.isResponse(e)||Ge.isReadableStream(e))return e;if(e&&Ge.isString(e)&&(o&&!this.responseType||t)){const o=!(n&&n.silentJSONParsing)&&t;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw He.from(e,He.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Un.classes.FormData,Blob:Un.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Ge.forEach(["delete","get","head","post","put","patch"],e=>{qn.headers[e]={}});var Pn=qn;const Bn=Ge.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Dn=Symbol("internals");function Mn(e){return e&&String(e).trim().toLowerCase()}function Wn(e){return!1===e||null==e?e:Ge.isArray(e)?e.map(Wn):String(e)}function Gn(e,n,o,t,i){return Ge.isFunction(t)?t.call(this,n,o):(i&&(n=o),Ge.isString(n)?Ge.isString(t)?-1!==n.indexOf(t):Ge.isRegExp(t)?t.test(n):void 0:void 0)}class Hn{constructor(e){e&&this.set(e)}set(e,n,o){const t=this;function i(e,n,o){const i=Mn(n);if(!i)throw new Error("header name must be a non-empty string");const a=Ge.findKey(t,i);(!a||void 0===t[a]||!0===o||void 0===o&&!1!==t[a])&&(t[a||n]=Wn(e))}const a=(e,n)=>Ge.forEach(e,(e,o)=>i(e,o,n));if(Ge.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(Ge.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))a((e=>{const n={};let o,t,i;return e&&e.split("\n").forEach(function(e){i=e.indexOf(":"),o=e.substring(0,i).trim().toLowerCase(),t=e.substring(i+1).trim(),!o||n[o]&&Bn[o]||("set-cookie"===o?n[o]?n[o].push(t):n[o]=[t]:n[o]=n[o]?n[o]+", "+t:t)}),n})(e),n);else if(Ge.isHeaders(e))for(const[n,t]of e.entries())i(t,n,o);else null!=e&&i(n,e,o);return this}get(e,n){if(e=Mn(e)){const o=Ge.findKey(this,e);if(o){const e=this[o];if(!n)return e;if(!0===n)return function(e){const n=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let t;for(;t=o.exec(e);)n[t[1]]=t[2];return n}(e);if(Ge.isFunction(n))return n.call(this,e,o);if(Ge.isRegExp(n))return n.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Mn(e)){const o=Ge.findKey(this,e);return!(!o||void 0===this[o]||n&&!Gn(0,this[o],o,n))}return!1}delete(e,n){const o=this;let t=!1;function i(e){if(e=Mn(e)){const i=Ge.findKey(o,e);!i||n&&!Gn(0,o[i],i,n)||(delete o[i],t=!0)}}return Ge.isArray(e)?e.forEach(i):i(e),t}clear(e){const n=Object.keys(this);let o=n.length,t=!1;for(;o--;){const i=n[o];e&&!Gn(0,this[i],i,e,!0)||(delete this[i],t=!0)}return t}normalize(e){const n=this,o={};return Ge.forEach(this,(t,i)=>{const a=Ge.findKey(o,i);if(a)return n[a]=Wn(t),void delete n[i];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,o)=>n.toUpperCase()+o)}(i):String(i).trim();s!==i&&delete n[i],n[s]=Wn(t),o[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return Ge.forEach(this,(o,t)=>{null!=o&&!1!==o&&(n[t]=e&&Ge.isArray(o)?o.join(", "):o)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const o=new this(e);return n.forEach(e=>o.set(e)),o}static accessor(e){const n=(this[Dn]=this[Dn]={accessors:{}}).accessors,o=this.prototype;function t(e){const t=Mn(e);n[t]||(function(e,n){const o=Ge.toCamelCase(" "+n);["get","set","has"].forEach(t=>{Object.defineProperty(e,t+o,{value:function(e,o,i){return this[t].call(this,n,e,o,i)},configurable:!0})})}(o,e),n[t]=!0)}return Ge.isArray(e)?e.forEach(t):t(e),this}}Hn.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Ge.reduceDescriptors(Hn.prototype,({value:e},n)=>{let o=n[0].toUpperCase()+n.slice(1);return{get:()=>e,set(e){this[o]=e}}}),Ge.freezeMethods(Hn);var Jn=Hn;function Kn(e,n){const o=this||Pn,t=n||o,i=Jn.from(t.headers);let a=t.data;return Ge.forEach(e,function(e){a=e.call(o,a,i.normalize(),n?n.status:void 0)}),i.normalize(),a}function Vn(e){return!(!e||!e.__CANCEL__)}function Yn(e,n,o){He.call(this,null==e?"canceled":e,He.ERR_CANCELED,n,o),this.name="CanceledError"}function Qn(e,n,o){const t=o.config.validateStatus;o.status&&t&&!t(o.status)?n(new He("Request failed with status code "+o.status,[He.ERR_BAD_REQUEST,He.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o)):e(o)}function Xn(e,n){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(n)?function(e,n){return n?e.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):e}(e,n):n}Ge.inherits(Yn,He,{__CANCEL__:!0});var Zn=k.parse,eo={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443},no=String.prototype.endsWith||function(e){return e.length<=this.length&&-1!==this.indexOf(e,this.length-e.length)};function oo(e){return process.env[e.toLowerCase()]||process.env[e.toUpperCase()]||""}var to=1e3,io=60*to,ao=60*io,so=24*ao,ro=7*so,co=function(e,n){n=n||{};var o=typeof e;if("string"===o&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var n=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(n){var o=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*o;case"weeks":case"week":case"w":return o*ro;case"days":case"day":case"d":return o*so;case"hours":case"hour":case"hrs":case"hr":case"h":return o*ao;case"minutes":case"minute":case"mins":case"min":case"m":return o*io;case"seconds":case"second":case"secs":case"sec":case"s":return o*to;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return}}}}(e);if("number"===o&&isFinite(e))return n.long?function(e){var n=Math.abs(e);return n>=so?lo(e,n,so,"day"):n>=ao?lo(e,n,ao,"hour"):n>=io?lo(e,n,io,"minute"):n>=to?lo(e,n,to,"second"):e+" ms"}(e):function(e){var n=Math.abs(e);return n>=so?Math.round(e/so)+"d":n>=ao?Math.round(e/ao)+"h":n>=io?Math.round(e/io)+"m":n>=to?Math.round(e/to)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function lo(e,n,o,t){var i=n>=1.5*o;return Math.round(e/o)+" "+t+(i?"s":"")}var po=function(e){function n(e){let t,i,a,s=null;function r(...e){if(!r.enabled)return;const o=r,i=Number(new Date);o.diff=i-(t||i),o.prev=t,o.curr=i,t=i,e[0]=n.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,i)=>{if("%%"===t)return"%";a++;const s=n.formatters[i];return"function"==typeof s&&(t=s.call(o,e[a]),e.splice(a,1),a--),t}),n.formatArgs.call(o,e),(o.log||n.log).apply(o,e)}return r.namespace=e,r.useColors=n.useColors(),r.color=n.selectColor(e),r.extend=o,r.destroy=n.destroy,Object.defineProperty(r,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(i!==n.namespaces&&(i=n.namespaces,a=n.enabled(e)),a),set:e=>{s=e}}),"function"==typeof n.init&&n.init(r),r}function o(e,o){const t=n(this.namespace+(void 0===o?":":o)+e);return t.log=this.log,t}function t(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return n.debug=n,n.default=n,n.coerce=function(e){return e instanceof Error?e.stack||e.message:e},n.disable=function(){const e=[...n.names.map(t),...n.skips.map(t).map(e=>"-"+e)].join(",");return n.enable(""),e},n.enable=function(e){let o;n.save(e),n.namespaces=e,n.names=[],n.skips=[];const t=("string"==typeof e?e:"").split(/[\s,]+/),i=t.length;for(o=0;o<i;o++)t[o]&&("-"===(e=t[o].replace(/\*/g,".*?"))[0]?n.skips.push(new RegExp("^"+e.slice(1)+"$")):n.names.push(new RegExp("^"+e+"$")))},n.enabled=function(e){if("*"===e[e.length-1])return!0;let o,t;for(o=0,t=n.skips.length;o<t;o++)if(n.skips[o].test(e))return!1;for(o=0,t=n.names.length;o<t;o++)if(n.names[o].test(e))return!0;return!1},n.humanize=co,n.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(o=>{n[o]=e[o]}),n.names=[],n.skips=[],n.formatters={},n.selectColor=function(e){let o=0;for(let n=0;n<e.length;n++)o=(o<<5)-o+e.charCodeAt(n),o|=0;return n.colors[Math.abs(o)%n.colors.length]},n.enable(n.load()),n},uo=on(function(e,n){n.formatArgs=function(n){if(n[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+n[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const o="color: "+this.color;n.splice(1,0,o,"color: inherit");let t=0,i=0;n[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(t++,"%c"===e&&(i=t))}),n.splice(i,0,o)},n.save=function(e){try{e?n.storage.setItem("debug",e):n.storage.removeItem("debug")}catch(e){}},n.load=function(){let e;try{e=n.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},n.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},n.storage=function(){try{return localStorage}catch(e){}}(),n.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),n.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],n.log=console.debug||console.log||(()=>{}),e.exports=po(n);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}),mo=(e,n=process.argv)=>{const o=e.startsWith("-")?"":1===e.length?"-":"--",t=n.indexOf(o+e),i=n.indexOf("--");return-1!==t&&(-1===i||t<i)};const{env:fo}=process;let ho;function go(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function vo(e,n){if(0===ho)return 0;if(mo("color=16m")||mo("color=full")||mo("color=truecolor"))return 3;if(mo("color=256"))return 2;if(e&&!n&&void 0===ho)return 0;const o=ho||0;if("dumb"===fo.TERM)return o;if("win32"===process.platform){const e=S.release().split(".");return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in fo)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(e=>e in fo)||"codeship"===fo.CI_NAME?1:o;if("TEAMCITY_VERSION"in fo)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(fo.TEAMCITY_VERSION)?1:0;if("truecolor"===fo.COLORTERM)return 3;if("TERM_PROGRAM"in fo){const e=parseInt((fo.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(fo.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(fo.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(fo.TERM)||"COLORTERM"in fo?1:o}mo("no-color")||mo("no-colors")||mo("color=false")||mo("color=never")?ho=0:(mo("color")||mo("colors")||mo("color=true")||mo("color=always"))&&(ho=1),"FORCE_COLOR"in fo&&(ho="true"===fo.FORCE_COLOR?1:"false"===fo.FORCE_COLOR?0:0===fo.FORCE_COLOR.length?1:Math.min(parseInt(fo.FORCE_COLOR,10),3));var xo,bo={supportsColor:function(e){return go(vo(e,e&&e.isTTY))},stdout:go(vo(!0,T.isatty(1))),stderr:go(vo(!0,T.isatty(2)))},yo=on(function(e,n){n.init=function(e){e.inspectOpts={};const o=Object.keys(n.inspectOpts);for(let t=0;t<o.length;t++)e.inspectOpts[o[t]]=n.inspectOpts[o[t]]},n.log=function(...e){return process.stderr.write(m.format(...e)+"\n")},n.formatArgs=function(o){const{namespace:t,useColors:i}=this;if(i){const n=this.color,i="[3"+(n<8?n:"8;5;"+n),a=` ${i};1m${t} [0m`;o[0]=a+o[0].split("\n").join("\n"+a),o.push(i+"m+"+e.exports.humanize(this.diff)+"[0m")}else o[0]=(n.inspectOpts.hideDate?"":(new Date).toISOString()+" ")+t+" "+o[0]},n.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},n.load=function(){return process.env.DEBUG},n.useColors=function(){return"colors"in n.inspectOpts?Boolean(n.inspectOpts.colors):T.isatty(process.stderr.fd)},n.destroy=m.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),n.colors=[6,2,3,4,5,1];try{bo&&(bo.stderr||bo).level>=2&&(n.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}n.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,n)=>{const o=n.substring(6).toLowerCase().replace(/_([a-z])/g,(e,n)=>n.toUpperCase());let t=process.env[n];return t=!!/^(yes|on|true|enabled)$/i.test(t)||!/^(no|off|false|disabled)$/i.test(t)&&("null"===t?null:Number(t)),e[o]=t,e},{}),e.exports=po(n);const{formatters:o}=e.exports;o.o=function(e){return this.inspectOpts.colors=this.useColors,m.inspect(e,this.inspectOpts).split("\n").map(e=>e.trim()).join(" ")},o.O=function(e){return this.inspectOpts.colors=this.useColors,m.inspect(e,this.inspectOpts)}}),wo=on(function(e){e.exports="undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?uo:yo}),_o=function(){if(!xo){try{xo=wo("follow-redirects")}catch(e){}"function"!=typeof xo&&(xo=function(){})}xo.apply(null,arguments)},ko=k.URL,jo=h.Writable,To=!1;try{j(new ko)}catch(e){To="ERR_INVALID_URL"===e.code}var So=["auth","host","hostname","href","path","pathname","port","protocol","query","search","hash"],$o=["abort","aborted","connect","error","socket","timeout"],Eo=Object.create(null);$o.forEach(function(e){Eo[e]=function(n,o,t){this._redirectable.emit(e,n,o,t)}});var Co=Do("ERR_INVALID_URL","Invalid URL",TypeError),Oo=Do("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),Ro=Do("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded",Oo),zo=Do("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),No=Do("ERR_STREAM_WRITE_AFTER_END","write after end"),Ao=jo.prototype.destroy||Uo;function Lo(e,n){jo.call(this),this._sanitizeOptions(e),this._options=e,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],n&&this.on("response",n);var o=this;this._onNativeResponse=function(e){try{o._processResponse(e)}catch(e){o.emit("error",e instanceof Oo?e:new Oo({cause:e}))}},this._performRequest()}function Fo(e){var n={maxRedirects:21,maxBodyLength:10485760},o={};return Object.keys(e).forEach(function(t){var i=t+":",a=o[i]=e[t],s=n[t]=Object.create(a);Object.defineProperties(s,{request:{value:function(e,t,a){return ko&&e instanceof ko?e=Po(e):Wo(e)?e=Po(Io(e)):(a=t,t=qo(e),e={protocol:i}),Go(t)&&(a=t,t=null),(t=Object.assign({maxRedirects:n.maxRedirects,maxBodyLength:n.maxBodyLength},e,t)).nativeProtocols=o,Wo(t.host)||Wo(t.hostname)||(t.hostname="::1"),j.equal(t.protocol,i,"protocol mismatch"),_o("options",t),new Lo(t,a)},configurable:!0,enumerable:!0,writable:!0},get:{value:function(e,n,o){var t=s.request(e,n,o);return t.end(),t},configurable:!0,enumerable:!0,writable:!0}})}),n}function Uo(){}function Io(e){var n;if(To)n=new ko(e);else if(!Wo((n=qo(k.parse(e))).protocol))throw new Co({input:e});return n}function qo(e){if(/^\[/.test(e.hostname)&&!/^\[[:0-9a-f]+\]$/i.test(e.hostname))throw new Co({input:e.href||e});if(/^\[/.test(e.host)&&!/^\[[:0-9a-f]+\](:\d+)?$/i.test(e.host))throw new Co({input:e.href||e});return e}function Po(e,n){var o=n||{};for(var t of So)o[t]=e[t];return o.hostname.startsWith("[")&&(o.hostname=o.hostname.slice(1,-1)),""!==o.port&&(o.port=Number(o.port)),o.path=o.search?o.pathname+o.search:o.pathname,o}function Bo(e,n){var o;for(var t in n)e.test(t)&&(o=n[t],delete n[t]);return null==o?void 0:String(o).trim()}function Do(e,n,o){function t(o){Error.captureStackTrace(this,this.constructor),Object.assign(this,o||{}),this.code=e,this.message=this.cause?n+": "+this.cause.message:n}return t.prototype=new(o||Error),Object.defineProperties(t.prototype,{constructor:{value:t,enumerable:!1},name:{value:"Error ["+e+"]",enumerable:!1}}),t}function Mo(e,n){for(var o of $o)e.removeListener(o,Eo[o]);e.on("error",Uo),e.destroy(n)}function Wo(e){return"string"==typeof e||e instanceof String}function Go(e){return"function"==typeof e}(Lo.prototype=Object.create(jo.prototype)).abort=function(){Mo(this._currentRequest),this._currentRequest.abort(),this.emit("abort")},Lo.prototype.destroy=function(e){return Mo(this._currentRequest,e),Ao.call(this,e),this},Lo.prototype.write=function(e,n,o){if(this._ending)throw new No;if(!(Wo(e)||"object"==typeof(t=e)&&"length"in t))throw new TypeError("data should be a string, Buffer or Uint8Array");var t;Go(n)&&(o=n,n=null),0!==e.length?this._requestBodyLength+e.length<=this._options.maxBodyLength?(this._requestBodyLength+=e.length,this._requestBodyBuffers.push({data:e,encoding:n}),this._currentRequest.write(e,n,o)):(this.emit("error",new zo),this.abort()):o&&o()},Lo.prototype.end=function(e,n,o){if(Go(e)?(o=e,e=n=null):Go(n)&&(o=n,n=null),e){var t=this,i=this._currentRequest;this.write(e,n,function(){t._ended=!0,i.end(null,null,o)}),this._ending=!0}else this._ended=this._ending=!0,this._currentRequest.end(null,null,o)},Lo.prototype.setHeader=function(e,n){this._options.headers[e]=n,this._currentRequest.setHeader(e,n)},Lo.prototype.removeHeader=function(e){delete this._options.headers[e],this._currentRequest.removeHeader(e)},Lo.prototype.setTimeout=function(e,n){var o=this;function t(n){n.setTimeout(e),n.removeListener("timeout",n.destroy),n.addListener("timeout",n.destroy)}function i(n){o._timeout&&clearTimeout(o._timeout),o._timeout=setTimeout(function(){o.emit("timeout"),a()},e),t(n)}function a(){o._timeout&&(clearTimeout(o._timeout),o._timeout=null),o.removeListener("abort",a),o.removeListener("error",a),o.removeListener("response",a),o.removeListener("close",a),n&&o.removeListener("timeout",n),o.socket||o._currentRequest.removeListener("socket",i)}return n&&this.on("timeout",n),this.socket?i(this.socket):this._currentRequest.once("socket",i),this.on("socket",t),this.on("abort",a),this.on("error",a),this.on("response",a),this.on("close",a),this},["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(e){Lo.prototype[e]=function(n,o){return this._currentRequest[e](n,o)}}),["aborted","connection","socket"].forEach(function(e){Object.defineProperty(Lo.prototype,e,{get:function(){return this._currentRequest[e]}})}),Lo.prototype._sanitizeOptions=function(e){if(e.headers||(e.headers={}),e.host&&(e.hostname||(e.hostname=e.host),delete e.host),!e.pathname&&e.path){var n=e.path.indexOf("?");n<0?e.pathname=e.path:(e.pathname=e.path.substring(0,n),e.search=e.path.substring(n))}},Lo.prototype._performRequest=function(){var e=this._options.protocol,n=this._options.nativeProtocols[e];if(!n)throw new TypeError("Unsupported protocol "+e);if(this._options.agents){var o=e.slice(0,-1);this._options.agent=this._options.agents[o]}var t=this._currentRequest=n.request(this._options,this._onNativeResponse);for(var i of(t._redirectable=this,$o))t.on(i,Eo[i]);if(this._currentUrl=/^\//.test(this._options.path)?k.format(this._options):this._options.path,this._isRedirect){var a=0,s=this,r=this._requestBodyBuffers;!function e(n){if(t===s._currentRequest)if(n)s.emit("error",n);else if(a<r.length){var o=r[a++];t.finished||t.write(o.data,o.encoding,e)}else s._ended&&t.end()}()}},Lo.prototype._processResponse=function(e){var n=e.statusCode;this._options.trackRedirects&&this._redirects.push({url:this._currentUrl,headers:e.headers,statusCode:n});var o,t=e.headers.location;if(!t||!1===this._options.followRedirects||n<300||n>=400)return e.responseUrl=this._currentUrl,e.redirects=this._redirects,this.emit("response",e),void(this._requestBodyBuffers=[]);if(Mo(this._currentRequest),e.destroy(),++this._redirectCount>this._options.maxRedirects)throw new Ro;var i=this._options.beforeRedirect;i&&(o=Object.assign({Host:e.req.getHeader("host")},this._options.headers));var a=this._options.method;((301===n||302===n)&&"POST"===this._options.method||303===n&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],Bo(/^content-/i,this._options.headers));var s=Bo(/^host$/i,this._options.headers),r=Io(this._currentUrl),c=s||r.host,l=/^\w+:/.test(t)?this._currentUrl:k.format(Object.assign(r,{host:c})),p=function(e,n){return To?new ko(e,n):Io(k.resolve(n,e))}(t,l);_o("redirecting to",p.href),this._isRedirect=!0,Po(p,this._options),(p.protocol!==r.protocol&&"https:"!==p.protocol||p.host!==c&&!function(e,n){j(Wo(e)&&Wo(n));var o=e.length-n.length-1;return o>0&&"."===e[o]&&e.endsWith(n)}(p.host,c))&&Bo(/^(?:(?:proxy-)?authorization|cookie)$/i,this._options.headers),Go(i)&&(i(this._options,{headers:e.headers,statusCode:n},{url:l,method:a,headers:o}),this._sanitizeOptions(this._options)),this._performRequest()};var Ho=Fo({http:w,https:_});Ho.wrap=Fo;const Jo="1.7.4";function Ko(e){const n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return n&&n[1]||""}const Vo=/^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/,Yo=Symbol("internals");var Qo=class extends h.Transform{constructor(e){super({readableHighWaterMark:(e=Ge.toFlatObject(e,{maxRate:0,chunkSize:65536,minChunkSize:100,timeWindow:500,ticksRate:2,samplesCount:15},null,(e,n)=>!Ge.isUndefined(n[e]))).chunkSize});const n=this[Yo]={timeWindow:e.timeWindow,chunkSize:e.chunkSize,maxRate:e.maxRate,minChunkSize:e.minChunkSize,bytesSeen:0,isCaptured:!1,notifiedBytesLoaded:0,ts:Date.now(),bytes:0,onReadCallback:null};this.on("newListener",e=>{"progress"===e&&(n.isCaptured||(n.isCaptured=!0))})}_read(e){const n=this[Yo];return n.onReadCallback&&n.onReadCallback(),super._read(e)}_transform(e,n,o){const t=this[Yo],i=t.maxRate,a=this.readableHighWaterMark,s=t.timeWindow,r=i/(1e3/s),c=!1!==t.minChunkSize?Math.max(t.minChunkSize,.01*r):0,l=(e,n)=>{const o=Buffer.byteLength(e);t.bytesSeen+=o,t.bytes+=o,t.isCaptured&&this.emit("progress",t.bytesSeen),this.push(e)?process.nextTick(n):t.onReadCallback=()=>{t.onReadCallback=null,process.nextTick(n)}},p=(e,n)=>{const o=Buffer.byteLength(e);let p,u=null,d=a,m=0;if(i){const e=Date.now();(!t.ts||(m=e-t.ts)>=s)&&(t.ts=e,p=r-t.bytes,t.bytes=p<0?-p:0,m=0),p=r-t.bytes}if(i){if(p<=0)return setTimeout(()=>{n(null,e)},s-m);p<d&&(d=p)}d&&o>d&&o-d>c&&(u=e.subarray(d),e=e.subarray(0,d)),l(e,u?()=>{process.nextTick(n,null,u)}:n)};p(e,function e(n,t){if(n)return o(n);t?p(t,e):o(null)})}};const{asyncIterator:Xo}=Symbol;var Zo=async function*(e){e.stream?yield*e.stream():e.arrayBuffer?yield await e.arrayBuffer():e[Xo]?yield*e[Xo]():yield e};const et=Ge.ALPHABET.ALPHA_DIGIT+"-_",nt=new f,ot="\r\n",tt=nt.encode(ot);class it{constructor(e,n){const{escapeName:o}=this.constructor,t=Ge.isString(n);let i=`Content-Disposition: form-data; name="${o(e)}"${!t&&n.name?`; filename="${o(n.name)}"`:""}${ot}`;t?n=nt.encode(String(n).replace(/\r?\n|\r\n?/g,ot)):i+=`Content-Type: ${n.type||"application/octet-stream"}${ot}`,this.headers=nt.encode(i+ot),this.contentLength=t?n.byteLength:n.size,this.size=this.headers.byteLength+this.contentLength+2,this.name=e,this.value=n}async*encode(){yield this.headers;const{value:e}=this;Ge.isTypedArray(e)?yield e:yield*Zo(e),yield tt}static escapeName(e){return String(e).replace(/[\r\n"]/g,e=>({"\r":"%0D","\n":"%0A",'"':"%22"}[e]))}}var at=class extends h.Transform{__transform(e,n,o){this.push(e),o()}_transform(e,n,o){if(0!==e.length&&(this._transform=this.__transform,120!==e[0])){const e=Buffer.alloc(2);e[0]=120,e[1]=156,this.push(e,n)}this.__transform(e,n,o)}},st=(e,n)=>Ge.isAsyncFn(e)?function(...o){const t=o.pop();e.apply(this,o).then(e=>{try{n?t(null,...n(e)):t(null,e)}catch(e){t(e)}},t)}:e;const rt=(e,n,o=3)=>{let t=0;const i=function(e,n){e=e||10;const o=new Array(e),t=new Array(e);let i,a=0,s=0;return n=void 0!==n?n:1e3,function(r){const c=Date.now(),l=t[s];i||(i=c),o[a]=r,t[a]=c;let p=s,u=0;for(;p!==a;)u+=o[p++],p%=e;if(a=(a+1)%e,a===s&&(s=(s+1)%e),c-i<n)return;const d=l&&c-l;return d?Math.round(1e3*u/d):void 0}}(50,250);return function(e,n){let o,t,i=0,a=1e3/n;const s=(n,a=Date.now())=>{i=a,o=null,t&&(clearTimeout(t),t=null),e.apply(null,n)};return[(...e)=>{const n=Date.now(),r=n-i;r>=a?s(e,n):(o=e,t||(t=setTimeout(()=>{t=null,s(o)},a-r)))},()=>o&&s(o)]}(o=>{const a=o.loaded,s=o.lengthComputable?o.total:void 0,r=a-t,c=i(r);t=a,e({loaded:a,total:s,progress:s?a/s:void 0,bytes:r,rate:c||void 0,estimated:c&&s&&a<=s?(s-a)/c:void 0,event:o,lengthComputable:null!=s,[n?"download":"upload"]:!0})},o)},ct=(e,n)=>{const o=null!=e;return[t=>n[0]({lengthComputable:o,total:e,loaded:t}),n[1]]},lt=e=>(...n)=>Ge.asap(()=>e(...n)),pt={flush:E.constants.Z_SYNC_FLUSH,finishFlush:E.constants.Z_SYNC_FLUSH},ut={flush:E.constants.BROTLI_OPERATION_FLUSH,finishFlush:E.constants.BROTLI_OPERATION_FLUSH},dt=Ge.isFunction(E.createBrotliDecompress),{http:mt,https:ft}=Ho,ht=/https:?/,gt=Un.protocols.map(e=>e+":"),vt=(e,[n,o])=>(e.on("end",o).on("error",o),n);function xt(e,n){e.beforeRedirects.proxy&&e.beforeRedirects.proxy(e),e.beforeRedirects.config&&e.beforeRedirects.config(e,n)}function bt(e,n,o){let t=n;if(!t&&!1!==t){const e=function(e){var n="string"==typeof e?Zn(e):e||{},o=n.protocol,t=n.host,i=n.port;if("string"!=typeof t||!t||"string"!=typeof o)return"";if(o=o.split(":",1)[0],!function(e,n){var o=(oo("npm_config_no_proxy")||oo("no_proxy")).toLowerCase();return!o||"*"!==o&&o.split(/[,\s]/).every(function(o){if(!o)return!0;var t=o.match(/^(.+):(\d+)$/),i=t?t[1]:o,a=t?parseInt(t[2]):0;return!(!a||a===n)||(/^[.*]/.test(i)?("*"===i.charAt(0)&&(i=i.slice(1)),!no.call(e,i)):e!==i)})}(t=t.replace(/:\d*$/,""),i=parseInt(i)||eo[o]||0))return"";var a=oo("npm_config_"+o+"_proxy")||oo(o+"_proxy")||oo("npm_config_proxy")||oo("all_proxy");return a&&-1===a.indexOf("://")&&(a=o+"://"+a),a}(o);e&&(t=new URL(e))}if(t){if(t.username&&(t.auth=(t.username||"")+":"+(t.password||"")),t.auth){(t.auth.username||t.auth.password)&&(t.auth=(t.auth.username||"")+":"+(t.auth.password||""));const n=Buffer.from(t.auth,"utf8").toString("base64");e.headers["Proxy-Authorization"]="Basic "+n}e.headers.host=e.hostname+(e.port?":"+e.port:"");const n=t.hostname||t.host;e.hostname=n,e.host=n,e.port=t.port,e.path=o,t.protocol&&(e.protocol=t.protocol.includes(":")?t.protocol:`${t.protocol}:`)}e.beforeRedirects.proxy=function(e){bt(e,n,e.href)}}const yt="undefined"!=typeof process&&"process"===Ge.kindOf(process),wt=(e,n)=>(({address:e,family:n})=>{if(!Ge.isString(e))throw TypeError("address must be a string");return{address:e,family:n||(e.indexOf(".")<0?6:4)}})(Ge.isObject(e)?e:{address:e,family:n});var _t=yt&&function(e){return n=async function(n,o,t){let{data:i,lookup:a,family:s}=e;const{responseType:r,responseEncoding:c}=e,l=e.method.toUpperCase();let p,u,d=!1;if(a){const e=st(a,e=>Ge.isArray(e)?e:[e]);a=(n,o,t)=>{e(n,o,(e,n,i)=>{if(e)return t(e);const a=Ge.isArray(n)?n.map(e=>wt(e)):[wt(n,i)];o.all?t(e,a):t(e,a[0].address,a[0].family)})}}const f=new C,v=()=>{e.cancelToken&&e.cancelToken.unsubscribe(x),e.signal&&e.signal.removeEventListener("abort",x),f.removeAllListeners()};function x(n){f.emit("abort",!n||n.type?new Yn(null,e,u):n)}t((e,n)=>{p=!0,n&&(d=!0,v())}),f.once("abort",o),(e.cancelToken||e.signal)&&(e.cancelToken&&e.cancelToken.subscribe(x),e.signal&&(e.signal.aborted?x():e.signal.addEventListener("abort",x)));const b=Xn(e.baseURL,e.url),y=new URL(b,Ge.hasBrowserEnv?Un.origin:void 0),k=y.protocol||gt[0];if("data:"===k){let t;if("GET"!==l)return Qn(n,o,{status:405,statusText:"method not allowed",headers:{},config:e});try{t=function(e,n,o){const t=o&&o.Blob||Un.classes.Blob,i=Ko(e);if(void 0===n&&t&&(n=!0),"data"===i){e=i.length?e.slice(i.length+1):e;const o=Vo.exec(e);if(!o)throw new He("Invalid URL",He.ERR_INVALID_URL);const a=o[1],s=o[2],r=Buffer.from(decodeURIComponent(o[3]),s?"base64":"utf8");if(n){if(!t)throw new He("Blob is not supported",He.ERR_NOT_SUPPORT);return new t([r],{type:a})}return r}throw new He("Unsupported protocol "+i,He.ERR_NOT_SUPPORT)}(e.url,"blob"===r,{Blob:e.env&&e.env.Blob})}catch(n){throw He.from(n,He.ERR_BAD_REQUEST,e)}return"text"===r?(t=t.toString(c),c&&"utf8"!==c||(t=Ge.stripBOM(t))):"stream"===r&&(t=h.Readable.from(t)),Qn(n,o,{data:t,status:200,statusText:"OK",headers:new Jn,config:e})}if(-1===gt.indexOf(k))return o(new He("Unsupported protocol "+k,He.ERR_BAD_REQUEST,e));const j=Jn.from(e.headers).normalize();j.set("User-Agent","axios/"+Jo,!1);const{onUploadProgress:T,onDownloadProgress:S}=e,$=e.maxRate;let O,R;if(Ge.isSpecCompliantForm(i)){const e=j.getContentType(/boundary=([-_\w\d]{10,70})/i);i=((e,n,o)=>{const{tag:t="form-data-boundary",size:i=25,boundary:a=t+"-"+Ge.generateString(i,et)}=o||{};if(!Ge.isFormData(e))throw TypeError("FormData instance required");if(a.length<1||a.length>70)throw Error("boundary must be 10-70 characters long");const s=nt.encode("--"+a+ot),r=nt.encode("--"+a+"--"+ot+ot);let c=r.byteLength;const l=Array.from(e.entries()).map(([e,n])=>{const o=new it(e,n);return c+=o.size,o});c+=s.byteLength*l.length,c=Ge.toFiniteNumber(c);const p={"Content-Type":`multipart/form-data; boundary=${a}`};return Number.isFinite(c)&&(p["Content-Length"]=c),n&&n(p),g.from(async function*(){for(const e of l)yield s,yield*e.encode();yield r}())})(i,e=>{j.set(e)},{tag:`axios-${Jo}-boundary`,boundary:e&&e[1]||void 0})}else if(Ge.isFormData(i)&&Ge.isFunction(i.getHeaders)){if(j.set(i.getHeaders()),!j.hasContentLength())try{const e=await m.promisify(i.getLength).call(i);Number.isFinite(e)&&e>=0&&j.setContentLength(e)}catch(e){}}else if(Ge.isBlob(i))i.size&&j.setContentType(i.type||"application/octet-stream"),j.setContentLength(i.size||0),i=h.Readable.from(Zo(i));else if(i&&!Ge.isStream(i)){if(Buffer.isBuffer(i));else if(Ge.isArrayBuffer(i))i=Buffer.from(new Uint8Array(i));else{if(!Ge.isString(i))return o(new He("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",He.ERR_BAD_REQUEST,e));i=Buffer.from(i,"utf-8")}if(j.setContentLength(i.length,!1),e.maxBodyLength>-1&&i.length>e.maxBodyLength)return o(new He("Request body larger than maxBodyLength limit",He.ERR_BAD_REQUEST,e))}const z=Ge.toFiniteNumber(j.getContentLength());let N,A;Ge.isArray($)?(O=$[0],R=$[1]):O=R=$,i&&(T||O)&&(Ge.isStream(i)||(i=h.Readable.from(i,{objectMode:!1})),i=h.pipeline([i,new Qo({maxRate:Ge.toFiniteNumber(O)})],Ge.noop),T&&i.on("progress",vt(i,ct(z,rt(lt(T),!1,3))))),e.auth&&(N=(e.auth.username||"")+":"+(e.auth.password||"")),!N&&y.username&&(N=y.username+":"+y.password),N&&j.delete("authorization");try{A=On(y.pathname+y.search,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(n){const t=new Error(n.message);return t.config=e,t.url=e.url,t.exists=!0,o(t)}j.set("Accept-Encoding","gzip, compress, deflate"+(dt?", br":""),!1);const L={path:A,method:l,headers:j.toJSON(),agents:{http:e.httpAgent,https:e.httpsAgent},auth:N,protocol:k,family:s,beforeRedirect:xt,beforeRedirects:{}};let F;!Ge.isUndefined(a)&&(L.lookup=a),e.socketPath?L.socketPath=e.socketPath:(L.hostname=y.hostname,L.port=y.port,bt(L,e.proxy,k+"//"+y.hostname+(y.port?":"+y.port:"")+L.path));const U=ht.test(L.protocol);if(L.agent=U?e.httpsAgent:e.httpAgent,e.transport?F=e.transport:0===e.maxRedirects?F=U?_:w:(e.maxRedirects&&(L.maxRedirects=e.maxRedirects),e.beforeRedirect&&(L.beforeRedirects.config=e.beforeRedirect),F=U?ft:mt),L.maxBodyLength=e.maxBodyLength>-1?e.maxBodyLength:Infinity,e.insecureHTTPParser&&(L.insecureHTTPParser=e.insecureHTTPParser),u=F.request(L,function(t){if(u.destroyed)return;const i=[t],a=+t.headers["content-length"];if(S||R){const e=new Qo({maxRate:Ge.toFiniteNumber(R)});S&&e.on("progress",vt(e,ct(a,rt(lt(S),!0,3)))),i.push(e)}let s=t;const p=t.req||u;if(!1!==e.decompress&&t.headers["content-encoding"])switch("HEAD"!==l&&204!==t.statusCode||delete t.headers["content-encoding"],(t.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":i.push(E.createUnzip(pt)),delete t.headers["content-encoding"];break;case"deflate":i.push(new at),i.push(E.createUnzip(pt)),delete t.headers["content-encoding"];break;case"br":dt&&(i.push(E.createBrotliDecompress(ut)),delete t.headers["content-encoding"])}s=i.length>1?h.pipeline(i,Ge.noop):i[0];const m=h.finished(s,()=>{m(),v()}),g={status:t.statusCode,statusText:t.statusMessage,headers:new Jn(t.headers),config:e,request:p};if("stream"===r)g.data=s,Qn(n,o,g);else{const t=[];let i=0;s.on("data",function(n){t.push(n),i+=n.length,e.maxContentLength>-1&&i>e.maxContentLength&&(d=!0,s.destroy(),o(new He("maxContentLength size of "+e.maxContentLength+" exceeded",He.ERR_BAD_RESPONSE,e,p)))}),s.on("aborted",function(){if(d)return;const n=new He("maxContentLength size of "+e.maxContentLength+" exceeded",He.ERR_BAD_RESPONSE,e,p);s.destroy(n),o(n)}),s.on("error",function(n){u.destroyed||o(He.from(n,null,e,p))}),s.on("end",function(){try{let e=1===t.length?t[0]:Buffer.concat(t);"arraybuffer"!==r&&(e=e.toString(c),c&&"utf8"!==c||(e=Ge.stripBOM(e))),g.data=e}catch(n){return o(He.from(n,null,e,g.request,g))}Qn(n,o,g)})}f.once("abort",e=>{s.destroyed||(s.emit("error",e),s.destroy())})}),f.once("abort",e=>{o(e),u.destroy(e)}),u.on("error",function(n){o(He.from(n,null,e,u))}),u.on("socket",function(e){e.setKeepAlive(!0,6e4)}),e.timeout){const n=parseInt(e.timeout,10);if(Number.isNaN(n))return void o(new He("error trying to parse `config.timeout` to int",He.ERR_BAD_OPTION_VALUE,e,u));u.setTimeout(n,function(){if(p)return;let n=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";e.timeoutErrorMessage&&(n=e.timeoutErrorMessage),o(new He(n,(e.transitional||zn).clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,e,u)),x()})}if(Ge.isStream(i)){let n=!1,o=!1;i.on("end",()=>{n=!0}),i.once("error",e=>{o=!0,u.destroy(e)}),i.on("close",()=>{n||o||x(new Yn("Request stream has been aborted",e,u))}),i.pipe(u)}else u.end(i)},new Promise((e,o)=>{let t,i;const a=(e,n)=>{i||(i=!0,t&&t(e,n))},s=e=>{a(e,!0),o(e)};n(n=>{a(n),e(n)},s,e=>t=e).catch(s)});var n},kt=Un.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let o;function t(o){let t=o;return e&&(n.setAttribute("href",t),t=n.href),n.setAttribute("href",t),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return o=t(window.location.href),function(e){const n=Ge.isString(e)?t(e):e;return n.protocol===o.protocol&&n.host===o.host}}():function(){return!0},jt=Un.hasStandardBrowserEnv?{write(e,n,o,t,i,a){const s=[e+"="+encodeURIComponent(n)];Ge.isNumber(o)&&s.push("expires="+new Date(o).toGMTString()),Ge.isString(t)&&s.push("path="+t),Ge.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read(e){const n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};const Tt=e=>e instanceof Jn?{...e}:e;function St(e,n){n=n||{};const o={};function t(e,n,o){return Ge.isPlainObject(e)&&Ge.isPlainObject(n)?Ge.merge.call({caseless:o},e,n):Ge.isPlainObject(n)?Ge.merge({},n):Ge.isArray(n)?n.slice():n}function i(e,n,o){return Ge.isUndefined(n)?Ge.isUndefined(e)?void 0:t(void 0,e,o):t(e,n,o)}function a(e,n){if(!Ge.isUndefined(n))return t(void 0,n)}function s(e,n){return Ge.isUndefined(n)?Ge.isUndefined(e)?void 0:t(void 0,e):t(void 0,n)}function r(o,i,a){return a in n?t(o,i):a in e?t(void 0,o):void 0}const c={url:a,method:a,data:a,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:r,headers:(e,n)=>i(Tt(e),Tt(n),!0)};return Ge.forEach(Object.keys(Object.assign({},e,n)),function(t){const a=c[t]||i,s=a(e[t],n[t],t);Ge.isUndefined(s)&&a!==r||(o[t]=s)}),o}var $t=e=>{const n=St({},e);let o,{data:t,withXSRFToken:i,xsrfHeaderName:a,xsrfCookieName:s,headers:r,auth:c}=n;if(n.headers=r=Jn.from(r),n.url=On(Xn(n.baseURL,n.url),e.params,e.paramsSerializer),c&&r.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),Ge.isFormData(t))if(Un.hasStandardBrowserEnv||Un.hasStandardBrowserWebWorkerEnv)r.setContentType(void 0);else if(!1!==(o=r.getContentType())){const[e,...n]=o?o.split(";").map(e=>e.trim()).filter(Boolean):[];r.setContentType([e||"multipart/form-data",...n].join("; "))}if(Un.hasStandardBrowserEnv&&(i&&Ge.isFunction(i)&&(i=i(n)),i||!1!==i&&kt(n.url))){const e=a&&s&&jt.read(s);e&&r.set(a,e)}return n},Et="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(n,o){const t=$t(e);let i=t.data;const a=Jn.from(t.headers).normalize();let s,r,c,l,p,{responseType:u,onUploadProgress:d,onDownloadProgress:m}=t;function f(){l&&l(),p&&p(),t.cancelToken&&t.cancelToken.unsubscribe(s),t.signal&&t.signal.removeEventListener("abort",s)}let h=new XMLHttpRequest;function g(){if(!h)return;const t=Jn.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders());Qn(function(e){n(e),f()},function(e){o(e),f()},{data:u&&"text"!==u&&"json"!==u?h.response:h.responseText,status:h.status,statusText:h.statusText,headers:t,config:e,request:h}),h=null}h.open(t.method.toUpperCase(),t.url,!0),h.timeout=t.timeout,"onloadend"in h?h.onloadend=g:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(g)},h.onabort=function(){h&&(o(new He("Request aborted",He.ECONNABORTED,e,h)),h=null)},h.onerror=function(){o(new He("Network Error",He.ERR_NETWORK,e,h)),h=null},h.ontimeout=function(){let n=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded";t.timeoutErrorMessage&&(n=t.timeoutErrorMessage),o(new He(n,(t.transitional||zn).clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,e,h)),h=null},void 0===i&&a.setContentType(null),"setRequestHeader"in h&&Ge.forEach(a.toJSON(),function(e,n){h.setRequestHeader(n,e)}),Ge.isUndefined(t.withCredentials)||(h.withCredentials=!!t.withCredentials),u&&"json"!==u&&(h.responseType=t.responseType),m&&([c,p]=rt(m,!0),h.addEventListener("progress",c)),d&&h.upload&&([r,l]=rt(d),h.upload.addEventListener("progress",r),h.upload.addEventListener("loadend",l)),(t.cancelToken||t.signal)&&(s=n=>{h&&(o(!n||n.type?new Yn(null,e,h):n),h.abort(),h=null)},t.cancelToken&&t.cancelToken.subscribe(s),t.signal&&(t.signal.aborted?s():t.signal.addEventListener("abort",s)));const v=Ko(t.url);v&&-1===Un.protocols.indexOf(v)?o(new He("Unsupported protocol "+v+":",He.ERR_BAD_REQUEST,e)):h.send(i||null)})},Ct=(e,n)=>{let o,t=new AbortController;const i=function(e){if(!o){o=!0,s();const n=e instanceof Error?e:this.reason;t.abort(n instanceof He?n:new Yn(n instanceof Error?n.message:n))}};let a=n&&setTimeout(()=>{i(new He(`timeout ${n} of ms exceeded`,He.ETIMEDOUT))},n);const s=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(e=>{e&&(e.removeEventListener?e.removeEventListener("abort",i):e.unsubscribe(i))}),e=null)};e.forEach(e=>e&&e.addEventListener&&e.addEventListener("abort",i));const{signal:r}=t;return r.unsubscribe=s,[r,()=>{a&&clearTimeout(a),a=null}]};const Ot=function*(e,n){let o=e.byteLength;if(!n||o<n)return void(yield e);let t,i=0;for(;i<o;)t=i+n,yield e.slice(i,t),i=t},Rt=(e,n,o,t,i)=>{const a=async function*(e,n,o){for await(const t of e)yield*Ot(ArrayBuffer.isView(t)?t:await o(String(t)),n)}(e,n,i);let s,r=0,c=e=>{s||(s=!0,t&&t(e))};return new ReadableStream({async pull(e){try{const{done:n,value:t}=await a.next();if(n)return c(),void e.close();if(o){let e=r+=t.byteLength;o(e)}e.enqueue(new Uint8Array(t))}catch(e){throw c(e),e}},cancel:e=>(c(e),a.return())},{highWaterMark:2})},zt="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Nt=zt&&"function"==typeof ReadableStream,At=zt&&("function"==typeof TextEncoder?(Lt=new TextEncoder,e=>Lt.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Lt;const Ft=(e,...n)=>{try{return!!e(...n)}catch(e){return!1}},Ut=Nt&&Ft(()=>{let e=!1;const n=new Request(Un.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!n}),It=Nt&&Ft(()=>Ge.isReadableStream(new Response("").body)),qt={stream:It&&(e=>e.body)};var Pt;zt&&(Pt=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!qt[e]&&(qt[e]=Ge.isFunction(Pt[e])?n=>n[e]():(n,o)=>{throw new He(`Response type '${e}' is not supported`,He.ERR_NOT_SUPPORT,o)})}));var Bt=zt&&(async e=>{let{url:n,method:o,data:t,signal:i,cancelToken:a,timeout:s,onDownloadProgress:r,onUploadProgress:c,responseType:l,headers:p,withCredentials:u="same-origin",fetchOptions:d}=$t(e);l=l?(l+"").toLowerCase():"text";let m,f,[h,g]=i||a||s?Ct([i,a],s):[];const v=()=>{!m&&setTimeout(()=>{h&&h.unsubscribe()}),m=!0};let x;try{if(c&&Ut&&"get"!==o&&"head"!==o&&0!==(x=await(async(e,n)=>{const o=Ge.toFiniteNumber(e.getContentLength());return null==o?(async e=>null==e?0:Ge.isBlob(e)?e.size:Ge.isSpecCompliantForm(e)?(await new Request(e).arrayBuffer()).byteLength:Ge.isArrayBufferView(e)||Ge.isArrayBuffer(e)?e.byteLength:(Ge.isURLSearchParams(e)&&(e+=""),Ge.isString(e)?(await At(e)).byteLength:void 0))(n):o})(p,t))){let e,o=new Request(n,{method:"POST",body:t,duplex:"half"});if(Ge.isFormData(t)&&(e=o.headers.get("content-type"))&&p.setContentType(e),o.body){const[e,n]=ct(x,rt(lt(c)));t=Rt(o.body,65536,e,n,At)}}Ge.isString(u)||(u=u?"include":"omit"),f=new Request(n,{...d,signal:h,method:o.toUpperCase(),headers:p.normalize().toJSON(),body:t,duplex:"half",credentials:u});let i=await fetch(f);const a=It&&("stream"===l||"response"===l);if(It&&(r||a)){const e={};["status","statusText","headers"].forEach(n=>{e[n]=i[n]});const n=Ge.toFiniteNumber(i.headers.get("content-length")),[o,t]=r&&ct(n,rt(lt(r),!0))||[];i=new Response(Rt(i.body,65536,o,()=>{t&&t(),a&&v()},At),e)}l=l||"text";let s=await qt[Ge.findKey(qt,l)||"text"](i,e);return!a&&v(),g&&g(),await new Promise((n,o)=>{Qn(n,o,{data:s,headers:Jn.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:f})})}catch(n){if(v(),n&&"TypeError"===n.name&&/fetch/i.test(n.message))throw Object.assign(new He("Network Error",He.ERR_NETWORK,e,f),{cause:n.cause||n});throw He.from(n,n&&n.code,e,f)}});const Dt={http:_t,xhr:Et,fetch:Bt};Ge.forEach(Dt,(e,n)=>{if(e){try{Object.defineProperty(e,"name",{value:n})}catch(e){}Object.defineProperty(e,"adapterName",{value:n})}});const Mt=e=>`- ${e}`,Wt=e=>Ge.isFunction(e)||null===e||!1===e;var Gt=e=>{e=Ge.isArray(e)?e:[e];const{length:n}=e;let o,t;const i={};for(let a=0;a<n;a++){let n;if(o=e[a],t=o,!Wt(o)&&(t=Dt[(n=String(o)).toLowerCase()],void 0===t))throw new He(`Unknown adapter '${n}'`);if(t)break;i[n||"#"+a]=t}if(!t){const e=Object.entries(i).map(([e,n])=>`adapter ${e} `+(!1===n?"is not supported by the environment":"is not available in the build"));throw new He("There is no suitable adapter to dispatch the request "+(n?e.length>1?"since :\n"+e.map(Mt).join("\n"):" "+Mt(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return t};function Ht(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Yn(null,e)}function Jt(e){return Ht(e),e.headers=Jn.from(e.headers),e.data=Kn.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Gt(e.adapter||Pn.adapter)(e).then(function(n){return Ht(e),n.data=Kn.call(e,e.transformResponse,n),n.headers=Jn.from(n.headers),n},function(n){return Vn(n)||(Ht(e),n&&n.response&&(n.response.data=Kn.call(e,e.transformResponse,n.response),n.response.headers=Jn.from(n.response.headers))),Promise.reject(n)})}const Kt={};["object","boolean","number","function","string","symbol"].forEach((e,n)=>{Kt[e]=function(o){return typeof o===e||"a"+(n<1?"n ":" ")+e}});const Vt={};Kt.transitional=function(e,n,o){function t(e,n){return"[Axios v1.7.4] Transitional option '"+e+"'"+n+(o?". "+o:"")}return(o,i,a)=>{if(!1===e)throw new He(t(i," has been removed"+(n?" in "+n:"")),He.ERR_DEPRECATED);return n&&!Vt[i]&&(Vt[i]=!0,console.warn(t(i," has been deprecated since v"+n+" and will be removed in the near future"))),!e||e(o,i,a)}};var Yt={assertOptions:function(e,n,o){if("object"!=typeof e)throw new He("options must be an object",He.ERR_BAD_OPTION_VALUE);const t=Object.keys(e);let i=t.length;for(;i-- >0;){const a=t[i],s=n[a];if(s){const n=e[a],o=void 0===n||s(n,a,e);if(!0!==o)throw new He("option "+a+" must be "+o,He.ERR_BAD_OPTION_VALUE)}else if(!0!==o)throw new He("Unknown option "+a,He.ERR_BAD_OPTION)}},validators:Kt};const Qt=Yt.validators;class Xt{constructor(e){this.defaults=e,this.interceptors={request:new Rn,response:new Rn}}async request(e,n){try{return await this._request(e,n)}catch(e){if(e instanceof Error){let n;Error.captureStackTrace?Error.captureStackTrace(n={}):n=new Error;const o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.stack?o&&!String(e.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+o):e.stack=o}catch(e){}}throw e}}_request(e,n){"string"==typeof e?(n=n||{}).url=e:n=e||{},n=St(this.defaults,n);const{transitional:o,paramsSerializer:t,headers:i}=n;void 0!==o&&Yt.assertOptions(o,{silentJSONParsing:Qt.transitional(Qt.boolean),forcedJSONParsing:Qt.transitional(Qt.boolean),clarifyTimeoutError:Qt.transitional(Qt.boolean)},!1),null!=t&&(Ge.isFunction(t)?n.paramsSerializer={serialize:t}:Yt.assertOptions(t,{encode:Qt.function,serialize:Qt.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&Ge.merge(i.common,i[n.method]);i&&Ge.forEach(["delete","get","head","post","put","patch","common"],e=>{delete i[e]}),n.headers=Jn.concat(a,i);const s=[];let r=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(n)||(r=r&&e.synchronous,s.unshift(e.fulfilled,e.rejected))});const c=[];let l;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let p,u=0;if(!r){const e=[Jt.bind(this),void 0];for(e.unshift.apply(e,s),e.push.apply(e,c),p=e.length,l=Promise.resolve(n);u<p;)l=l.then(e[u++],e[u++]);return l}p=s.length;let d=n;for(u=0;u<p;){const e=s[u++],n=s[u++];try{d=e(d)}catch(e){n.call(this,e);break}}try{l=Jt.call(this,d)}catch(e){return Promise.reject(e)}for(u=0,p=c.length;u<p;)l=l.then(c[u++],c[u++]);return l}getUri(e){return On(Xn((e=St(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}Ge.forEach(["delete","get","head","options"],function(e){Xt.prototype[e]=function(n,o){return this.request(St(o||{},{method:e,url:n,data:(o||{}).data}))}}),Ge.forEach(["post","put","patch"],function(e){function n(n){return function(o,t,i){return this.request(St(i||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:t}))}}Xt.prototype[e]=n(),Xt.prototype[e+"Form"]=n(!0)});var Zt=Xt;class ei{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(e){n=e});const o=this;this.promise.then(e=>{if(!o._listeners)return;let n=o._listeners.length;for(;n-- >0;)o._listeners[n](e);o._listeners=null}),this.promise.then=e=>{let n;const t=new Promise(e=>{o.subscribe(e),n=e}).then(e);return t.cancel=function(){o.unsubscribe(n)},t},e(function(e,t,i){o.reason||(o.reason=new Yn(e,t,i),n(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);-1!==n&&this._listeners.splice(n,1)}static source(){let e;return{token:new ei(function(n){e=n}),cancel:e}}}var ni=ei;const oi={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(oi).forEach(([e,n])=>{oi[n]=e});var ti=oi;const ii=function e(n){const o=new Zt(n),t=ne(Zt.prototype.request,o);return Ge.extend(t,Zt.prototype,o,{allOwnKeys:!0}),Ge.extend(t,o,null,{allOwnKeys:!0}),t.create=function(o){return e(St(n,o))},t}(Pn);ii.Axios=Zt,ii.CanceledError=Yn,ii.CancelToken=ni,ii.isCancel=Vn,ii.VERSION=Jo,ii.toFormData=Tn,ii.AxiosError=He,ii.Cancel=ii.CanceledError,ii.all=function(e){return Promise.all(e)},ii.spread=function(e){return function(n){return e.apply(null,n)}},ii.isAxiosError=function(e){return Ge.isObject(e)&&!0===e.isAxiosError},ii.mergeConfig=St,ii.AxiosHeaders=Jn,ii.formToJSON=e=>In(Ge.isHTMLForm(e)?new FormData(e):e),ii.getAdapter=Gt,ii.HttpStatusCode=ti,ii.default=ii;var ai=ii;const{CanceledError:si}=ai,ri=/screenshot(\-\d+?)?\.needle\.(webp|png|jpg|jpeg)/;async function ci(e,n){const o=n.baseUrl+X.jobs.post_update,t={...Z(n),job_id:e.identifier,status:e.status},i={status_message:e.status_message,error:e.error,progress:e.progress},a=await fetch(o,{...ee,method:"POST",headers:t,body:JSON.stringify(i)}).catch(e=>(console.error(e),null));return!!a&&a.ok}async function li(e,n){const o=n.baseUrl+X.jobs.get_status,t={...Z(n),job_id:e,org:n.org},i=await fetch(o,{...ee,method:"GET",headers:t}).catch(e=>(n.verbose?console.error("Failed to get job status",e):console.error("Failed to get job status",e.message),null));return i?i.ok?await i.json():(console.error("Failed to get status",i.status,await i.text()),null):null}var pi=on(function(e){!function(){var n="input is invalid type",o="object"==typeof window,t=o?window:{};t.JS_MD5_NO_WINDOW&&(o=!1);var i=!o&&"object"==typeof self,a=!t.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;a?t=nn:i&&(t=self);var s,r=!t.JS_MD5_NO_COMMON_JS&&e.exports,c=!t.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,l="0123456789abcdef".split(""),p=[128,32768,8388608,-2147483648],u=[0,8,16,24],d=["hex","array","digest","buffer","arrayBuffer","base64"],m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),f=[];if(c){var h=new ArrayBuffer(68);s=new Uint8Array(h),f=new Uint32Array(h)}var g=Array.isArray;!t.JS_MD5_NO_NODE_JS&&g||(g=function(e){return"[object Array]"===Object.prototype.toString.call(e)});var v=ArrayBuffer.isView;!c||!t.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&v||(v=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var x=function(e){var o=typeof e;if("string"===o)return[e,!0];if("object"!==o||null===e)throw new Error(n);if(c&&e.constructor===ArrayBuffer)return[new Uint8Array(e),!1];if(!g(e)&&!v(e))throw new Error(n);return[e,!1]},b=function(e){return function(n){return new w(!0).update(n)[e]()}},y=function(e){return function(n,o){return new _(n,!0).update(o)[e]()}};function w(e){if(e)f[0]=f[16]=f[1]=f[2]=f[3]=f[4]=f[5]=f[6]=f[7]=f[8]=f[9]=f[10]=f[11]=f[12]=f[13]=f[14]=f[15]=0,this.blocks=f,this.buffer8=s;else if(c){var n=new ArrayBuffer(68);this.buffer8=new Uint8Array(n),this.blocks=new Uint32Array(n)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}function _(e,n){var o,t=x(e);if(e=t[0],t[1]){var i,a=[],s=e.length,r=0;for(o=0;o<s;++o)(i=e.charCodeAt(o))<128?a[r++]=i:i<2048?(a[r++]=192|i>>>6,a[r++]=128|63&i):i<55296||i>=57344?(a[r++]=224|i>>>12,a[r++]=128|i>>>6&63,a[r++]=128|63&i):(i=65536+((1023&i)<<10|1023&e.charCodeAt(++o)),a[r++]=240|i>>>18,a[r++]=128|i>>>12&63,a[r++]=128|i>>>6&63,a[r++]=128|63&i);e=a}e.length>64&&(e=new w(!0).update(e).array());var c=[],l=[];for(o=0;o<64;++o){var p=e[o]||0;c[o]=92^p,l[o]=54^p}w.call(this,n),this.update(l),this.oKeyPad=c,this.inner=!0,this.sharedMemory=n}w.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");for(var n,o,t=x(e),i=t[1],a=0,s=(e=t[0]).length,r=this.blocks,l=this.buffer8;a<s;){if(this.hashed&&(this.hashed=!1,r[0]=r[16],r[16]=r[1]=r[2]=r[3]=r[4]=r[5]=r[6]=r[7]=r[8]=r[9]=r[10]=r[11]=r[12]=r[13]=r[14]=r[15]=0),i)if(c)for(o=this.start;a<s&&o<64;++a)(n=e.charCodeAt(a))<128?l[o++]=n:n<2048?(l[o++]=192|n>>>6,l[o++]=128|63&n):n<55296||n>=57344?(l[o++]=224|n>>>12,l[o++]=128|n>>>6&63,l[o++]=128|63&n):(n=65536+((1023&n)<<10|1023&e.charCodeAt(++a)),l[o++]=240|n>>>18,l[o++]=128|n>>>12&63,l[o++]=128|n>>>6&63,l[o++]=128|63&n);else for(o=this.start;a<s&&o<64;++a)(n=e.charCodeAt(a))<128?r[o>>>2]|=n<<u[3&o++]:n<2048?(r[o>>>2]|=(192|n>>>6)<<u[3&o++],r[o>>>2]|=(128|63&n)<<u[3&o++]):n<55296||n>=57344?(r[o>>>2]|=(224|n>>>12)<<u[3&o++],r[o>>>2]|=(128|n>>>6&63)<<u[3&o++],r[o>>>2]|=(128|63&n)<<u[3&o++]):(n=65536+((1023&n)<<10|1023&e.charCodeAt(++a)),r[o>>>2]|=(240|n>>>18)<<u[3&o++],r[o>>>2]|=(128|n>>>12&63)<<u[3&o++],r[o>>>2]|=(128|n>>>6&63)<<u[3&o++],r[o>>>2]|=(128|63&n)<<u[3&o++]);else if(c)for(o=this.start;a<s&&o<64;++a)l[o++]=e[a];else for(o=this.start;a<s&&o<64;++a)r[o>>>2]|=e[a]<<u[3&o++];this.lastByteIndex=o,this.bytes+=o-this.start,o>=64?(this.start=o-64,this.hash(),this.hashed=!0):this.start=o}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this},w.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,n=this.lastByteIndex;e[n>>>2]|=p[3&n],n>=56&&(this.hashed||this.hash(),e[0]=e[16],e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.bytes<<3,e[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},w.prototype.hash=function(){var e,n,o,t,i,a,s=this.blocks;this.first?n=((n=((e=((e=s[0]-680876937)<<7|e>>>25)-271733879|0)^(o=((o=(-271733879^(t=((t=(-1732584194^2004318071&e)+s[1]-117830708)<<12|t>>>20)+e|0)&(-271733879^e))+s[2]-1126478375)<<17|o>>>15)+t|0)&(t^e))+s[3]-1316259209)<<22|n>>>10)+o|0:(e=this.h0,n=this.h1,n=((n+=((e=((e+=((t=this.h3)^n&((o=this.h2)^t))+s[0]-680876936)<<7|e>>>25)+n|0)^(o=((o+=(n^(t=((t+=(o^e&(n^o))+s[1]-389564586)<<12|t>>>20)+e|0)&(e^n))+s[2]+606105819)<<17|o>>>15)+t|0)&(t^e))+s[3]-1044525330)<<22|n>>>10)+o|0),n=((n+=((e=((e+=(t^n&(o^t))+s[4]-176418897)<<7|e>>>25)+n|0)^(o=((o+=(n^(t=((t+=(o^e&(n^o))+s[5]+1200080426)<<12|t>>>20)+e|0)&(e^n))+s[6]-1473231341)<<17|o>>>15)+t|0)&(t^e))+s[7]-45705983)<<22|n>>>10)+o|0,n=((n+=((e=((e+=(t^n&(o^t))+s[8]+1770035416)<<7|e>>>25)+n|0)^(o=((o+=(n^(t=((t+=(o^e&(n^o))+s[9]-1958414417)<<12|t>>>20)+e|0)&(e^n))+s[10]-42063)<<17|o>>>15)+t|0)&(t^e))+s[11]-1990404162)<<22|n>>>10)+o|0,n=((n+=((e=((e+=(t^n&(o^t))+s[12]+1804603682)<<7|e>>>25)+n|0)^(o=((o+=(n^(t=((t+=(o^e&(n^o))+s[13]-40341101)<<12|t>>>20)+e|0)&(e^n))+s[14]-1502002290)<<17|o>>>15)+t|0)&(t^e))+s[15]+1236535329)<<22|n>>>10)+o|0,n=((n+=((t=((t+=(n^o&((e=((e+=(o^t&(n^o))+s[1]-165796510)<<5|e>>>27)+n|0)^n))+s[6]-1069501632)<<9|t>>>23)+e|0)^e&((o=((o+=(e^n&(t^e))+s[11]+643717713)<<14|o>>>18)+t|0)^t))+s[0]-373897302)<<20|n>>>12)+o|0,n=((n+=((t=((t+=(n^o&((e=((e+=(o^t&(n^o))+s[5]-701558691)<<5|e>>>27)+n|0)^n))+s[10]+38016083)<<9|t>>>23)+e|0)^e&((o=((o+=(e^n&(t^e))+s[15]-660478335)<<14|o>>>18)+t|0)^t))+s[4]-405537848)<<20|n>>>12)+o|0,n=((n+=((t=((t+=(n^o&((e=((e+=(o^t&(n^o))+s[9]+568446438)<<5|e>>>27)+n|0)^n))+s[14]-1019803690)<<9|t>>>23)+e|0)^e&((o=((o+=(e^n&(t^e))+s[3]-187363961)<<14|o>>>18)+t|0)^t))+s[8]+1163531501)<<20|n>>>12)+o|0,n=((n+=((t=((t+=(n^o&((e=((e+=(o^t&(n^o))+s[13]-1444681467)<<5|e>>>27)+n|0)^n))+s[2]-51403784)<<9|t>>>23)+e|0)^e&((o=((o+=(e^n&(t^e))+s[7]+1735328473)<<14|o>>>18)+t|0)^t))+s[12]-1926607734)<<20|n>>>12)+o|0,n=((n+=((a=(t=((t+=((i=n^o)^(e=((e+=(i^t)+s[5]-378558)<<4|e>>>28)+n|0))+s[8]-2022574463)<<11|t>>>21)+e|0)^e)^(o=((o+=(a^n)+s[11]+1839030562)<<16|o>>>16)+t|0))+s[14]-35309556)<<23|n>>>9)+o|0,n=((n+=((a=(t=((t+=((i=n^o)^(e=((e+=(i^t)+s[1]-1530992060)<<4|e>>>28)+n|0))+s[4]+1272893353)<<11|t>>>21)+e|0)^e)^(o=((o+=(a^n)+s[7]-155497632)<<16|o>>>16)+t|0))+s[10]-1094730640)<<23|n>>>9)+o|0,n=((n+=((a=(t=((t+=((i=n^o)^(e=((e+=(i^t)+s[13]+681279174)<<4|e>>>28)+n|0))+s[0]-358537222)<<11|t>>>21)+e|0)^e)^(o=((o+=(a^n)+s[3]-722521979)<<16|o>>>16)+t|0))+s[6]+76029189)<<23|n>>>9)+o|0,n=((n+=((a=(t=((t+=((i=n^o)^(e=((e+=(i^t)+s[9]-640364487)<<4|e>>>28)+n|0))+s[12]-421815835)<<11|t>>>21)+e|0)^e)^(o=((o+=(a^n)+s[15]+530742520)<<16|o>>>16)+t|0))+s[2]-995338651)<<23|n>>>9)+o|0,n=((n+=((t=((t+=(n^((e=((e+=(o^(n|~t))+s[0]-198630844)<<6|e>>>26)+n|0)|~o))+s[7]+1126891415)<<10|t>>>22)+e|0)^((o=((o+=(e^(t|~n))+s[14]-1416354905)<<15|o>>>17)+t|0)|~e))+s[5]-57434055)<<21|n>>>11)+o|0,n=((n+=((t=((t+=(n^((e=((e+=(o^(n|~t))+s[12]+1700485571)<<6|e>>>26)+n|0)|~o))+s[3]-1894986606)<<10|t>>>22)+e|0)^((o=((o+=(e^(t|~n))+s[10]-1051523)<<15|o>>>17)+t|0)|~e))+s[1]-2054922799)<<21|n>>>11)+o|0,n=((n+=((t=((t+=(n^((e=((e+=(o^(n|~t))+s[8]+1873313359)<<6|e>>>26)+n|0)|~o))+s[15]-30611744)<<10|t>>>22)+e|0)^((o=((o+=(e^(t|~n))+s[6]-1560198380)<<15|o>>>17)+t|0)|~e))+s[13]+1309151649)<<21|n>>>11)+o|0,n=((n+=((t=((t+=(n^((e=((e+=(o^(n|~t))+s[4]-145523070)<<6|e>>>26)+n|0)|~o))+s[11]-1120210379)<<10|t>>>22)+e|0)^((o=((o+=(e^(t|~n))+s[2]+718787259)<<15|o>>>17)+t|0)|~e))+s[9]-343485551)<<21|n>>>11)+o|0,this.first?(this.h0=e+1732584193|0,this.h1=n-271733879|0,this.h2=o-1732584194|0,this.h3=t+271733878|0,this.first=!1):(this.h0=this.h0+e|0,this.h1=this.h1+n|0,this.h2=this.h2+o|0,this.h3=this.h3+t|0)},w.prototype.toString=w.prototype.hex=function(){this.finalize();var e=this.h0,n=this.h1,o=this.h2,t=this.h3;return l[e>>>4&15]+l[15&e]+l[e>>>12&15]+l[e>>>8&15]+l[e>>>20&15]+l[e>>>16&15]+l[e>>>28&15]+l[e>>>24&15]+l[n>>>4&15]+l[15&n]+l[n>>>12&15]+l[n>>>8&15]+l[n>>>20&15]+l[n>>>16&15]+l[n>>>28&15]+l[n>>>24&15]+l[o>>>4&15]+l[15&o]+l[o>>>12&15]+l[o>>>8&15]+l[o>>>20&15]+l[o>>>16&15]+l[o>>>28&15]+l[o>>>24&15]+l[t>>>4&15]+l[15&t]+l[t>>>12&15]+l[t>>>8&15]+l[t>>>20&15]+l[t>>>16&15]+l[t>>>28&15]+l[t>>>24&15]},w.prototype.array=w.prototype.digest=function(){this.finalize();var e=this.h0,n=this.h1,o=this.h2,t=this.h3;return[255&e,e>>>8&255,e>>>16&255,e>>>24&255,255&n,n>>>8&255,n>>>16&255,n>>>24&255,255&o,o>>>8&255,o>>>16&255,o>>>24&255,255&t,t>>>8&255,t>>>16&255,t>>>24&255]},w.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(16),n=new Uint32Array(e);return n[0]=this.h0,n[1]=this.h1,n[2]=this.h2,n[3]=this.h3,e},w.prototype.buffer=w.prototype.arrayBuffer,w.prototype.base64=function(){for(var e,n,o,t="",i=this.array(),a=0;a<15;)e=i[a++],n=i[a++],o=i[a++],t+=m[e>>>2]+m[63&(e<<4|n>>>4)]+m[63&(n<<2|o>>>6)]+m[63&o];return t+(m[(e=i[a])>>>2]+m[e<<4&63]+"==")},(_.prototype=new w).finalize=function(){if(w.prototype.finalize.call(this),this.inner){this.inner=!1;var e=this.array();w.call(this,this.sharedMemory),this.update(this.oKeyPad),this.update(e),w.prototype.finalize.call(this)}};var k=function(){var e=b("hex");a&&(e=function(e){var o,i=O,a=z.Buffer;return o=a.from&&!t.JS_MD5_NO_BUFFER_FROM?a.from:function(e){return new a(e)},function(t){if("string"==typeof t)return i.createHash("md5").update(t,"utf8").digest("hex");if(null==t)throw new Error(n);return t.constructor===ArrayBuffer&&(t=new Uint8Array(t)),g(t)||v(t)||t.constructor===a?i.createHash("md5").update(o(t)).digest("hex"):e(t)}}(e)),e.create=function(){return new w},e.update=function(n){return e.create().update(n)};for(var o=0;o<d.length;++o){var i=d[o];e[i]=b(i)}return e}();k.md5=k,k.md5.hmac=function(){var e=y("hex");e.create=function(e){return new _(e)},e.update=function(n,o){return e.create(n).update(o)};for(var n=0;n<d.length;++n){var o=d[n];e[o]=y(o)}return e}(),r?e.exports=k:t.md5=k}()});function ui(e,n=0){return hi(e,n,2).getUint16(0,!0)}function di(e,n=0){return hi(e,n,4).getUint32(0,!0)}function mi(e,n=0,o=e.byteLength){const t=e.slice(n,n+o);return gi.decode(new Uint8Array(t))}function fi(e,n,o=0){if(e.length<n.length+o)return!1;for(const[t,i]of n.entries())if(null!==i&&i!==e[t+o])return!1;return!0}function hi(e,n,o){const t=e.slice(n,n+o);return new DataView(new Uint8Array(t).buffer)}const gi=new TextDecoder("utf8"),vi=[["db","application/vnd.sqlite3",[83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0]],["woff","font/woff",[119,79,70,70]],["woff2","font/woff2",[119,79,70,50]],["bmp","image/bmp",[66,77]],["gif","image/gif",[71,73,70,56,55,97]],["gif","image/gif",[71,73,70,56,57,97]],["heic","image/heic",[102,116,121,112,104,101,105],{offset:4}],["heic","image/heic",[102,116,121,112,109],{offset:4}],["ico","image/x-icon",[0,0,1,0]],["jpg","image/jpeg",[255,216,255]],["pdf","application/pdf",[37,80,68,70,45]],["png","image/png",[137,80,78,71,13,10,26,10]],["7z","application/x-7z-compressed",[55,122,188,175,39,28]],["rar","application/x-rar-compressed",[82,97,114,33,26,7,0]],["rar","application/x-rar-compressed",[82,97,114,33,26,7,1,0]],["rtf","application/rtf",[123,92,114,116,102,49]],["bz2","application/x-bzip2",[66,90,104]],["gz","application/gzip",[31,139]],["tar","application/x-tar",[117,115,116,97,114,0,48,48],{offset:257}],["tar","application/x-tar",[117,115,116,97,114,32,32,0],{offset:257}],["tif","image/tiff",[73,73,42,0]],["tiff","image/tiff",[77,77,0,42]],["zip","application/zip",[80,75,3,4],{exact:!1}],["zip","application/zip",[80,75,5,6]],["mp3","audio/mp3",[255,251]],["mp3","audio/mp3",[255,243]],["mp3","audio/mp3",[255,242]],["mp3","audio/mp3",[73,68,51]],["mp4","video/mp4",[102,116,121,112,105,115,111,109],{offset:4}],["avi","video/x-msvideo",[82,73,70,70,null,null,null,null,65,86,73,32]],["wav","audio/wav",[82,73,70,70,null,null,null,null,87,65,86,69]],["ogx","application/ogg",[79,103,103,83],{exact:!1},[["oga","audio/ogg",[127,70,76,65,67],{offset:28}],["ogg","audio/ogg",[1,118,111,114,98,105,115],{offset:28}],["ogm","video/ogg",[1,118,105,100,101,111,0],{offset:28}],["ogv","video/ogg",[128,116,104,101,111,114,97],{offset:28}]]],["webp","image/webp",[82,73,70,70,null,null,null,null,87,69,66,80]],["psd","image/vnd.adobe.photoshop",[56,66,80,83]],["flac","audio/x-flac",[102,76,97,67]],["wasm","application/wasm",[0,97,115,109]],["deb","application/x-deb",[33,60,97,114,99,104,62,10]],["exe","application/x-msdownload",[77,90]],["exe","application/x-msdownload",[90,77]],["class","application/java-vm",[202,254,186,190]]];function xi(e){return e.flatMap(([e,n,o,t={},i=[]])=>[[e,n,o,t],...i])}function bi(e,n){const o=ui(e,26),t=mi(e,30,o),[i]=t.split("/"),a=t.endsWith(".xml");return"META-INF"===i?{ext:"jar",mime:"application/java-archive"}:"ppt"===i&&a?{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}:"word"===i&&a?{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}:"xl"===i&&a?{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}:"mimetype"===i?function(e,n){const o=di(e,18),t=di(e,22),i=ui(e,28);if(o===t){const t=mi(e,30+n+i,o);if("application/vnd.oasis.opendocument.presentation"===t)return{ext:"odp",mime:t};if("application/vnd.oasis.opendocument.spreadsheet"===t)return{ext:"ods",mime:t};if("application/vnd.oasis.opendocument.text"===t)return{ext:"odt",mime:t};if("application/epub+zip"===t)return{ext:"epub",mime:t}}}(e,o)??n:n}const yi=function(e){return xi(e).map(([e,n,o,{offset:t=0}={}])=>o.length+t).reduce((e,n)=>n>e?n:e,0)}(vi);function wi(e,n){for(const[o,t,i,{exact:a=!0,offset:s=0}={},r=[]]of n)if(fi(e,i,s)){if("zip"===o&&!a)return bi(e.buffer,{ext:o,mime:t});if(!a&&r.length)for(const[n,o,t,{offset:i=0}={}]of r)if(fi(e,t,i))return{ext:n,mime:o};return{ext:o,mime:t}}}function _i(e,n,o=void 0){const t=function(e,n,o){let t=0;for(;;){let n=e.indexOf("\\",t);if(-1===n)break;t=n+1,e=e.replace("\\","/")}return e}(e).split("/").pop()||e,i=(null==o?void 0:o.type)||ji(n,e),a=new File([n],t,{type:i});return a.path=e,a}function ki(e){const n=pi.md5.create();return n.update(e),n.base64()}function ji(e,n=void 0){const o=function(e,{extra:n=!1,hint:o}={}){const t=new Uint8Array(e.slice(0,yi));if(o){const e=function(e,{ext:n,mime:o}){return n||o?xi(e).filter(e=>e[0]===n||e[1]===o):[]}(vi,o);if(e.length>0){const n=wi(t,e);if(void 0!==n)return n}}return wi(t,vi)||(n?function(e){return function(e){try{const n=mi(e);if(!function(e){for(let n=0;n<e.length;n++)try{const o=e.charCodeAt(n);if(65533===o||o<=8)return!1}catch{return!1}return!0}(n))return;try{return JSON.parse(n),{ext:"json",mime:"application/json"}}catch{return{ext:"txt",mime:"text/plain"}}}catch{return}}(e)}(e):void 0)}(e);if(o)return o.mime;const t=new Uint8Array(e).subarray(0,4);let i="";for(var a=0;a<t.length;a++)i+=t[a].toString(16);let s="unknown";switch(i){case"676c5446":s="model/gltf-binary";break;case"89504e47":s="image/png";break;case"ffd8ffe0":case"ffd8ffe1":case"ffd8ffe2":case"ffd8ffe3":case"ffd8ffe8":s="image/jpeg";break;default:s="unknown"}return"unknown"===s&&"string"==typeof n&&(s=function(e){const n=e.toLowerCase();let o="";return n.endsWith(".html")||n.endsWith(".html.gz")||n.endsWith(".html.br")?o="text/html":n.endsWith(".js")||n.endsWith(".js.gz")||n.endsWith(".js.br")||n.endsWith(".mjs")||n.endsWith(".mjs.gz")||n.endsWith(".mjs.br")||n.endsWith(".cjs")||n.endsWith(".cjs.gz")||n.endsWith(".cjs.br")?o="application/javascript":n.endsWith(".wasm")?o="application/wasm":n.endsWith(".css")||n.endsWith(".css.gz")||n.endsWith(".css.br")?o="text/css":n.endsWith(".json")?o="application/json":n.endsWith(".txt")?o="text/plain":n.endsWith(".bin")?o="application/octet-stream":n.endsWith(".png")?o="image/png":n.endsWith(".jpg")||n.endsWith(".jpeg")?o="image/jpeg":n.endsWith(".gif")?o="image/gif":n.endsWith(".webp")?o="image/webp":n.endsWith(".svg")?o="image/svg+xml":n.endsWith(".xml")?o="application/xml":n.endsWith(".glb")?o="model/gltf-binary":n.endsWith(".gltf")?o="model/gltf+json":n.endsWith(".vrm")?o="model/gltf-binary":n.endsWith(".usdz")?o="model/vnd.usdz+zip":n.endsWith(".usda")?o="model/vnd.usd-usda":n.endsWith(".usdc")?o="model/vnd.usd-usdc":n.endsWith(".usd")?o="model/vnd.usd-usd":n.endsWith(".mtl")?o="model/mtl":n.endsWith(".obj")?o="model/obj":n.endsWith(".fbx")?o="model/vnd.autodesk.fbx":n.endsWith(".stl")?o="model/stl":n.endsWith(".mtlx")&&(o="application/materialx+xml"),o}(n)),s}function Ti(e,n){const o=e.toLowerCase();return"application/gzip"===n||"application/brotli"===n?(o.endsWith(".html.gz")||o.endsWith(".html.br")?(n="text/html",e=e.substring(0,e.length-3)):o.endsWith(".js.gz")||o.endsWith(".js.br")||o.endsWith(".mjs.gz")||o.endsWith(".mjs.br")||o.endsWith(".cjs.gz")||o.endsWith(".cjs.br")?(n="application/javascript",e=e.substring(0,e.length-3)):o.endsWith(".css.gz")||o.endsWith(".css.br")?(n="text/css",e=e.substring(0,e.length-3)):o.endsWith(".json.gz")||o.endsWith(".json.br")?(n="text/json",e=e.substring(0,e.length-3)):o.endsWith(".txt.gz")||o.endsWith(".txt.br")?(n="text/plain",e=e.substring(0,e.length-3)):o.endsWith(".wasm.gz")||o.endsWith(".wasm.br")?(n="application/wasm",e=e.substring(0,e.length-3)):o.endsWith(".bin.gz")||o.endsWith(".bin.br")?(n="application/octet-stream",e=e.substring(0,e.length-3)):o.endsWith(".png.gz")||o.endsWith(".png.br")?(n="image/png",e=e.substring(0,e.length-3)):o.endsWith(".jpg.gz")||o.endsWith(".jpg.br")||o.endsWith(".jpeg.gz")||o.endsWith(".jpeg.br")?(n="image/jpeg",e=e.substring(0,e.length-3)):o.endsWith(".gif.gz")||o.endsWith(".gif.br")?(n="image/gif",e=e.substring(0,e.length-3)):o.endsWith(".webp.gz")||o.endsWith(".webp.br")?(n="image/webp",e=e.substring(0,e.length-3)):o.endsWith(".svg.gz")||o.endsWith(".svg.br")?(n="image/svg+xml",e=e.substring(0,e.length-3)):o.endsWith(".xml.gz")||o.endsWith(".xml.br")?(n="application/xml",e=e.substring(0,e.length-3)):o.endsWith(".ico.gz")||o.endsWith(".ico.br")?(n="image/x-icon",e=e.substring(0,e.length-3)):o.endsWith(".webm.gz")||o.endsWith(".webm.br")?(n="video/webm",e=e.substring(0,e.length-3)):o.endsWith(".mp4.gz")||o.endsWith(".mp4.br")?(n="video/mp4",e=e.substring(0,e.length-3)):o.endsWith(".mov.gz")||o.endsWith(".mov.br")?(n="video/quicktime",e=e.substring(0,e.length-3)):o.endsWith(".mp3.gz")||o.endsWith(".mp3.br")?(n="audio/mpeg",e=e.substring(0,e.length-3)):o.endsWith(".wav.gz")||o.endsWith(".wav.br")?(n="audio/wave",e=e.substring(0,e.length-3)):o.endsWith(".ogg.gz")||o.endsWith(".ogg.br")?(n="audio/ogg",e=e.substring(0,e.length-3)):o.endsWith(".flac.gz")||o.endsWith(".flac.br")?(n="audio/flac",e=e.substring(0,e.length-3)):o.endsWith(".glb.gz")||o.endsWith(".glb.br")?(n="model/gltf-binary",e=e.substring(0,e.length-3)):o.endsWith(".gltf.gz")||o.endsWith(".gltf.br")?(n="model/gltf+json",e=e.substring(0,e.length-3)):o.endsWith(".vrm.gz")||o.endsWith(".vrm.br")?(n="model/gltf-binary",e=e.substring(0,e.length-3)):o.endsWith(".usdz.gz")||o.endsWith(".usdz.br")?(n="model/vnd.usdz+zip",e=e.substring(0,e.length-3)):o.endsWith(".obj.gz")||o.endsWith(".obj.br")?(n="model/obj",e=e.substring(0,e.length-3)):o.endsWith(".mtl.gz")||o.endsWith(".mtl.br")?(n="model/mtl",e=e.substring(0,e.length-3)):o.endsWith(".stl.gz")||o.endsWith(".stl.br")?(n="model/stl",e=e.substring(0,e.length-3)):(o.endsWith(".mtlx.gz")||o.endsWith(".mtlx.br"))&&(n="application/materialx+xml",e=e.substring(0,e.length-3)),{filename:e,mimetype:n}):null}function Si(e,n=void 0,o=!0){const t=Math.abs(e);if(t>=1099511627776){let t=o?" TB":"";return(e/1099511627776).toFixed(void 0===n?2:n)+t}if(t>=1073741824){let t=o?" GB":"";return(e/1073741824).toFixed(void 0===n?2:n)+t}if(t>=1048576){let t=o?" MB":"";return(e/1048576).toFixed(void 0===n?1:n)+t}if(t>=1024){let t=o?" KB":"";return(e/1024).toFixed(void 0===n?0:n)+t}let i=o?" B":"";return e.toFixed(0)+i}function $i(e){return e.split("/").reduce((e,n)=>("."===n||(".."===n?e.pop():null!=n&&n.length&&e.push(n)),e),[]).join("/")}async function Ei(e){return new Promise(n=>setTimeout(n,e))}const Ci=/^image_(?<image_lod>\d+)_|^mesh_lod_(?<mesh_lod>\d+)_/;function Oi(e){return e.includes("\\u")?JSON.parse(`"${e}"`):decodeURIComponent(e)}function Ri(e){let n=null,o="";const t=e.filter(e=>"index.html"===e.name.toLowerCase()||"index.html.gz"===e.name.toLowerCase()||"index.html.br"===e.name.toLowerCase());if(1===t.length)return n=t[0],n;const i=e.filter(e=>e.name.toLowerCase().endsWith(".html")||e.name.toLowerCase().endsWith(".htm")||e.name.toLowerCase().endsWith(".html.gz")||e.name.toLowerCase().endsWith(".html.br"));if(1===i.length)return i[0];if(i.length>1){const e=new Map;for(const n of i){const o=n.path.split("/");let t=e.get(o.length);t||(t=[],e.set(o.length,t)),t.push(n)}const t=Array.from(e.keys()).sort((e,n)=>e-n);if(t.length>0)for(const o of t){const t=e.get(o);if(!t)continue;const i=t.find(e=>"index.html"===e.name.toLowerCase()||"index.html.gz"===e.name.toLowerCase()||"index.html.br"===e.name.toLowerCase());return i?(n=i,n):(n=t[0],n)}return o="Invalid upload: Multiple HTML files found but could not determine root.",console.error(o,i.map(e=>e.path||e.name)),{error:o}}const a=e.filter(e=>e.name.toLowerCase().endsWith(".glb")||e.name.toLowerCase().endsWith(".gltf")||e.name.toLowerCase().endsWith(".vrm"));if(a.length>1){const e=function(e){const n=new Array,o=/(mesh_lod|image)_\d_(.{1,50})/;for(const t of e){if(o.test(t.name))continue;const e=t.name.toLowerCase();(e.endsWith(".gltf")||e.endsWith(".vrm")||e.endsWith(".glb"))&&n.push(t)}return 1==n.length?n[0]:zi(n)}(a);return e?(n=e,n):(o="Invalid upload: Multiple glb/glTF/vrm files found. This is currently not supported.",console.error(o,a.map(e=>e.path||e.name)),{error:o})}if(1===a.length)return n=a[0],n;const s=e.filter(e=>e.name.toLowerCase().endsWith(".usdz")||e.name.toLowerCase().endsWith(".usd")||e.name.toLowerCase().endsWith(".usda")||e.name.toLowerCase().endsWith(".usdc"));s.length>=1&&(n=zi(s));const r=e.filter(e=>e.name.toLowerCase().endsWith(".fbx"));if(r.length>1)return o="Invalid upload: Multiple fbx files found. This is currently not supported.",console.error(o,r),{error:o};if(1===r.length)return n=r[0],n;const c=e.filter(e=>e.name.toLowerCase().endsWith(".obj"));if(c.length>1)return o="Invalid upload: Multiple obj files found. This is currently not supported.",console.error(o,c),{error:o};if(1===c.length)return n=c[0],n;const l=e.filter(e=>e.name.toLowerCase().endsWith(".stl"));if(l.length>1)return o="Invalid upload: Multiple stl files found. This is currently not supported.",console.error(o,l),{error:o};if(1===l.length)return n=l[0],n;if(1===e.length&&!e[0].arrayBuffer&&e[0].path.toLowerCase().startsWith("http"))return n=e[0],n;const p=e.filter(e=>e.name.toLowerCase().endsWith("package.json"));if(1===p.length)return n=p[0],n;if(p.length>1)return o="Invalid upload: Multiple package.json files found. This is currently not supported.",console.error(o,p),{error:o};const u=e.filter(e=>e.name.toLowerCase().endsWith(".mtlx"));return u.length>1?(o="Invalid upload: Multiple mtlx files found. This is currently not supported.",console.error(o,u),{error:o}):1===u.length?(n=u[0],n):n||{error:"No supported file to upload found..."}}function zi(e){let n=-1,o=Infinity;for(let t=0;t<e.length;t++){const i=e[t];i.path.split("/").length<o&&(o=i.path.split("/").length,n=t)}return n<0?null:e[n]}class Ni{constructor(e,n){this.totalFiles=e,this.estimatedTotalSize=n,this.uploadedSize=0,this.startTime=Date.now(),this.lastUpdateTime=this.startTime,this.lastUploadedSize=0,this.speedEMA=null,this.emaFactor=.1,this.smoothedRemainingTime=null,this.recentSpeeds=new Array,this.maxRecentSpeeds=20,this.initialEstimateThreshold=.05}updateProgress(e){const n=Date.now(),o=(n-this.lastUpdateTime)/1e3,t=e-this.lastUploadedSize;if(this.uploadedSize=e,o>0&&t>0){this.recentSpeeds.push(t/o),this.recentSpeeds.length>this.maxRecentSpeeds&&this.recentSpeeds.shift();const e=this.recentSpeeds.reduce((e,n)=>e+n,0)/this.recentSpeeds.length;this.speedEMA=null===this.speedEMA?e:this.emaFactor*e+(1-this.emaFactor)*this.speedEMA}this.lastUpdateTime=n,this.lastUploadedSize=e;const i=this.uploadedSize/this.estimatedTotalSize,a=(n-this.startTime)/1e3,s=this.speedEMA&&this.speedEMA>0?this.speedEMA:this.uploadedSize/a;let r;if(r=s>0?(this.estimatedTotalSize-this.uploadedSize)/s:Infinity,i>=this.initialEstimateThreshold)if(null===this.smoothedRemainingTime)this.smoothedRemainingTime=r;else{const e=.1;this.smoothedRemainingTime=(1-e)*this.smoothedRemainingTime+e*r}else this.smoothedRemainingTime=a/i-a;return this.smoothedRemainingTime=Math.max(this.smoothedRemainingTime,(this.estimatedTotalSize-this.uploadedSize)/s),{progress:100*i,estimatedTimeRemaining:Math.round(this.smoothedRemainingTime),estimatedTimeRemainingString:this.smoothedRemainingTime>3?this.__formatTime(this.smoothedRemainingTime):"few seconds"}}__formatTime(e){if(!isFinite(e)||e>86400)return"Calculating...";if(e<60)return`${Math.round(e)}sec`;const n=Math.floor(e/60);return n<60?`${n}min`:`${Math.floor(n/60)}h ${n%60}min`}}async function Ai(e){const n=await import("./pako.esm-01431bd2.js"),o=await e.arrayBuffer(),t=n.gzip(new Uint8Array(o)).buffer.slice(0);if(t.byteLength>51200&&t.byteLength>=o.byteLength){if(o.byteLength>0)return null}else if(!(t instanceof ArrayBuffer))return console.error("gzipCompress: Invalid ArrayBuffer"),{error:`Gzip compressing failed for "${e.name}" (unexpected result)`};return _i(`${"path"in e?e.path:e.name}.gz`,t,{type:"application/gzip"})}async function Li(e,n,o=void 0){const t=async function(e,n,o){var t,i,a,s,r,c,l,p,u,d,m,f,h,g;const v=n.files,x=(null==(t=o)?void 0:t.loglevel)||"none";if(!v.length)return"none"!=x&&console.error("No files to upload"),{success:!1,error:"No files to upload"};if(!n.entrypoint){const e=Ri(v);if(null==e)return{success:!1,error:"No entrypoint file found"};if("object"==typeof e&&"error"in e)return{success:!1,error:e.error};"info"===x&&console.log("Entrypoint: "+e.name),n.entrypoint=e}n.entrypoint&&!v.includes(n.entrypoint)&&v.push(n.entrypoint);const b=await async function(e){if(e.length>5e3)return{success:!1,error:"Too many files. Maximum filecount is 5000"};let n=0,o=0,t=0,i=0;for(let c=e.length-1;c>=0;c--){const l=e[c];if(n+=l.size,n>1073741824)return{success:!1,error:`Total file size exceeds limit of ${1024..toFixed(0)} MB. Please reduce the size of your upload.`};const p=l.name.toLocaleLowerCase();if(".ds_store"!==p){if(p.endsWith(".gltf")?t++:p.endsWith(".glb")?(r=p)&&Ci.test(r)||i++:p.endsWith(".vrm")&&o++,p.endsWith(".gltf")){var a;t+=1,console.log(`Found glTF file ${l.name}. Will check if all dependencies are available\n`,e);const n=await l.text(),o=n.matchAll(/"uri"\s*:\s*"(?<value>.*?)"/g);if(!o)continue;const i=JSON.parse(n);if("2.0"!==i.asset.version)return console.warn("⚠ glTF version is not 2.0. This is currently not supported."),{success:!1,error:`glTF version ${i.asset.version} is unsupported.Please use glTF 2.0.`};const r=null==(a=l.path)?void 0:a.split("/"),c=r.splice(0,r.length-1).join("/");for(const n of o){var s;const o=null==(s=n.groups)?void 0:s.value;if(o){let n=!1;if(o.startsWith("http://")||o.startsWith("https://")||o.startsWith("www.")){console.log(`✅ Found remote dependency ${o} `);break}if(o.startsWith("data:")){console.log(`✅ Found embedded dependency ${o} `);break}{const t=$i(`${c}/${Oi(o)}`);console.log('❓ Check if local dependency exists "'+t+'"');for(const o of e){if(o.webkitRelativePath===t||o.name==t){n=!0,console.log(`✅ Found dependency in name or webkit: ${o.name} || ${o.webkitRelativePath} `);break}if(o.path===t){n=!0,console.log(`✅ Found dependency in path: ${o.path} `);break}}}if(!n)return console.warn("⚠ Missing dependency "+o,c),{success:!1,error:"Missing resource: "+o}}}}}else e.splice(c,1)}var r;return{success:!0,vrm_count:o,gltf_count:t,glb_count:i}}(v);if("error"in b)return{success:!1,error:b.error||"Failed to validate files"};if(null!=(i=n.entrypoint)&&i.name.endsWith(".htm")||null!=(a=n.entrypoint)&&a.name.endsWith(".html")||null!=(s=n.entrypoint)&&s.name.endsWith(".html.gz")||null!=(r=n.entrypoint)&&r.name.endsWith(".html.br"))o||(o={}),o.type="deployment";else if(b.vrm_count>10)return{success:!1,error:"Multiple model files found - this is not supported for asset uploads. Please upload a single model file only."};if(n.raw)"none"!=x&&console.warn("Raw upload - skipping gzip compression of files");else for(let e=0;e<v.length;e++){const t=v[e],i=t.name.toLowerCase();if(i.endsWith(".html")||i.endsWith(".js")||i.endsWith(".css")){var y,w;"none"!==(null==(y=o)?void 0:y.loglevel)&&console.log(`gZip compressing file: ${t.name}`);const i=await Ai(t).catch(e=>({error:`Error compressing ${t.name}: ${e.message}`}));if(null===i){var _;"none"!==(null==(_=o)?void 0:_.loglevel)&&console.error(`Did not compress file: ${t.name}`);continue}if("error"in i)return{success:!1,error:i.error,status:500};if(!i)return{success:!1,error:`Failed to compress ${t.name}`,status:500};const a=n.entrypoint===t;v[e]=i,a&&(n.entrypoint=i),"none"!==(null==(w=o)?void 0:w.loglevel)&&console.log(`gZip compressed file: ${t.name} ${a?"(entrypoint)":""}`)}}v.sort((e,n)=>e.name.includes(".needle")&&!n.name.includes(".needle")?-1:!e.name.includes(".needle")&&n.name.includes(".needle")?1:0);const{baseUrl:k,authToken:j}=e,T="Bearer "+j,S={...Z(e),triggered_by:n.triggered_by,filename:`${encodeURIComponent(n.entrypoint.name)}`,"total-files":v.length.toString(),"total-files-size":v.reduce((e,n)=>e+n.size,0).toString()};null!=(c=o)&&c.view_id&&(S.view_id=o.view_id),null!=(l=o)&&l.type&&(S.type=o.type),null!=(p=o)&&p.name&&(S.name=encodeURIComponent(o.name)),null!=(u=o)&&u.parent_job_id&&(S.parent_job_id=o.parent_job_id),S["x-needle-view-type"]||(S["x-needle-view-type"]=function(e,n){if(null!=n&&n.name){const e=n.name.toLowerCase();if(e.endsWith(".htm")||e.endsWith(".html")||e.endsWith(".html.gz")||e.endsWith(".html.br"))return"deployment"}const o=[".hdr",".exr"];if(e.some(e=>{const n=e.name.toLowerCase();return o.some(e=>n.endsWith(e))}))return"hdri";const t=["_albedo","_normal","_roughness","_metallic","_metalness","_ao","_diffuse","_specular","_bump","_displacement","_height"],i=[".png",".jpg",".jpeg",".tga",".tiff",".webp",".bmp"];if(e.some(e=>{const n=e.name.toLowerCase();return t.some(e=>n.includes(e))&&i.some(e=>n.endsWith(e))}))return"texture";const a=[".gltf",".glb",".vrm",".usdz",".usd",".usda",".usdc",".fbx",".obj",".stl"];return e.some(e=>{const n=e.name.toLowerCase();return a.some(e=>n.endsWith(e))})?e.some(e=>{const n=e.name.toLowerCase();return n.includes("prefab")||n.includes("scene")||n.includes("template")})?"prefab":"upload":e.some(e=>"package.json"===e.name.toLowerCase())?"tool":"upload"}(v,n.entrypoint));const $={results:{entrypoint:(null==(d=n.entrypoint)?void 0:d.path)||(null==(m=n.entrypoint)?void 0:m.name),files:[]}},E=[];for(let e=0;e<v.length;e++){var C,O,R;const n=v[e];let t=n.path||n.webkitRelativePath||n.name;if(null!=(C=t)&&C.includes(":"))throw new Error(`Invalid filename: ${t}`);let i=await n.arrayBuffer();const a=n.size;let s=n.type;if(null!=(O=s)&&O.length&&"unknown"!==s.toLowerCase()||(s=ji(i,t)),"deployment"===(null==(R=o)?void 0:R.type)){const e=Ti(t,s);e&&(t=e.filename,s=e.mimetype)}const r=ki(i);E[e]=i,$.results.files[e]={filename:t,content_type:s,content_length:a,content_md5:r}}const z=await fetch(k+X.upload.request,{...ee,method:"POST",headers:S,body:JSON.stringify($)}).catch(e=>"fetch failed"==e.message||"Failed to fetch"==e.message?`Network error. Make sure you are connected to the internet and ${k} is reachable.`:(console.error("Failed to begin upload\n",e),null));if(null===z||"string"==typeof z)return{success:!1,error:z||"Failed to begin upload"};if(!z.ok){const e=await z.text();if(e.startsWith("{")){const n=JSON.parse(e);if("error"in n)return{success:!1,status:z.status,error:n.error}}return"none"!=x&&console.error("Failed to begin upload\n",z.status,e),{success:!1,status:z.status,error:`${e}`}}const N=await z.json();"debug"===x&&console.debug("BeginResponse",N);const A=v.reduce((e,n)=>e+n.size,0);var L;if("exists"===N.type)return"none"!=x&&console.log("Upload already exists",N.id),null!=(L=o)&&L.onStart&&o.onStart(N.id,N.view_id),{success:!0,uploadSkipped:!0,id:N.id,type:N.job_type,view_id:N.view_id,filesUploaded:v.length,totalSize:A,url:N.url};const F=n.entrypoint.webkitRelativePath||n.entrypoint.name;let U=0;null==(f=o)||null==(f=f.abort)||f.addEventListener("abort",async()=>{console.log("Upload aborted: Cancelling upload"),await fetch(k+X.upload.cancel,{...ee,method:"POST",headers:{authorization:T,id:N.id}})});let I=!1,q=Date.now();function P(n,o,t=!1){if(!t&&Date.now()-q<1e3)return!1;if(I&&"completed"!==o)return void("none"!=x&&console.warn("Invalid status update..."));q=Date.now();const i=Math.floor(U/A*100);return"debug"===x&&console.log("SET STATUS: "+o,n,i),ci({identifier:N.id,status:o,status_message:n,progress:i},e),!0}null!=(h=o)&&h.onStart&&o.onStart(N.id,N.view_id);const B=Date.now(),D=new Ni(v.length,A/1024/1024),M=new Array;let W=!1;const G=[...v],H=v.length;for(let t=0;t<G.length;t++){var J;if(null!=(J=o)&&null!=(J=J.abort)&&J.aborted){console.debug("Upload aborted");break}if(W){console.debug("Upload failed");break}if(M.length<10){console.debug(`Uploading file ${t}/${v.length}: ${v[t].name}`);let i=0,a=0;const s=$.results.files[t],r=s.filename,c=E[t],l=s.content_length,p=s.content_type,u=v[t],d=u.name.endsWith(".gz")?"gzip":u.name.endsWith(".br")?"br":void 0,m=Fi({uploadId:N.id,uploadRequestPUTUrl:N.request_put_url,entrypointPath:F,file:v[t],fileName:r,fileMd5:s.content_md5,fileBuffer:c,fileType:p,content_encoding:d,fileSize:l,fileIndex:t,fileNumber:t+1,fileCount:H,loglevel:x,experimental:n.experimental,args:e,options:o,onProgress:e=>{var n;const s=e.progress||0;i=v[t].size*s;const c=i-a;if(a=i,U+=c,null!=(n=o)&&n.progress){const e=U/A,n=v.length,i=v[t].size,a=(Date.now()-B)/1e3,c=D.updateProgress(U/1024/1024);o.progress({uploadedBytes:U,totalBytes:A,progress01:e,fileName:v[t].name,fileSize:i,fileProgress01:s,fileIndex:t,totalFiles:n,estimatedTimeLeftDisplay:c.estimatedTimeRemainingString,estimatedTimeLeft:c.estimatedTimeRemaining,elapsedTime:a}),P(`Uploading file ${t+1}/${n} (${r}): ${(100*s).toFixed(0)}% of ${Si(A)}. Finished in approx. ${c.estimatedTimeRemainingString}`,"running",!1)}}}).then(e=>{if(!0!==e)return e;for(let e=M.length-1;e>=0;e--)M[e]===m&&M.splice(e,1);P(`Uploaded ${Si(U)+" of "+Si(A)} for ${v[t].name}`,"running")}).catch(e=>{var n;null!=(n=o)&&null!=(n=n.abort)&&n.aborted?console.warn("Upload aborted"):(console.error(e.message),W=!0)});M.push(m)}M.length>=10&&await Promise.race(M)}if(await Promise.all(M).catch(e=>{var n;null!=(n=o)&&null!=(n=n.abort)&&n.aborted?console.warn("Upload aborted"):(console.error(e.message),W=!0)}),W)return await ci({identifier:N.id,status:"failed",error:"Failed to upload files"},e),{success:!1,error:"Failed to upload files"};if(null!=(g=o)&&null!=(g=g.abort)&&g.aborted)return await ci({identifier:N.id,status:"canceled",status_message:"Upload aborted",error:"Upload aborted"},e),{success:!1,error:"Upload aborted"};I=!0,console.log(`Upload Done: All files uploaded to ${N.id}`);const K={...Z(e),id:N.id};"none"!=x&&console.log("Completing upload - notify server");let V=null;for(let e=0;e<5;e++){var Y;await Ei(1e3*e);const n=AbortSignal.timeout(2e4+1e3*e);if(V=await fetch(k+X.upload.done,{...ee,method:"POST",headers:K,signal:n}).catch(n=>(console.error(`Failed to complete upload (${e+1} / 5)`,n.message),null)),!0===(null==(Y=V)?void 0:Y.ok))break;var Q;"none"!=x&&e<4&&console.warn(`Failed to complete upload (${(null==(Q=V)?void 0:Q.status)||"no status"}): will retry in 1 second`)}if(!V)return console.error("Failed to complete upload"),{success:!1,error:"Failed to complete upload"};if(!V.ok){if(524===V.status)return console.error("Failed to complete upload: Gateway Timeout"),{success:!1,error:"Failed to complete upload: Gateway Timeout"};{const e=await V.text();return console.error(`Failed to complete upload (${V.status}): ${e}`),{success:!1,error:"Failed to complete upload"}}}"none"!=x&&console.log("Upload complete");const ne=await V.json();return{success:!0,type:ne.type,uploadSkipped:!1,id:ne.id,view_id:ne.view_id,url:ne.url,filesUploaded:v.length,totalSize:A}}(e,n,o);return await t.finally(()=>{})}async function Fi(e){const{uploadId:n,uploadRequestPUTUrl:o,entrypointPath:t,file:i,fileName:a,fileBuffer:s,fileMd5:r,fileSize:c,fileType:l,content_encoding:p,fileIndex:u,fileNumber:d,fileCount:m,loglevel:f,args:h,options:g,experimental:v}=e;"info"===f&&console.log(`Uploading file "${i.name}" type=${l} (${c}) ${i.type} with hash ${r}`);const x={...Z(h),"Content-Type":"application/json",org:h.org,job_id:n,filesize:c.toString(),progress:(u/m*100).toFixed(0)},b={filename:a,entrypoint:t,"content-type":l,"content-md5":r,"content-encoding":p};"debug"===f&&console.debug("Requesting presigned URL with headers",x);const y=JSON.stringify(b);let w=null,_="";for(let e=0;e<5;e++){var k;if(null!=w)break;if(null!=g&&null!=(k=g.abort)&&k.aborted)throw new Error("Upload aborted");await Ei(200*e),w=await fetch(o,{...ee,method:"POST",headers:x,body:y}).then(async e=>e.ok?await e.json():(_=await e.text(),console.log(o),console.warn(`Failed to get presigned url for "${a}" "${l}" (${e.status}).\n→ Retrying...`),null)).catch(e=>(_=e.message,console.warn("Failed to get presigned url "+e.message+", retrying..."),null))}if(null==w)throw new Error(`Failed to get presigned url for "${a}" "${l}" \n${_}`);const j=w.presigned_url;var T=!1;let S=null;for(let n=0;n<5;n++){var $;if(n>0&&("none"!==f&&console.log(`Retry PUT #${n} for file ${a}`),await Ei(1e3*n)),null!=g&&null!=($=g.abort)&&$.aborted)throw new si("Upload aborted");const o={"Content-Type":l,"Content-MD5":r};v&&(o["Content-Length"]=c.toString()),p&&(o["Content-Encoding"]=p),0===n&&"none"!=f&&console.log(`Uploading file ${d}/${m}: ${a}`),"debug"===f&&console.debug("PUT with headers",o);const t=await ai.put(j,s,{...ee,withCredentials:!1,signal:null==g?void 0:g.abort,headers:o,timeout:3e5,onUploadProgress:n=>{e.onProgress(n)}}).catch(e=>(S=e.message,e instanceof si||("none"!==f&&console.error(`Failed to upload file (PUT) (${d}, ${a}) "${e.message}"`),"debug"===f&&(console.log(o,{fileSize:c}),e.response?console.debug(e.response):console.debug(e))),null));if(t){if(200!==t.status){S=`${t.statusText} (${t.status})`,console.debug(`Failed (${t.status} ${t.status}) to upload file ${i.name} to "${w.path}". Retrying...`);continue}T=!0,"info"===f&&console.log(`Uploaded file ${d}/${m} "${a}" (${l}, ${Si(c)})`);break}}var E;if(!T)throw console.error("Failed to upload file "+a),await ci({identifier:n,status:"failed",status_message:`Failed to upload file (${a}): ${null==(E=S)?void 0:E.substring(0,200)}`,error:"Failed to upload file "+a},h),new Error("Failed to upload file "+a);return!0}async function Ui(e,n,o){const t=e.baseUrl+X.jobs.request_download_url,i=await fetch(t,{...ee,method:"POST",headers:{...Z(e),job_id:n},body:JSON.stringify(o)}).catch(e=>(console.error(e),null));return i&&i.ok?await i.text():(console.error("Failed to get presigned download URL",null==i?void 0:i.status),null)}async function Ii(e,n={}){const o=new URL(e.baseUrl+X.content.list);n.content_type&&o.searchParams.set("content_type",n.content_type),n.category&&o.searchParams.set("category",n.category),n.visibility&&o.searchParams.set("visibility",n.visibility),n.search&&o.searchParams.set("search",n.search),n.tags&&o.searchParams.set("tags",n.tags),n.limit&&o.searchParams.set("limit",n.limit),n.offset&&o.searchParams.set("offset",n.offset);const t=Z(e),i=await fetch(o,{...ee,method:"GET",headers:t});if(!i.ok){const e=await i.text();throw new Error(`Failed to list content (${i.status}): ${e}`)}return await i.json()}new Array;const qi={schema:{name:"load_needle_engine_skill",description:'Load the Needle Engine skill with coding guidelines, patterns, and reference docs. Call this before answering Needle Engine coding or technical questions. Without arguments loads the main skill file. Use the "file" parameter to load specific reference files (e.g. "references/api.md", "references/components.md"). Call without arguments first to discover available references.',inputSchema:{type:"object",properties:{file:{type:"string",description:'File to load relative to the skill root, e.g. "references/api.md". Defaults to the main skill file.'}},additionalProperties:!1,required:[]}},async execute(e){const n=(null==e?void 0:e.file)||"SKILL.md";if(n.includes("..")||n.startsWith("/"))return{error:"Invalid file path."};try{const e="https://raw.githubusercontent.com/needle-tools/ai/main/providers/claude/plugin/skills/needle-engine/"+encodeURI(n),o=new AbortController,t=setTimeout(()=>o.abort(),5e3),i=await fetch(e,{signal:o.signal,redirect:"follow"});return clearTimeout(t),i.ok?{content:await i.text()}:{error:`Could not fetch '${n}' (HTTP ${i.status})`}}catch(e){return{error:`Error fetching skill: ${e.message}`}}}},Pi=()=>"https://cloud-staging.needle.tools/account",Bi=()=>"https://cloud-staging.needle.tools/edit";function Di(e){return N(e)}const Mi=["node_modules",".git",".vscode",".vercel",".github",".idea"];function Wi(e,n,o=null,t="",i=0){if(null===o){if(i>0)throw new Error("result must be provided if level > 0. Did you forget to pass it?");o={files:[],total_size:0}}if(0===i){if(!a(n))throw new Error(`Directory or file "${n}" does not exist.`);if(s(n).isFile()){const e=_i(n,r(n));return e.path=e.name,o.files.push(e),o.entrypoint=e,o}}else if(i>20)throw new Error("Recursion depth too high. Are you sure you are providing the correct directory?");const l=c(n,{withFileTypes:!0});for(const i of l)if(0==i.isDirectory()){if("optimization"===e&&0==((p=(p=i.name).toLowerCase()).endsWith(".glb")||p.endsWith(".gltf")||p.endsWith(".vrm")||p.endsWith(".usdz")||p.endsWith(".usd")||p.endsWith(".fbx")))continue;const a=_i(t+i.name,r(n+"/"+i.name));if(o.files.push(a),o.total_size+=a.size,o.total_size>1073741824)throw new Error(`Collected filesize exceeds ${1024..toFixed(0)} MB. Are you sure you are providing the correct directory?`);if(o.files.length>1e4)throw new Error(`Too many files (${o.files.length}): The maximum filecount is 10,000.`)}var p;for(const a of l)if(a.isDirectory()){if(Mi.includes(a.name))continue;Wi(e,n+"/"+a.name,o,t+a.name+"/",i+1)}return o}const Gi=`${L(B.tmpdir())}/Needle/Cloud/logs`;F(Gi,{recursive:!0});const Hi=D.resolve(Gi,"cli.log");if(U(Hi)){const e=I(Hi),n=e.mtimeMs;if(Date.now()-n>432e5||e.size>52428800){const e=D.resolve(Gi,"cli.prev.log");q(Hi,e,n=>{n?console.error(`Failed to rename log file: ${n.message}`):console.log(`Log file renamed to ${e}`)})}}function Ji(){return Hi}async function Ki(e,n){return e=`[${(new Date).toISOString()}] ${e}`,null!=n&&n.emptyLineBefore&&(e="\n"+e),P(Hi,e+"\n",{flag:"a"}).then(()=>!0).catch(e=>(console.error(`Failed to write to log file: ${e.message}`),!1))}function Vi(e,n,o){process.env.GITHUB_ACTIONS&&(process.env.GITHUB_OUTPUT?l(process.env.GITHUB_OUTPUT,`${e}=${n}\n`):null==o||o.logger.warn("GITHUB_OUTPUT environment variable is not set. Cannot set output variables."))}async function Yi(e){var n;e.directory=v.resolve(e.directory);let{files:o,entrypoint:t}=Wi("deployment",e.directory);if(e.entrypoint&&(t=o.find(n=>n.path===e.entrypoint),!t))return void A().fail(`Entrypoint "${e.entrypoint}" not found. Please make sure you provide a valid entrypoint.`);if(!t){const e=Ri(o);if("error"in e)return Ki(`[Deployment] Error determining entrypoint: ${e.error}`),void A().fail(`Error: ${e.error}`);t=e}if(!(o.length>0&&t&&(t.name.toLowerCase().endsWith(".html")||t.name.toLowerCase().endsWith(".html.gz")||t.name.toLowerCase().endsWith(".html.br"))))return Ki("[Deployment] Deployment is not valid: No .html file found."),void A().fail("Deployment is not valid: No .html file found.");if(!t)return Ki("[Deployment] No entrypoint found. Please provide an index.html file in your project."),void A().fail("No entrypoint found. Please provide an index.html file in your project.");const i=null!=(n=e.endpoint)&&n.length?e.endpoint:"https://cloud-staging.needle.tools/api";let a=e.name;a||(a=Qi(e.directory)||void 0);let s=null==i?void 0:i.includes("localhost");const r=a?` of "${a}"`:"",c=A().start(`Begin deployment${r} ${s?"(local)":""} of ${o.length} files...`);c.spinner="earth",await Ei(50);let l=-1;Ki(`Deployment started${r} ${s?"(local)":""} of ${o.length} files...`);const p=await Li({baseUrl:i,authToken:e.token,org:e.org_id},{triggered_by:"cli",files:o,entrypoint:t,experimental:e.experimental,raw:e.raw},{name:a,type:"deployment",loglevel:e.verbose?"debug":"none",progress:e=>{if(e.fileIndex!==l){l=e.fileIndex;const n=e.totalBytes/1024/1024;c.text=`Uploading file ${e.fileIndex+1} of ${e.totalFiles} files: ${(e.uploadedBytes/1024/1024).toFixed(1)} / ${n.toFixed(1)} MB. Total progress: ${(100*e.progress01).toFixed(1)} %. Time passed: ${e.elapsedTime.toFixed(0)}sec. About ${e.estimatedTimeLeftDisplay} until complete.`}}}).catch(e=>(c.fail(e),null));if(null!=p&&!0===p.success){c.succeed(`🚀 Deployment${r} successful (${p.view_id}/${p.id})`);let n="";n=p.url?p.url:"https://cloud-staging.needle.tools/view/"+p.view_id+"/"+p.id,console.log("🔗 View the deployment at: "+n),e.open&&Di(n);try{Vi("deployment_url",n,{logger:e.logger}),Vi("edit_id",p.view_id,{logger:e.logger})}catch(n){e.logger.error("Error writing output for CI: "+n)}}else c.fail(`${null==p?void 0:p.error}`)}function Qi(e,n=0){if(n>10)return null;const o=v.join(e,"needle.config.json");if(a(o)){const n=v.join(e,"package.json");if(a(n)){var t;const e=r(n,"utf8"),o=JSON.parse(e);if(null!=(t=o.name)&&t.length)return o.name}return v.basename(e)}const i=v.dirname(e);return i===e?null:Qi(i,n+1)}async function Xi(e){if(!e.outDir)throw new Error("Output directory is required");const n=A("Downloading results...").start(),o=await async function(e){const n=await async function(e){if(!e.identifier)return null;const n={...Z(e)},o={job_id:e.identifier,fields:e.fields},t=e.baseUrl+X.jobs.query,i=await fetch(t,{...ee,method:"POST",headers:n,body:JSON.stringify(o)}).catch(e=>(console.error(e),null));if(null==i)return null;if(!i.ok)return console.error("Failed to get job",i.status,await i.text()),null;const a=await i.json().catch(e=>(console.error(e),null));return null==a?null:a.job}({baseUrl:e.baseUrl,authToken:e.authToken,org:e.org,identifier:e.identifier,fields:["results"]});if(null==n||!n.results)return{error:`Job ${e.identifier} did not produce any result files`};const o=n.results;if(!o.bucket||!o.directory)return{error:`Job ${e.identifier} has incomplete result data`};const t=[];for(const n of o.files){if((i=n.filename).endsWith("screenshot.needle.webp")||ri.test(i)||i.endsWith(".needle.log"))continue;const a=`${o.directory}/${n.filename}`,s=await Ui(e,e.identifier,{bucket:o.bucket,key:a});if(!s){console.error(`Failed to get presigned URL for: ${n.filename}`);continue}const r=await fetch(s).catch(e=>(console.error(e),null));if(!r||!r.ok){console.error(`Failed to download (${null==r?void 0:r.status} | ${null==r?void 0:r.statusText}): ${n.filename}`);continue}const c=await r.arrayBuffer().catch(e=>(console.error(e),null));if(!c)return{error:`Failed to read downloaded file: ${n.filename}`};t.push({filename:n.filename,data:c})}var i;return{files:t}}({baseUrl:e.baseUrl,authToken:e.authToken,org:e.org,identifier:e.identifier});if("error"in o)return n.fail(o.error),{error:o.error};const t=[];for(const i of o.files){n.text=`Downloading ${i.filename}`,a(e.outDir)||p(e.outDir,{recursive:!0});let s=i.filename;if(e.filename){const n=i.filename.substring(i.filename.lastIndexOf("."));if(1===o.files.length)s=e.filename.includes(".")?e.filename:e.filename+n;else{const n=i.filename.substring(i.filename.lastIndexOf(".")),o=i.filename.substring(0,i.filename.lastIndexOf("."));s=e.filename+"-"+o+n}}const r=e.outDir+"/"+s,c=r.split("/").slice(0,-1).join("/");a(c)||p(c,{recursive:!0}),e.verbose&&console.log(`Writing ${i.filename} (${(i.data.byteLength/1024).toFixed(2)} KB) to "${r}"`),u(r,Buffer.from(i.data)),t.push(r)}return n.succeed(`Downloaded ${t.length} ${1===t.length?"file":"files"}: ${t.join(", ")}`),e.verbose&&console.log("Downloaded files:\n",t),{success:!0,paths:t}}async function Zi(e){const n=new URL((e.endpoint||"https://cloud-staging.needle.tools/api")+X.get.deployments);n.searchParams.append("offset",e.offset.toString()),n.searchParams.append("limit",e.limit.toString()),e.names&&n.searchParams.append("name",e.names.map(e=>e.trim()).join(","));const o=await fetch(n,{method:"GET",headers:{...Z({authToken:e.authToken,org:e.org})}});return o.ok?await o.json():{status:o.status,error:await o.text()}}const ea=8424,na="http://localhost:8424";var oa;const ta={appId:"2stnsoa6a1b0gwc7lra55",appSecret:"seV1T6iKBKLlttjdk25I2px43ZCEHnPJ",endpoint:"https://auth.needle.tools",resources:["https://cloud-staging.needle.tools/api"],scopes:["openid","profile","email","roles","urn:logto:scope:organizations","urn:logto:scope:organization_roles","identities","custom_data","all","read","write","delete","upload","download","invite","editor"]},ia={getAccessToken:!0,fetchUserInfo:!0,resource:null==(oa=ta.resources)?void 0:oa[0],resources:ta.resources||[],scopes:ta.scopes||[]};function aa(e="default"){return null==e?`${na}/?signed-out=1`:"too-many-logins"===e?`${na}/?too-many-logins=1`:"error"===e?`${na}/?error=1`:`${na}/?signed-out=1`}var sa;function ra(){la.clear(),i.existsSync(da)&&i.rmSync(da,{recursive:!0})}const ca=process.argv.includes("--debug-auth"),la=new Map;let pa=null==(sa=ta.resources)?void 0:sa[0];if(pa)try{pa=new URL(pa).hostname}catch(e){ca&&console.error("Invalid resource URL",pa)}let ua=pa||"-";ua=ua.replace(/[^a-zA-Z0-9\.\-]/g,"");const da=`${$()}/Needle/Cloud/.auth/${ua}`,ma={accessToken:`${da}/accessToken`,refreshToken:`${da}/refreshToken`,idToken:`${da}/idToken`,signInSession:`${da}/signInSession`};function fa(e){return ma[e]||`${da}/${e}`}const ha=new class{constructor(){this.basePath=da}async setItem(e,n){ca&&console.debug("\n- SET ITEM",e,n),i.existsSync(this.basePath)||i.mkdirSync(this.basePath,{recursive:!0});const o=fa(e);o&&i.writeFileSync(o,n),la.set(e,n)}async getItem(e){ca&&console.debug("\n- GET ITEM",e);const n=la.get(e);if(void 0===n){const n=fa(e);if(n){if(i.existsSync(n)){const o=i.readFileSync(n,"utf8");return la.set(e,o),o}}else console.error(`Unknown token name: ${e}`);return null}return String(n)}async removeItem(e){ca&&console.debug("\n- REMOVE ITEM",e),la.delete(e);const n=fa(e);n&&i.existsSync(n)&&i.rmSync(n)}};let ga=null;function va(){return ga||(ga=new W(ta,{storage:ha,navigate:()=>{}})),ga}function xa(){ga=null}let ba=null;function ya(e,n){return ba?ba.then(()=>e.getContext(n),()=>e.getContext(n)):(ba=e.getContext(n).finally(()=>{ba=null}),ba)}function wa(){return ya(e=va(),ia).then(n=>{const o=n;return o.client=e,o}).catch(async e=>{const n=e instanceof Error?e.message:String(e);return"oidc.invalid_token"==e.code||"oidc.invalid_grant"==e.code?(Ki(`OIDC: ${e.code} – token refresh failed, clearing stale tokens`),ra(),ga=null,console.error("Session expired – please log in again: npx needle-cloud login")):e.code?(console.error(e.code),Ki(`OIDC: ${e.code} – ${n}`)):Ki(`OIDC: getContext failed – ${n}`),null});var e}let _a=null;function ka(e){var n;const o=null==(n=e.userInfo)?void 0:n.custom_data;if(!o)return[];const t=o.machines;return t?t.map(e=>e.name):[]}let ja=Date.now();async function Ta(e){var n;const o=Date.now();o-ja>3e4&&"client"in e&&(ja=o,await e.client.fetchUserInfo().catch(console.error));const t=null==(n=e.userInfo)?void 0:n.custom_data;if(!t)return!1;if(_a||await Sa(),!_a)return console.error("Failed to get machine id"),!0;const i=t.machines;if(!i)return!1;const a=i.some(e=>e.id===_a);return a}async function Sa(){return _a||await import("node-machine-id").then(async e=>{const n=await e.default.machineId(!1);_a=n}),_a}function $a(){return S.userInfo().username+"@"+S.hostname()}async function Ea(e,n={signout:!1}){if(e.accessToken){const t={machine_id:await Sa(),machine_name:$a(),platform:S.platform(),arch:S.arch()},i=await fetch("https://cloud-staging.needle.tools/api"+X.account.post_machine,{method:"POST",headers:{Authorization:"Bearer "+e.accessToken,"Content-Type":"application/json"},body:JSON.stringify(t)}).catch(e=>(console.error(`Failed to validate login: ${e.message} - Make sure https://cloud-staging.needle.tools/api is reachable`),Ki(`Failed to validate login with error "${e.message}" - Make sure https://cloud-staging.needle.tools/api is reachable.`),{status:500,error:"Failed to validate login at 'https://cloud-staging.needle.tools/api' - make sure this URL is reachable."}));if(!i)return!1;if("error"in i)return i;let a=!0;if(403===i.status){const e=await i.text();if(e.trimStart().startsWith("{")){const n=JSON.parse(e);n.logins&&(a=!1,Ki("Too many logins from different machines"),A().fail("You have reached the maximum number of allowed logins\n"),A().warn(`Please logout from one of the following machines:\n- ${n.logins.join("\n- ")}\n`))}}var o;return!!a||(n.signout&&(ra(),"client"in e&&(null==(o=e.client)||o.signOut(aa("too-many-logins")))),!1)}return!0}const Ca=e=>{const n=G();return n.use("/:action",async(n,o,t)=>{const{action:i}=n.params,a=(s={navigate:e=>{o.redirect(e)}},new W(ta,{storage:ha,navigate:e=>{if(null==s.navigate)throw new Error("Can not navigate");s.navigate(e)}}));var s;switch(i){case"sign-in":e.invalid_login=!1,e.invalid_login_type=null,e.error=void 0,Ki("Sign in..."),await a.clearAllTokens(),xa(),await a.signIn(`${na}/auth-callback`);break;case"sign-out":{var r,c;const n=await wa(),o=(null==n||null==(r=n.userInfo)?void 0:r.sub)||(null==n||null==(c=n.claims)?void 0:c.sub),t=null==n?void 0:n.accessToken;Ki(`Sign out... (${o})`),o&&t&&await async function(e){return!e.accessToken||import("node-machine-id").then(async n=>{const o=await Sa();return _a=o,await fetch("https://cloud-staging.needle.tools/api"+X.account.post_machine,{method:"POST",headers:{Authorization:"Bearer "+e.accessToken,"Content-Type":"application/json"},body:JSON.stringify({action:"logout",machine_id:o,machine_name:$a()})}).catch(e=>{Ki(`Failed to validate logout: ${e.message} - Make sure https://cloud-staging.needle.tools/api is reachable`),console.error(`Failed to validate logout: ${e.message} - Make sure https://cloud-staging.needle.tools/api is reachable`)}),!0})}({userId:o,accessToken:t}).catch(e=>{console.error(e),Ki(`Failed to validate logout: ${e}`)}),e.invalid_login=!1,e.invalid_login_type=null,e.error=void 0,console.log("User signed out"+(o?`: ${o}`:"")),await a.signOut(aa()),xa();break}case"auth-callback":if(n.url){const t=await a.handleSignInCallback(`${na}${n.originalUrl}`).catch(e=>({error:e}));if(xa(),t&&"error"in t){Ki(`Error during sign in: ${t.error}`);const e=t.error instanceof Error?t.error.message:String(t.error);o.redirect(na+"?cancelled&message="+encodeURIComponent(e))}else{var l,p,u,d;const n=await wa();if(null!=n&&n.isAuthenticated){var m,f;e.invalid_login=!1,e.user_email=(null==(m=n.claims)?void 0:m.email)||(null==(f=n.userInfo)?void 0:f.email)||null,e.logged_in_machine_names=[...ka(n)];const t=await Ea(n,{signout:!0});if(!t)return e.invalid_login=!0,e.invalid_login_type="too-many-logins",o.redirect(aa("too-many-logins"));if("object"==typeof t&&"error"in t)return e.invalid_login=!0,e.invalid_login_type="error",e.error=t.error,o.redirect(aa("error"))}console.log(`User logged in: ${(null==n||null==(l=n.userInfo)?void 0:l.sub)||(null==n||null==(p=n.claims)?void 0:p.sub)}`),Ki(`User logged in: ${(null==n||null==(u=n.userInfo)?void 0:u.sub)||(null==n||null==(d=n.claims)?void 0:d.sub)}`),o.redirect(na)}}break;default:t()}}),n};function Oa(e){var n,o,t,i;if(!e)return"";let a=(null==(n=e.claims)?void 0:n.name)||(null==(o=e.userInfo)?void 0:o.name)||(null==(t=e.claims)?void 0:t.username)||"";var s,r;return(!a||a.length<=0)&&null!=(i=e.claims)&&i.email?(r=null==(s=e.claims)?void 0:s.email)?(r=(r=(r=(r=r.split("@")[0]).replace(/[^a-zA-Z0-9]/g," ")).replace(/\s+/g," ")).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),r):r:a}async function Ra(e,n=null){var o,t;if(!e)return{status:500,error:"User is not provided"};if(!e.isAuthenticated)return{status:403,error:"User is not authenticated"};const i=(null==(o=e.claims)?void 0:o.sub)||(null==(t=e.userInfo)?void 0:t.sub);n===i&&(n=null);let a=null;if(null==n)a=e.accessToken;else if(null!=n){var s;let o=null==e||null==(s=e.userInfo)||null==(s=s.organization_data)?void 0:s.find(e=>e.id===n);if(!o){var r;const t=n.toLowerCase();o=null==e||null==(r=e.userInfo)||null==(r=r.organization_data)?void 0:r.find(e=>e.name.toLowerCase()===t)}if(!o)return{status:403,error:`User is not part of team "${n}"`};n=o.id,a=await e.client.getOrganizationToken(o.id).catch(e=>{var t;return console.error(`Error getting organization token for "${null==(t=o)?void 0:t.name}" (${n}): ${e.message}`),null})}return a?{authToken:a,org:n}:{status:403,error:"No access token found"}}const za=function(){return async(e,n,o)=>{const t=await wa();Object.defineProperty(e,"user",{enumerable:!0,get:()=>t}),o()}},Na=process.env.NEEDLE_SEARCH_ENDPOINT||"https://search.needle.tools",Aa=process.env.NEEDLE_SEARCH_API_KEY||"da5737c00d6822c32a1b9e3b5dab094bfc17e205aef2f7f3e1a0fd4ebc77b79f",La=[{name:"needle_cloud_me",description:"Get current Needle Cloud user information",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},{name:"needle_search",description:"Search Needle Engine documentation, forum posts, and community discussions. Returns relevant content ranked by semantic similarity. Use this to find information about Needle Engine features, APIs, components, workflows, and troubleshooting.\n\nIMPORTANT: If search results seem irrelevant or low-quality (scores below 0.6, or results don't match the topic), retry with different search terms — up to 3 total attempts. Try varying your query: use specific class/method names, try shorter keyword-based queries, or rephrase the question. Do NOT guess or fabricate answers based on poor search results.",inputSchema:{type:"object",properties:{query:{type:"string",description:'What to search for, e.g. "how to add physics components" or "WebXR hand tracking" or "deploy to vercel"'},limit:{type:"number",description:"Maximum number of results to return (1-20, default 5)"}},additionalProperties:!1,required:["query"]}}],Fa={needle_cloud_me:async function(e){try{const e=await wa(),n=null==e?void 0:e.userInfo;return n?JSON.stringify({id:n.sub,name:n.name||n.preferred_username,email:n.email,profile_picture:n.picture}):"No user is currently logged in."}catch(e){return"Error retrieving user: "+(e instanceof Error?e.message:String(e))}},needle_search:async function(n){const o=n.query;if(!o||"string"!=typeof o)return{content:[{type:"text",text:"Error: query parameter is required."}]};const t=Math.min(Math.max(Number(n.limit)||5,1),20),i=`${Na}/api/semantic-search?q=${encodeURIComponent(o)}&limit=${t}`,a={Accept:"application/json"};Aa&&(a.Authorization=`Bearer ${Aa}`);try{const n=await e(i,{headers:a,signal:AbortSignal.timeout(15e3)});if(!n.ok){const e=await n.text().catch(()=>"");return{content:[{type:"text",text:`Search API error (${n.status}): ${e}`}]}}const t=await n.json();if(!t.results||0===t.results.length)return{content:[{type:"text",text:`No results found for: "${o}"`}]};const s=t.results.map((e,n)=>`## [${n+1}] ${e.title} (score: ${e.score})\nSource: ${e.source}${e.url?` — ${e.url}`:""}\n\n`+e.content+(e.truncated?`\n\n> Content truncated (${e.content.length} of ${e.contentLength} chars shown).${e.url?` Full content: ${e.url}`:""}`:"")).join("\n\n---\n\n");return{content:[{type:"text",text:`Found ${t.results.length} results for "${o}" (${t.durationMs}ms):\n\n${s}`}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e instanceof Error?e.message:String(e)}`}]}}}},Ua=new Map;function Ia(e,n){const o=La.findIndex(n=>n.name===e);-1!==o&&(La.splice(o,1),delete Fa[e],n())}function qa(e,n,o,t){const i=La.findIndex(n=>n.name===e.name);if(-1!==i&&La.splice(i,1),La.push(e),Fa[e.name]=n,Pa.delete(e.name),null!=o&&o.source){const n=Ua.get(o.source)||new Set;n.add(e.name),Ua.set(o.source,n)}t()}const Pa=new Map;async function Ba(e,n){const o=Fa[e];if(!o){const n=Pa.get(e);if(n)return{isError:!0,content:[{type:"text",text:`This tool is currently unavailable because "${n}" disconnected. Please reconnect (e.g. reopen the browser tab) and try again. You should also call tools/list to refresh your available tools.`}]};throw new Error(`Tool "${e}" is not registered.`)}const t=await o(n);if("string"==typeof t)return{content:[{type:"text",text:t}]};if("object"==typeof t)return Array.isArray(t.content)?t:{content:[{type:"text",text:JSON.stringify(t)}]};throw new Error(`Invalid tool result type for tool "${e}".`)}let Da=null;function Ma(){if(Da)return Da;{const e=Ha();return Da=e,e}}const Wa="projects.json";function Ga(){const e=process.env.HOME||process.env.USERPROFILE||process.cwd(),n=b(e,".needle");return a(n)||p(n,{recursive:!0}),b(n,Wa)}function Ha(){const e=Ga();if(!a(e))return{entries:[]};const n=r(e,"utf-8");try{const e=JSON.parse(n);return Da=e,e}catch(e){return console.error("Failed to parse project info file:",e),{entries:[]}}}function Ja(e={}){qa({name:"get_editor_logpath",description:"Get the filepath to the editor log file (this may be Unity or Blender)",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},o=Ma();if(o){const e=null==o?void 0:o.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];if(null!=e&&e.log_location)n.content.push({type:"text",text:e.log_location});else{let o="No recent project with known log location known.";e&&(o+=" Recent project is "+(null==e?void 0:e.project_location)),n.content.push({type:"text",text:o})}}return n},{source:"cli"},()=>{}),qa({name:"get_editor_project_path",description:"Get the filepath to the currently opened project in the editor (this may be Unity or Blender)",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},o=Ma();if(o){const e=null==o?void 0:o.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];n.content.push(null!=e&&e.project_location?{type:"text",text:e.project_location}:{type:"text",text:"No recent project with known project location known."})}return n},{source:"cli"},()=>{}),qa({name:"get_editor_scene_path",description:"Get the filepath to the currently opened scene in the editor (Unity or Blender). Use this to find out which scene the user is working on.",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},o=Ma();if(o){const e=null==o?void 0:o.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];n.content.push(null!=e&&e.scene_location?{type:"text",text:e.scene_location}:{type:"text",text:"No recent project with known scene location known."})}return n},{source:"cli"},()=>{}),qa({name:"get_web_project_path",description:"Get the filepath to the web project directory (the Needle Engine web frontend project).",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},o=Ma();if(o){const e=null==o?void 0:o.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];n.content.push(null!=e&&e.web_location?{type:"text",text:e.web_location}:{type:"text",text:"No recent project with known web project location known."})}return n},{source:"cli"},()=>{}),qa({name:"local_read_file",description:"Read a file from the user's local project (editor project or web project). The path must be relative to the project root or an absolute path inside the project. Returns the file contents (or a portion if offset/limit are specified). Use 'filter' to search for specific terms within the file.",inputSchema:{type:"object",properties:{path:{type:"string",description:"File path (relative to project root, or absolute within the project)"},offset:{type:"number",description:"Line number to start reading from (1-based, default: 1). In filter mode: number of matches to skip."},limit:{type:"number",description:"Maximum number of lines to return (default: 200, max: 1000). In filter mode: max matches to return."},filter:{type:"string",description:"Search term to grep for in the file (case-insensitive). Returns matching lines with line numbers instead of sequential content."}},additionalProperties:!1,required:["path"]}},async e=>{const n=Qa(e.path);if(!n)return{content:[{type:"text",text:"Error: path is outside the project directory."}]};try{const o=s(n.resolved).mtime.toISOString(),t=r(n.resolved,"utf-8").split("\n");if(e.filter){const i=e.filter.toLowerCase(),a=[];for(let e=0;e<t.length;e++)t[e].toLowerCase().includes(i)&&a.push(`${e+1}: ${t[e]}`);const s=a.length,r=Math.max(0,e.offset||0),c=Math.min(Math.max(e.limit||200,1),1e3),l=a.slice(r,r+c);return{content:[{type:"text",text:`File: ${n.resolved} (modified: ${o}) — filter="${e.filter}" → ${s} matches (showing ${r+1}-${r+l.length}) in ${t.length} lines\n`+l.join("\n")}]}}const i=Math.max(1,e.offset||1),a=Math.min(e.limit||200,1e3),c=t.slice(i-1,i-1+a),l=c.map((e,n)=>`${i+n}: ${e}`).join("\n");return{content:[{type:"text",text:`File: ${n.resolved} (${t.length} lines, modified: ${o}, showing ${i}-${i+c.length-1})\n`+l}]}}catch(e){return{content:[{type:"text",text:`Error reading file: ${e.message}`}]}}},{source:"cli"},()=>{}),qa({name:"local_grep",description:"Search for a pattern in the user's local project files (editor project and web project) using grep. Returns matching lines with file paths and line numbers.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Search pattern (regular expression)"},glob:{type:"string",description:"File glob filter, e.g. '*.ts' or '*.cs' (optional)"},max_results:{type:"number",description:"Maximum number of matching lines to return (default: 50)"}},additionalProperties:!1,required:["pattern"]}},async e=>{const n=Ya();if(0===n.length)return{content:[{type:"text",text:"Error: no active project found."}]};const o=Math.min(e.max_results||50,200),t=[];for(const i of n)try{const n=`grep -rn ${e.glob?`--include="${e.glob}"`:""} --max-count=${o} -E ${JSON.stringify(e.pattern)} ${JSON.stringify(i)} 2>/dev/null || true`,a=J(n,{encoding:"utf-8",maxBuffer:1048576,timeout:1e4});if(a.trim()){const e=a.trim().split("\n").map(e=>e.startsWith(i)?e.substring(i.length+1):e);t.push(...e)}}catch{}if(0===t.length)return{content:[{type:"text",text:`No matches found for pattern: ${e.pattern}`}]};const i=t.slice(0,o);return{content:[{type:"text",text:`Found ${t.length} matches${t.length>o?` (showing first ${o})`:""}:\n`+i.join("\n")}]}},{source:"cli"},()=>{}),qa({name:"local_list_files",description:"List files in the user's local project directories matching an optional glob pattern. By default searches both the editor project (Unity/Blender) and the web project. Use the 'project' parameter to target a specific one. Results are prefixed with <web_project>/..., <unity>/..., or <blender>/... so you know which root each file belongs to.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Subdirectory to list (relative to the selected project root, default: root)"},pattern:{type:"string",description:"Glob pattern to filter files, e.g. '*.ts' or '*.glb'. Supports multiple patterns separated by '|', e.g. '*.gltf|*.glb' (optional)"},recursive:{type:"boolean",description:"Whether to list files recursively (default: false)"},project:{type:"string",enum:["web","editor"],description:"Which project root to search: 'web' for the Needle Engine web project (use this for exported assets, source files, node_modules), 'editor' for the Unity/Blender project. Omit to search both."}},additionalProperties:!1,required:[]}},async e=>{const n=Ka();if(!n)return{content:[{type:"text",text:"Error: no active project found."}]};const o="blender"===n.editor?"<blender>":"unity"===n.editor?"<unity>":"<editor_project>",t=[];if(e.project&&"editor"!==e.project||!n.project_location||t.push({root:x(n.project_location),label:o}),e.project&&"web"!==e.project||!n.web_location||t.push({root:x(n.web_location),label:"<web_project>"}),0===t.length)return{content:[{type:"text",text:"Error: no active project found."}]};const i=[];for(const{root:n,label:o}of t){const t=e.path?Va(e.path,n):n;if(t)try{var a;const s=Za(t,n,null!=(a=e.recursive)&&a,e.pattern,0);i.push(...s.map(e=>({file:e,root:n,label:o})))}catch{}}if(0===i.length)return{content:[{type:"text",text:"No files found."}]};const s=i.slice(0,500).map(e=>`${e.label}/${y(e.root,e.file)}`);return{content:[{type:"text",text:`Found ${i.length} files${i.length>500?" (showing first 500)":""}:\n`+s.join("\n")}]}},{source:"cli"},()=>{}),qa({name:"local_read_editor_log",description:"Read or search the Unity or Blender editor log file. By default reads the last N lines. Use the 'filter' parameter to search for specific terms (e.g. error messages, warnings, component names) across the entire log.",inputSchema:{type:"object",properties:{lines:{type:"number",description:"Number of lines to read from the end of the log (default: 100, max: 500). Ignored when filter is set."},filter:{type:"string",description:"Search term to grep for in the log (case-insensitive). Returns all matching lines from the entire log instead of just the tail."},offset:{type:"number",description:"Number of matching results to skip from the start (default: 0). Only used with filter."},limit:{type:"number",description:"Maximum number of matching results to return (default: 200, max: 500). Only used with filter."}},additionalProperties:!1,required:[]}},async e=>{const n=Ka();var o;if(null==n||!n.log_location)return Ki(`read_editor_log: no editor log file known (project: ${null!=(o=null==n?void 0:n.project_location)?o:"none"})`),{content:[{type:"text",text:"Error: no editor log file known. Is a Unity or Blender project open?"}]};try{const o=r(n.log_location,"utf-8").split("\n");let t,i;if(e.filter){const n=e.filter.toLowerCase();t=[];for(let e=0;e<o.length;e++)o[e].toLowerCase().includes(n)&&t.push(`L${e+1}: ${o[e]}`);const a=t.length,s=Math.max(0,e.offset||0),r=Math.min(Math.max(e.limit||200,1),500);t=t.slice(s,s+r),i=`filter="${e.filter}" → ${a} matches (showing ${s+1}-${s+t.length}) in ${o.length} total lines`}else{const n=Math.min(Math.max(e.lines||100,1),500);t=o.slice(-n),i=`last ${n} of ${o.length} lines`}const a="unity"===n.editor?function(e){const n=[],o=new Map;let t=!1,i=0;for(const a of e){if(/^\s+at\s/.test(a)||/^\s*(UnityEngine\.|System\.|Unity\.)/.test(a)||/^\s+\w+[\w.<>]+\s*\(/.test(a)){t||(t=!0,i=0),i++,i<=3?n.push(a):4===i&&n.push(" ... (stack trace truncated)");continue}if(t=!1,i=0,!a.trim())continue;const e=o.get(a)||0;if(o.set(a,e+1),0===e)n.push(a);else if(1===e)n.push(` [repeated ${e+1}x] ${a}`);else{const o=n.length-1;o>=0&&n[o].startsWith(" [repeated")&&(n[o]=` [repeated ${e+1}x] ${a}`)}}return n}(t):t,s=5e4;let c=a.join("\n"),l="";if(c.length>s){c=c.substring(c.length-s);const e=c.indexOf("\n");e>0&&(c=c.substring(e+1)),l=" (output truncated to last ~50KB)"}return{content:[{type:"text",text:`Editor log: ${n.log_location} (${i}, ${a.length} after processing, editor: ${n.editor})${l}:\n`+c}]}}catch(e){return{content:[{type:"text",text:`Error reading log: ${e.message}`}]}}},{source:"cli"},()=>{}),qa({name:"local_read_gltf",description:"Read and summarize a glTF or GLB file from the user's local project. Without a query, returns a structured summary including nodes, meshes, materials, animations, extensions, and compression/optimization hints. Use 'query' to drill into specific parts using JSON pointer paths. Use '*' as a wildcard for array indices or object keys. For GLB files, extracts the JSON chunk and skips binary data.",inputSchema:{type:"object",properties:{path:{type:"string",description:"File path to a .gltf or .glb file (relative to project root, or absolute within the project)"},query:{type:"string",description:"JSON pointer path to extract a specific part of the glTF, e.g. '/nodes/0', '/materials', '/extensions/NEEDLE_progressive', '/materials/*/extensions'. Use '*' as a wildcard for array indices or object keys."}},additionalProperties:!1,required:["path"]}},async e=>{const n=Qa(e.path);if(!n)return{content:[{type:"text",text:"Error: path is outside the project directory."}]};if(!a(n.resolved))return{content:[{type:"text",text:`Error: file not found: ${n.resolved}`}]};try{const o=function(e){const n=e.toLowerCase();if(n.endsWith(".gltf")){const n=r(e,"utf-8");return JSON.parse(n)}if(n.endsWith(".glb")){const n=r(e);if(n.length<20)return null;if(1179937895!==n.readUInt32LE(0))return null;const o=n.readUInt32LE(12);if(1313821514!==n.readUInt32LE(16))return null;const t=n.toString("utf-8",20,20+o);return JSON.parse(t)}return null}(n.resolved);if(!o)return{content:[{type:"text",text:"Error: could not parse glTF/GLB file."}]};const t=5e4;if(e.query){const i=Xa(o,e.query.replace(/^\//,"").split("/"));if(void 0===i)return{content:[{type:"text",text:`No data found at pointer: ${e.query}`}]};let a=JSON.stringify(i),s=!1;return a.length>t&&(a=a.substring(0,t),s=!0),{content:[{type:"text",text:`${e.query} in ${n.resolved}`+(s?` (truncated to ${t} chars)`:"")+"\n"+a}]}}let i=function(e,n){var o,t,i,a,s,r,c,l,p,u,d,m,f;const h=[`glTF: ${n}`];if(e.asset){const n=[];e.asset.version&&n.push(`v${e.asset.version}`),e.asset.generator&&n.push(e.asset.generator),h.push(`Asset: ${n.join(", ")}`)}if(null!=(o=e.extensionsUsed)&&o.length&&h.push(`Extensions used: ${e.extensionsUsed.join(", ")}`),null!=(t=e.extensionsRequired)&&t.length&&h.push(`Extensions required: ${e.extensionsRequired.join(", ")}`),null!=(i=e.scenes)&&i.length&&h.push(`Scenes: ${e.scenes.length}${void 0!==e.scene?` (default: ${e.scene})`:""}`),null!=(a=e.nodes)&&a.length){var g,v,x;h.push(`\nNodes (${e.nodes.length}):`);const n=null!=(g=null==(v=e.scenes)||null==(v=v[null!=(x=e.scene)?x:0])?void 0:v.nodes)?g:[],o=new Set,t=(n,i)=>{if(i>6||o.has(n))return;o.add(n);const a=e.nodes[n];if(!a)return;const s=" ".repeat(i),r=[];if(void 0!==a.mesh&&r.push(`mesh:${a.mesh}`),void 0!==a.camera&&r.push(`camera:${a.camera}`),void 0!==a.skin&&r.push(`skin:${a.skin}`),a.extensions&&r.push(`ext:[${Object.keys(a.extensions).join(",")}]`),h.push(`${s}- ${a.name||`node_${n}`}${r.length?` (${r.join(", ")})`:""}`),a.children)for(const e of a.children)t(e,i+1)};for(const e of n)t(e,1);o.size<e.nodes.length&&o.size>0&&h.push(` ... and ${e.nodes.length-o.size} more nodes`)}if(null!=(s=e.meshes)&&s.length){h.push(`\nMeshes (${e.meshes.length}):`);for(const n of e.meshes.slice(0,30)){var b,y;const e=null!=(b=null==(y=n.primitives)?void 0:y.length)?b:0;h.push(` - ${n.name||"(unnamed)"} (${e} primitive${1!==e?"s":""})`)}e.meshes.length>30&&h.push(` ... and ${e.meshes.length-30} more`)}if(null!=(r=e.materials)&&r.length){h.push(`\nMaterials (${e.materials.length}):`);for(const n of e.materials.slice(0,30)){const e=n.name||"(unnamed)",o=[];n.pbrMetallicRoughness&&o.push("PBR"),n.alphaMode&&"OPAQUE"!==n.alphaMode&&o.push(n.alphaMode),n.doubleSided&&o.push("doubleSided"),n.extensions&&o.push(`ext:[${Object.keys(n.extensions).join(",")}]`),h.push(` - ${e}${o.length?` (${o.join(", ")})`:""}`)}e.materials.length>30&&h.push(` ... and ${e.materials.length-30} more`)}if(null!=(c=e.textures)&&c.length&&h.push(`Textures: ${e.textures.length}`),null!=(l=e.images)&&l.length&&h.push(`Images: ${e.images.length}`),null!=(p=e.animations)&&p.length){h.push(`\nAnimations (${e.animations.length}):`);for(const n of e.animations.slice(0,20)){var w,_;const e=null!=(w=null==(_=n.channels)?void 0:_.length)?w:0;h.push(` - ${n.name||"(unnamed)"} (${e} channel${1!==e?"s":""})`)}e.animations.length>20&&h.push(` ... and ${e.animations.length-20} more`)}if(null!=(u=e.skins)&&u.length){h.push(`\nSkins (${e.skins.length}):`);for(const n of e.skins.slice(0,10)){var k,j;h.push(` - ${n.name||"(unnamed)"} (${null!=(k=null==(j=n.joints)?void 0:j.length)?k:0} joints)`)}}if(null!=(d=e.cameras)&&d.length){h.push(`\nCameras (${e.cameras.length}):`);for(const n of e.cameras)h.push(` - ${n.name||"(unnamed)"} (${n.type})`)}if(null!=(m=e.buffers)&&m.length){const n=e.buffers.reduce((e,n)=>e+(n.byteLength||0),0);h.push(`\nBuffers: ${e.buffers.length} (${(n/1024/1024).toFixed(1)} MB total)`)}return null!=(f=e.accessors)&&f.length&&h.push(`Accessors: ${e.accessors.length}`),h.join("\n")}(o,n.resolved);return i.length>t&&(i=i.substring(0,t)+"\n... (truncated)"),{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Error reading glTF: ${e.message}`}]}}},{source:"cli"},()=>{}),qa(qi.schema,async e=>{const n=await qi.execute(e);return"error"in n?{content:[{type:"text",text:n.error}]}:{content:[{type:"text",text:n.content}]}},{source:"cli"},()=>{}),null!=e&&e.logToolCount&&(Ki(`Registered ${La.length} CLI tools: ${La.map(e=>e.name).join(", ")}`),console.log(`[MCP] ${La.length} CLI tools registered!`))}function Ka(){var e;const n=Ma();return null!=n&&null!=(e=n.entries)&&e.length?n.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0]:null}function Va(e,n){const o=x(n,e),t=x(n);return o.startsWith(t+"/")||o===t?o:null}function Ya(){const e=Ka();if(!e)return[];const n=[];return e.project_location&&n.push(x(e.project_location)),e.web_location&&n.push(x(e.web_location)),n}function Qa(e){const n=Ya();for(const o of n){const n=Va(e,o);if(n&&a(n))return{resolved:n,root:o}}for(const o of n){const n=Va(e,o);if(n)return{resolved:n,root:o}}const o=x(e);for(const e of n)if(o.startsWith(e+"/")||o===e)return{resolved:o,root:e};return null}function Xa(e,n){if(0===n.length||null==e)return e;const[o,...t]=n;if("*"!==o)return Xa(e[/^\d+$/.test(o)?Number(o):o],t);if(Array.isArray(e)){const n=e.map(e=>Xa(e,t)).filter(e=>void 0!==e);return n.length>0?n:void 0}if("object"==typeof e){const n={};for(const o of Object.keys(e)){const i=Xa(e[o],t);void 0!==i&&(n[o]=i)}return Object.keys(n).length>0?n:void 0}}function Za(e,n,o,t,i){if(i>10)return[];const a=[],s=c(e,{withFileTypes:!0}),r=[".needle",".vite","@needle-tools"],l="node_modules"===(e.split("/").pop()||e.split("\\").pop());for(const c of s){if(l){if(!r.includes(c.name))continue}else{if("Library"===c.name)continue;if(c.name.startsWith(".")||"node_modules"===c.name){if(!o)continue;if(c.name.startsWith("."))continue}}const s=b(e,c.name);if(c.isDirectory())o&&a.push(...Za(s,n,!0,t,i+1));else{if(t&&!t.split("|").map(e=>(e=e.trim()).startsWith(".")&&!e.startsWith("*.")?"*"+e:e).filter(Boolean).some(e=>K(c.name,e,{nocase:!0})))continue;a.push(s)}}return a}const es=`${na}/mcp`,ns="2025-06-18",os={name:"Needle Cloud MCP",version:"1.0.0"};function ts(e){return{jsonrpc:"2.0",id:e,result:{protocolVersion:ns,capabilities:{tools:{listChanged:!0}},serverInfo:os}}}async function is(e,n){const o=!0===(null==n?void 0:n.proxy),{method:t,params:i,id:a}=e;if("initialize"===t)return ts(null!=a?a:0);if("ping"===t)return{jsonrpc:"2.0",id:a,result:{}};if("notifications/initialized"===t||"notifications/cancelled"===t)return null;if("tools/list"===t){try{Ja()}catch{}let e=La;if(o){const n=await async function(){try{var e,n;const o=await fetch(es,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"}),signal:AbortSignal.timeout(2e3)});return o.ok&&null!=(e=null==(n=(await o.json()).result)?void 0:n.tools)?e:[]}catch{return[]}}();if(n.length>0){const o=new Set(La.map(e=>e.name));e=[...La,...n.filter(e=>!o.has(e.name))]}}return{jsonrpc:"2.0",id:a,result:{tools:e}}}if("tools/call"===t){const e=null==i?void 0:i.name;try{Ja()}catch{}try{return{jsonrpc:"2.0",id:a,result:await Ba(e,(null==i?void 0:i.arguments)||{})}}catch(n){if(o)try{const n=await async function(e,n){const o=await fetch(es,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/call",params:{name:e,arguments:n}}),signal:AbortSignal.timeout(35e3)}),t=await o.json();if(t.error)throw new Error(t.error.message);return t.result}(e,(null==i?void 0:i.arguments)||{});return{jsonrpc:"2.0",id:a,result:n}}catch{}return{jsonrpc:"2.0",id:a,error:{code:-32603,message:`Tool execution failed: ${n.message}`}}}}return{jsonrpc:"2.0",id:null!=a?a:null,error:{code:-32601,message:`Method '${t}' not found`}}}let as=!1;const ss=G(),rs=new Set,cs=new Map;let ls=0;function ps(){const e=[];for(const[n,{connectedAt:o,userAgent:t}]of cs)e.push({id:n,connectedAt:o,userAgent:t});return e}function us(e,n,o){if((n.headers.accept||"").includes("text/event-stream")){o.setHeader("Content-Type","text/event-stream"),o.setHeader("Cache-Control","no-cache"),o.setHeader("Connection","keep-alive"),o.setHeader("Access-Control-Allow-Origin","*"),o.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id"),o.flushHeaders(),o.write(": connected\n\n");const t=n.headers["user-agent"]||"";return cs.set(e,{id:e,client:o,connectedAt:Date.now(),userAgent:t}),console.log(`[MCP] SSE client connected (ID: ${e}) ${t}. Total clients: ${cs.size}`),Ki(`MCP SSE client connected (ID: ${e}) ${t}. Total clients: ${cs.size}`),n.on("close",()=>{console.log(`[MCP] SSE client disconnected (ID: ${e}): ${t}`),Ki(`MCP SSE client disconnected (ID: ${e}): ${t}`),cs.delete(e)}),!0}return!1}const ds="\n<style>\n body {\n background:#f0f4ef; \n font-family: system-ui, sans-serif; \n line-height: 1.6em; \n padding: 20px; \n } \n h2 { \n margin-top: .5em; \n margin-bottom: 0; \n } \n a { \n color: inherit; \n } \n code { \n font-size: 1rem; \n background: #e0e4df; \n padding: 2px 4px;\n border-radius: 4px; \n outline: 1px solid #ccc;\n }\n img.logo {\n height: 2em;\n width: auto;\n vertical-align: middle;\n margin-top: -.2em;\n }\n</style>".replaceAll("\n"," ");function ms(e){if(!Array.isArray(e))return console.error("Invalid input: paths should be an array of strings."),null;for(const n of e)if(!1!==a(n))try{const e=hs(n);if(e)return e}catch(e){}}ss.get("/mcp",async(e,n)=>{if(us(ls++,e,n))return;let o=`<!DOCTYPE html>${ds}`;o+='<img class="logo" src="https://cdn.needle.tools/static/branding/logo_needle.png" alt="Needle Logo" /> <strong>Needle MCP Server</strong>',o+="\n\n",o+="The Needle MCP server is alive and running.\n\n",o+="<h2>Usage</h2>\n",o+='<a href="https://fwd.needle.tools/mcp">Open Documentation</a>\n\n',o+="<h2>Available Tools:</h2>\n";for(const e of La.sort((e,n)=>e.name.localeCompare(n.name)))o+=`• <code>${e.name}</code> – ${e.description}\n`;n.status(200).header("Content-Type","text/html; charset=utf-8").send(o.replaceAll("\n","<br/>"))}),ss.post("/mcp",async(e,n)=>{const o=e.headers.accept||"",t=e.headers["user-agent"]||"",{method:i,id:a}=e.body;console.log(`[MCP] Received request from ${t} (${i}) (ID: ${a})`),n.setHeader("Content-Type","application/json"),n.setHeader("Access-Control-Allow-Origin","*"),n.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization, Mcp-Session-Id"),n.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id");try{if("initialize"===i&&o.includes("text/event-stream")){const o=void 0!==a?a:ls++;if(us(o,e,n)){as=!0;const e=ts(o);return void n.write(`data: ${JSON.stringify(e)}\n\n`)}}const r=await is(e.body);if("initialize"===i){as=!0;const e=R();rs.add(e),n.setHeader("Mcp-Session-Id",e),console.log(`[MCP] New session created: ${e} for ${t}`),Ki(`MCP New session: ${e} for ${t}`)}if(null===r)return n.status(204).end();if(Ki(`MCP Request: ${i}`),"tools/list"===i){var s;const e=(null==(s=r.result)||null==(s=s.tools)?void 0:s.map(e=>e.name))||[];console.log(`[MCP] Sending tools/list: ${e.length} tools [${e.join(", ")}]`)}else{const e=JSON.stringify(r);console.log(`[MCP] Sending response for ${i}:`,e.length>500?e.substring(0,500)+" [...]":e)}n.json(r)}catch(e){console.error("[MCP] Error processing request:",e);const o={jsonrpc:"2.0",error:{code:-32603,message:"Internal server error",data:"development"===process.env.NODE_ENV?e.stack:void 0},id:a||null};n.json(o)}}),ss.options("/mcp",(e,n)=>{n.setHeader("Access-Control-Allow-Origin","*"),n.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS, DELETE"),n.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization, Mcp-Session-Id"),n.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id"),n.status(204).end()});const fs=new RegExp(/\[remote*\s\"(?<name>.+?)\".+?url\s*=\s*(?<url>.+?)\n/gms);function hs(e){const n=b(e,".git");if(a(n)){const e=b(n,"config");if(a(e)){const n=r(e,"utf-8"),o=[];for(;;){const e=fs.exec(n);if(!e)break;if(e.groups){const n=e.groups.url;n.length&&o.push({name:e.groups.name,url:n})}}const t=o.find(e=>"origin"===e.name)||o.find(e=>"upstream"===e.name)||o[0];if(t)return t.url}}const o=b(e,".plastic");if(a(o)){const e=b(o,"replicas.db");if(a(e)){const n=r(e,"utf-8").split("\n");for(const e of n){const n=e.split("=");if(2===n.length&&"repo"===n[0].trim()){const e=n[1].trim();if(e.length)return e}}}}const t=b(e,"..");return t===e?null:hs(t)}let gs=!1;function vs(e,n={}){gs&&process.stdout.write(JSON.stringify({jsonrpc:"2.0",method:e,params:n})+"\n")}var xs={__proto__:null,sendStdioNotification:vs,startStdio:function(){gs=!0,process.stdin.resume();const e=Q({input:process.stdin,terminal:!1});e.on("line",async e=>{const n=e.trim();if(!n)return;let o;try{o=JSON.parse(n)}catch{return void process.stdout.write(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}})+"\n")}const t=await is(o,{proxy:!0});null!==t&&process.stdout.write(JSON.stringify(t)+"\n")}),e.on("close",()=>{gs=!1,process.exit(0)})}};let bs=null;function ys(){bs&&clearTimeout(bs),bs=setTimeout(()=>{!function(e,n={}){const o=`data: ${JSON.stringify({jsonrpc:"2.0",method:e,params:n})}\n\n`;console.log(`[MCP] Sending notification to ${cs.size} clients`,e);for(const[e,{client:n}]of cs)try{n.write(o)}catch(n){console.error(`[MCP] Error sending notification to client (${e}):`,n),cs.delete(e)}}("notifications/tools/list_changed"),vs("notifications/tools/list_changed")},10)}const ws="[MCP]",_s=new Array,ks=JSON.parse(r(new URL("../package.json",import.meta.url),"utf-8"));function js(){return ks.version}const Ts=2e3,Ss=6e4,$s=25e3,Es=1e4;let Cs=null,Os=null,Rs=null,zs=null,Ns=Ts,As=!1;async function Ls(){let e=await async function(){try{var e;return null!=(e=(await ya(va(),{getAccessToken:!0,fetchUserInfo:!1,resource:ia.resource})).accessToken)?e:null}catch(e){return Ki(`Token refresh failed: ${e instanceof Error?e.message:e}`),e&&"object"==typeof e&&"oidc.invalid_grant"===e.code&&(ra(),ga=null),null}}();if(e||(e=function(){const e=fa("accessToken");if(i.existsSync(e)){const n=i.readFileSync(e,"utf8");if(n){const e=JSON.parse(n),o=null==e?void 0:e["@https://cloud-staging.needle.tools/api"];return null==o?void 0:o.token}}return null}(),e&&Ki("Cloud connection: using cached token (refresh failed)")),!e)return Ki("Cloud connection: skipped (not logged in)"),void Us();const n="https://cloud-staging.needle.tools/api".replace(/^http/,"ws")+"/v1/cli/ws?token="+encodeURIComponent(e);Ki("Cloud connection: connecting..."),Cs=new V(n),Cs.on("open",()=>{Ns=Ts,Ki("Cloud connection: established"),function(){var e,n,o,t,i;if(!Cs||Cs.readyState!==V.OPEN)return;const a=Ma(),s=null==a||null==(e=a.entries)||null==(e=e.sort((e,n)=>n.last_accessed-e.last_accessed))?void 0:e[0],r={type:"presence",editor:null!=(n=null==s?void 0:s.editor)?n:"unknown",project:null!=(o=null==s?void 0:s.project_location)?o:null,scene:null!=(t=null==s?void 0:s.scene_location)?t:null,web_project:null!=(i=null==s?void 0:s.web_location)?i:null,cli_version:js()};Cs.send(JSON.stringify(r))}(),function(){if(!Cs||Cs.readyState!==V.OPEN)return;try{Ja()}catch(e){Ki(`Cloud connection: registerServerTools failed: ${e}`)}const e=La.map(e=>e.name);Ki(`Cloud connection: sending ${e.length} tools: ${e.join(", ")}`),Cs.send(JSON.stringify({type:"tools",tools:La.map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema}))}))}(),Fs(),Rs=setInterval(()=>{Cs&&Cs.readyState===V.OPEN&&(Cs.ping(),zs=setTimeout(()=>{Ki("Cloud connection: pong timeout, terminating"),Cs&&Cs.terminate()},Es))},$s)}),Cs.on("pong",()=>{zs&&(clearTimeout(zs),zs=null)}),Cs.on("message",e=>{try{const o=JSON.parse(e.toString());var n;"execute_tool"===o.type&&o.requestId&&o.toolName&&async function(e,n,o){Ki(`Cloud tool request: ${n}(${Object.keys(o).length>0?" "+Object.entries(o).map(([e,n])=>`${e}=${JSON.stringify(n)}`).join(", "):""}) [${e}]`);const t=Date.now();try{var i,a;const s=await Ba(n,o);Ki(`Cloud tool result: ${n} → ${null!=(i=null==s||null==(a=s.content)?void 0:a.reduce((e,n)=>{var o;return e+((null==(o=n.text)?void 0:o.length)||0)},0))?i:0} chars in ${Date.now()-t}ms [${e}]`),Cs&&Cs.readyState===V.OPEN&&Cs.send(JSON.stringify({type:"tool_result",requestId:e,result:s}))}catch(o){const i=o instanceof Error?o.message:String(o);Ki(`Cloud tool error: ${n} → ${i} in ${Date.now()-t}ms [${e}]`),Cs&&Cs.readyState===V.OPEN&&Cs.send(JSON.stringify({type:"tool_result",requestId:e,error:i}))}}(o.requestId,o.toolName,null!=(n=o.args)?n:{})}catch{}}),Cs.on("close",(e,n)=>{const o=(null==n?void 0:n.toString())||"";Ki(`Cloud connection: closed (code=${e}${o?" "+o:""})`),Fs(),Cs=null,As||Us()}),Cs.on("error",e=>{Ki(`Cloud connection: error - ${e.message}`)})}function Fs(){Rs&&(clearInterval(Rs),Rs=null),zs&&(clearTimeout(zs),zs=null)}function Us(){As||Os||(Ki(`Cloud connection: reconnecting in ${Ns/1e3}s`),Os=setTimeout(()=>{Os=null,Ls()},Ns),Ns=Math.min(2*Ns,Ss))}const{json:Is}=H;async function qs(n={restart:!1}){const o=await e(na).catch(e=>({ok:!1})),t="/sign-in",i="/api/authenticated",s="/api/projects",r={baseUrl:na,port:ea,isHost:!1,auth_endpoints:{"sign-in":`${na}${t}`,"sign-out":`${na}/sign-out`,"is-authenticated":`${na}${i}`}};let c=o.ok;if(c&&!0===(null==n?void 0:n.restart)){Ki("Restarting auth server...");const p=`${na}/restart`;n.ora&&(n.ora.text="Sending restart request to server");const m=new AbortController;setTimeout(()=>m.abort(),1e4);const f=await e(p,{method:"post",signal:m.signal}).catch(e=>({ok:!1,status:400,error:e}));if(f.ok)return await Ei(300),qs({restart:!1});console.error("Failed to restart server",f.status),Ki(`Failed to restart server: ${f.status}`)}if(!c){process.title="Needle CLI server";const h=await import("express").catch(e=>{throw console.error("Error starting the auth server (express not found)",e),Ki("Error starting the auth server"),new Error("Failed to load express module")});if(!h)throw Ki("Error loading auth server module"),new Error("Failed to load express module");Ki(`Starting Needle CLI server ${js()}... (Using api at https://cloud-staging.needle.tools/api)`,{emptyLineBefore:!0}),r.isHost=!0;let g=null;const v={invalid_login:!1,invalid_login_type:null,user_email:null,logged_in_machine_names:[]};let x=h.default();x.use(Is({limit:"10mb"})),x.use(Ca(v)),n.ora?(n.ora.start("Starting MCP server..."),n.ora.succeed(`MCP server available at ${na}/mcp`)):console.log(`\nMCP server available at ${na}/mcp .`),x.use(ss);const b="\n <title>Needle Cloud</title>\n <link rel=\"icon\" href=\"https://cdn.needle.tools/static/branding/favicon.ico\" type=\"image/x-icon\">\n <style>\n body { \n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n font-size: 18px;\n padding: 2rem;\n background: #f0f4ef;\n }\n a {\n color: rgb(120, 76, 223);\n }\n .main_panel {\n display: flex;\n flex-direction: column;\n gap: .5rem;\n justify-content: flex-start;\n align-items: center;\n width: min(80ch, 90vw);\n margin: 0 auto;\n\n height: 100%;\n\n & img.logo {\n height: 3rem;\n margin-bottom: 1rem;\n }\n }\n .secondary {\n color: rgba(0, 0, 0, .5);\n }\n .error-details {\n font-size: 12px;\n color: rgba(0, 0, 0, .5);\n }\n .error-details a {\n color: inherit;\n }\n </style>",y=`<div class="main_panel"><img class="logo" src="https://cdn.needle.tools/static/branding/logo_needle.png" alt="Needle Logo" title="Needle Logo (${js()})"/>`,w="</div>";let _="";x.get("/",za(),async(e,n)=>{var o;if(n.set({"Content-Type":"text/html; charset=utf-8"}),n.write(b),null!=e.query.cancelled)return n.end("Login cancelled. You can close this window now."),void Ki("Login cancelled by user");if(null!=e.query["too-many-logins"]&&v.logged_in_machine_names.length){var i;const e=Pi();let o="<div>";return o+="<strong>You have reached the maximum number of allowed device logins!</strong><br/><br/>",o+=(null==(i=v.logged_in_machine_names)?void 0:i.map(e=>`• ${e}`).join("<br/>"))+"<br/><br/>",o+=`1) Go to <a href="${e}#device-logins" target="_blank">Needle Cloud device logins</a> and logout one of your devices.<br/>\n 2) Then <a href="${t}">sign-in on this machine</a>.<br/><br/>`,o+="</div>",n.status(406),n.end(y+o+w),void Ki(`Login failed: Too many logins from different machines: [${v.logged_in_machine_names.join(", ")}]`)}if(null!=e.query.error)return n.status(500),void n.end(`${y}\n <div>\n <strong>An error occurred</strong>: Please make sure <i>https://cloud-staging.needle.tools/api</i> and <i>https://auth.needle.tools</i> are reachable and not blocked by your firewall or network. After that please try to <a href="${t}">sign-in</a> again.\n <br/><span class="error-details">If the issue persists, please contact support and include the log file: <a title="Link to local log file. Please copy this url and open it in your file explorer or terminal" href="file://${Ji()}" target="_blank">${Ji()}</a></span>\n </div>\n ${w}`);if(null!=(o=e.user)&&o.isAuthenticated){var a;if(!await Ta(e.user)){if(v.invalid_login=!0,v.logged_in_machine_names=[...ka(e.user)],ra(),Ki("Cleared stored auth data"),"client"in e.user){const n=e.user;await n.client.clearAccessToken(),await n.client.clearAllTokens(),Ki("Cleared all tokens")}return n.end(`${y}<div>You have been logged out from this machine. You can close this window now or try to <a href="${t}">sign in</a> again</div>${w}`)}v.invalid_login=!1,n.end(`${y}\n <div>\n Hi ${Oa(e.user)} — you logged in successfully. You can close this window now.\n </div>\n ${w}`);const o=`Logged in successfully as ${Oa(e.user)} (${null==(a=e.user.userInfo)?void 0:a.sub})`;return void(_!==o&&(_=o,Ki(_)))}let s=`<span><a href="${t}">Sign in</a> to your Needle account</span>`;"1"===e.query["signed-out"]&&(s=`<span class="secondary">You have been signed out successfully.</span>${s}`),n.write(y+s+w),n.end()}),x.post("/restart",(e,o)=>{var t;n.ora&&(n.ora.text="Received restart event. This instance will close"),null==(t=g)||t.close(e=>{e&&console.error(e)}),setTimeout(()=>{process.exit(0)},100),o.status(200).end("Server is restarting"),Ki("Server is restarting\n")}),x.get("/api/logs",async(e,n)=>{const o=Ji();a(o)?d(o,"utf-8",(e,t)=>{if(e)return console.error(e),void n.status(500).end("Failed to read log file");n.set({"Content-Type":"text/plain; charset=utf-8"});const i=t.split("\n").filter(e=>e.length>0).reverse().join("\n");let a=`--- Needle CLI Log File (newest first) ---\n${o}\n\n`;a+=i,n.status(200).end(a)}):n.status(404).end("Log file not found")}),x.get(i,za(),async(e,n)=>{var o;if(!0===v.invalid_login){const e=Ps(v);return n.status(e.status).json(e)}v.invalid_login=!1,n.status(null!=(o=e.user)&&o.isAuthenticated?200:400).send()}),x.get("/api/user",za(),async(e,n)=>{var o;const t=e.user;if(null==t||!t.isAuthenticated){if(!0===v.invalid_login){const e=Ps(v);return n.status(e.status).json(e)}return n.status(401).json({error:"Not authenticated"})}if(v.invalid_login=!1,!await Ta(t))return ra(),n.status(403).json({error:"You have been logged out from this machine"});if(null==t||!t.claims)return n.status(400).json({error:"User claims not found"});if(null==t||!t.userInfo)return n.status(400).json({error:"User info not found"});const i=null==t||null==(o=t.claims)?void 0:o.organization_roles,a=null==t?void 0:t.userInfo.custom_data,s={authenticated:t.isAuthenticated,id:t.userInfo.sub,name:Oa(t),email:t.claims.email||t.userInfo.email||"",profile_picture:t.userInfo.picture||"",default_org_id:(null==a?void 0:a.default_org)||"none",orgs:[]},r=["manage","owner","member","developer"];t.userInfo.organization_data&&(s.orgs=t.userInfo.organization_data.map(e=>{var n;const o={id:e.id,name:e.name,roles:(null==i?void 0:i.filter(n=>n.startsWith(e.id)).map(e=>e.split(":")[1]))||[],canWrite:!1};return o.canWrite=null==(n=o.roles)?void 0:n.some(e=>r.includes(e)),o}).sort((e,n)=>e.id===s.default_org_id?-1:n.id===s.default_org_id?1:e.name.localeCompare(n.name))),n.json(s)}),x.get("/api/license",za(),async(n,o)=>{var t,i,a;const s=null==(t=n.query.token)?void 0:t.toString(),r=null==(i=n.query.org)?void 0:i.toString();let c=null;if(s)c={authToken:s};else{const e=await wa();if(!e||!e.isAuthenticated)return o.status(401).json({error:"Not authenticated",code:"not_authenticated"});if(!await Ta(e))return ra(),o.status(403).json({error:"Invalid login"});c=await Ra(e,r||null).catch(e=>({status:500,error:e.message}))}if(!c)return o.status(500).json({error:"Failed to fetch licenses (Missing auth)"});if("error"in c)return o.status(c.status).json({error:c.error});const l=Z(c),p=null==(a=n.query.integration)?void 0:a.toLocaleString(),u={...l,"x-needle":"cli","x-needle-integration":null!=p&&p.length?p:"unknown"},d=await e(`https://cloud-staging.needle.tools/api${X.account.get_licenses}`,{method:"GET",headers:u}).catch(e=>(console.error("Failed to fetch licenses",e.message),Ki(`Failed to fetch licenses: "${e.message}"`),null));if(!d)return o.status(500).json({error:"Failed to fetch licenses"});if(d.ok){const e=await d.json();return void 0===e.can_use_editor&&(e.can_use_editor=!0),o.json(e)}return o.status(d.status).json({error:d.statusText})}),x.get("/api/deployments",za(),async(e,n)=>{var o;const t=await wa();if(!t||!t.isAuthenticated)return n.status(401).json({error:"Not authenticated"});const i=null==(o=e.query.org)?void 0:o.toString(),a=await Ra(t,i).catch(e=>({status:500,error:e.message}));if("error"in a)return n.status(a.status).json({error:a.error});if(i&&!a.org)return n.status(400).json({error:"Organization not found"});const s=await Zi({endpoint:"https://cloud-staging.needle.tools/api",authToken:a.authToken,org:a.org||void 0,limit:20,offset:0,names:void 0}).catch(e=>(console.error("List Deployments error: "+e.message),{status:500,error:e.message}));if("error"in s)return n.status(s.status).json({error:s.error});for(const e of s.deployments)e.editUrl=`${Bi()}/${e.id}`;const r={...s};return n.json(r)}),x.get(s,za(),async(n,o)=>{const t=await wa();if(!t||!t.isAuthenticated)return o.status(401).json({error:"Not authenticated"});const i=`https://cloud-staging.needle.tools/api${X.local_projects.get.user}`,a=await e(i,{method:"GET",headers:{Authorization:`Bearer ${t.accessToken}`}}).catch(e=>(console.error("Failed to fetch projects",e.message),null));if(!a)return o.status(500).json({error:"Failed to fetch projects"});if(!a.ok)return o.status(a.status).json({error:a.statusText});const s=await a.json().catch(e=>console.error(e));return o.json(s)}),x.get(s+"/:id",za(),async(n,o)=>{var t;const i=await wa();if(!i||!i.isAuthenticated)return o.status(401).json({error:"Not authenticated"});let a=null==(t=n.query.org)?void 0:t.toString();const s=await Ra(i,a).catch(e=>({status:500,error:e.message}));if(!s)return o.status(500).json({error:"Failed to fetch projects"});if("error"in s)return o.status(s.status).json({error:s.error});const r=Z(s),c=`https://cloud-staging.needle.tools/api${X.local_projects.get.by_id}${encodeURIComponent(n.params.id)}`,l=await e(c,{method:"GET",headers:{...r}}).catch(e=>(console.error("Failed to fetch project",e.message),null));if(!l)return o.status(500).json({error:"Failed to fetch projects. Please try again later or contact hi@needle.tools"});if(!l.ok)return o.status(l.status).json({error:l.statusText});const p=await l.json().catch(e=>(console.error(e),null));return p?o.json(p):o.status(500).json({error:"Failed to parse data. Please try again later or contact hi@needle.tools"})}),x.post("/api/projects",za(),async(n,o)=>{const t=await wa();if(!t||!t.isAuthenticated)return o.status(401).json({error:"Not authenticated"});const i="string"==typeof n.body?JSON.parse(n.body):n.body,a={machine_id:await Sa(),project_id:i.project_id,project_name:i.project_name,scene_name:i.scene_name,web_project_path:i.web_project_path,editor_name:i.editor_name,editor_version:i.editor_version};if(!a.project_id||!a.project_name)return o.status(400).json({error:"Invalid request"});const s=`https://cloud-staging.needle.tools/api${X.local_projects.post}`,r=await e(s,{method:"POST",headers:{Authorization:`Bearer ${t.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify(a)}).catch(console.error);return r?r.ok?o.send("OK"):o.status(r.status).json({error:r.statusText}):o.status(500).json({error:"Failed to upsert project"})}),x.get("/api/public_key",za(),async(n,o)=>{var t,i;const a=await wa();if(!a||!a.isAuthenticated)return o.status(401).json({error:"Not authenticated"});const s=null==(t=n.query.org)?void 0:t.toString(),r=await Ra(a,s).catch(e=>({error:e.message,status:500}));if(!r)return o.status(500).json({error:"Failed to fetch public key"});if("error"in r)return o.status(r.status).json({error:r.error});const c={project_id:(null==(i=n.query.project_id)?void 0:i.toString())||void 0,machine_id:await Sa()},l=await e(`https://cloud-staging.needle.tools/api${X.account.public_key}`,{method:"POST",headers:{...Z(r),"Content-Type":"application/json"},body:JSON.stringify(c)}).catch(e=>(console.error("Failed to fetch public key",e.message),null));if(!l)return o.status(500).json({error:"Failed to fetch public key"});if(l.ok){const e=await l.json().catch(console.error);return null!=e&&e.public_key?o.json(e):o.status(500).json({error:"Failed to fetch public key"})}return o.status(l.status).json({error:l.statusText})}),x.get("/api/local_project_id",async(e,n)=>{const o=e.query.paths;if(!o)return n.status(400).json({error:"Missing paths"});let t=[];"string"==typeof o?t=o.split(",").map(e=>e.trim()).filter(e=>e.length>0):Array.isArray(o)&&(t=o.map(e=>e.toString().trim()).filter(e=>e.length>0));const i=ms(t);return i?n.json({project_id:i}):n.status(404).json({error:"Project ID not found"})}),x.post("/api/project/info",za(),async(e,n)=>{(function(e){try{!function(e){var n,o,t,i;const a={last_accessed:Date.now(),editor:null!=(n=e.scene_path)&&n.endsWith(".unity")?"unity":null!=(o=e.scene_path)&&o.endsWith(".blend")?"blender":"unknown",editor_version:e.editor_version,editor_installation_path:e.editor_installation_path,log_location:e.editor_log_path,project_location:e.unity_project_path||e.blender_project_path||e.scene_path,scene_location:e.scene_path,web_location:e.web_project_path,needle_engine_integration_location:e.needle_sourcecode_location},s=Ga();let r=Ha();const c=r.entries.findIndex(e=>e.project_location===a.project_location),l=null==(t=r.entries[0])?void 0:t.project_location;-1!==c?r.entries[c]=a:r.entries.push(a),r.entries.sort((e,n)=>n.last_accessed-e.last_accessed),r.entries.length>30&&(r.entries=r.entries.slice(0,30));const p=null==(i=r.entries[0])?void 0:i.project_location;p&&p!==l&&Ki(`Active project changed: ${l||"(none)"} → ${p}`);try{Da=r;const e=JSON.stringify(r);u(s,e,"utf-8")}catch(e){console.error("Failed to save project info:",e)}}(e)}catch(e){Ki("Error saving project info: "+e)}})("string"==typeof e.body?JSON.parse(e.body):e.body),n.send("OK")});let k=null;const j=new Promise(e=>k=e);function l(){Ki("Cleaning up auth server...")}g=x.listen(ea,()=>{null==k||k()}),g.on("close",l),process.on("exit",l),process.on("SIGINT",()=>{l(),process.exit(0)}),await j.catch(e=>{console.error(e),Ki(`Error starting the auth server (promise failed): ${e.message}`)}),function(e){const n=new Y({server:e,path:"/mcp/ws"});Ki("MCP websocket server created.");let o=0,t=new Map;n.on("connection",e=>{const n=++o;_s.push(e),console.log(`${ws} New WebSocket connection established (${n})`),Ki(`New MCP websocket connection established. (${n})`),e.on("close",()=>{const o=_s.indexOf(e);-1!==o&&_s.splice(o,1),console.log(`${ws} WebSocket connection closing. (${n})`);const i=t.get(n);if(i){for(const e of i)Ia(e,ys);t.delete(n)}console.log(`${ws} WebSocket connection closed. (${n})`),Ki(`MCP websocket connection closed. (${n})`)});const i=new Map;e.on("message",o=>{try{const a=o.toString(),s=JSON.parse(a);switch(s.command){default:console.log(`${ws} Unknown command: ${s.command}`),Ki(`Unknown MCP websocket command received: ${s.command}`);break;case"get_connected_clients":console.log(`${ws} Sending connected clients information to client (${n})`),function(o,t){console.log(`${ws} Sending connected clients information to client (${n})`);const i={...t,command:"mcp_server_response",messageId:"messageId"in o?o.messageId:void 0};e.send(JSON.stringify(i))}(s,{clients:[...ps()]});break;case"register_tools":{const o=s.tools,a=s.source;a&&function(e,n){const o=Ua.get(e);if(o&&o.size>0){console.log(`[MCP] Removing ${o.size} tools registered from ${e}`);let t=!1;for(const n of o){const o=La.findIndex(e=>e.name===n);-1!==o&&(La.splice(o,1),delete Fa[n],Pa.set(n,e),t=!0)}Ua.delete(e),t&&n()}}(a,ys),console.log(`${ws} Registering ${o.length} tools from client (${a||"unknown_source"})`),Ki(`Registering ${o.length} MCP tools from client (${a||"unknown_source"})`);const r=t.get(n)||new Set;t.set(n,r);for(const n of o)r.add(n.name),qa(n,async o=>{console.log(`Tool ${n.name} executed via WebSocket with args:`,o);const t=`${n.name}-${Date.now()}-${Math.random()}`;return await new Promise((a,s)=>{const r=setTimeout(()=>{i.has(t)&&(console.error(`${ws} Tool execution timed out for tool: ${n.name}`),i.delete(t),s(new Error(`Tool execution timed out for tool: ${n.name}`)))},3e4);i.set(t,{resolve:e=>{a(e),clearTimeout(r)},reject:s}),e.send(JSON.stringify({command:"execute_tool",toolName:n.name,args:o,requestId:t}))})},{source:a},ys);break}case"tool_result":{const e=s.requestId,n=s.result;if(console.log(`${ws} Received tool result for requestId: ${e}`,n),i.has(e)){const o=i.get(e);null==o||o.resolve(n),i.delete(e)}else console.error(`${ws} No pending tool execution found for requestId: ${e}`);break}}}catch(e){console.error(`${ws} Error processing WebSocket message:`,e)}})})}(g),Ja({logToolCount:!0}),Cs||(As=!1,Ls()),process.on("exit",()=>(As=!0,Fs(),Os&&(clearTimeout(Os),Os=null),void(Cs&&(Cs.close(1e3,"shutdown"),Cs=null))))}return r}function Ps(e){let n="";return n=e.error?e.error:e.logged_in_machine_names.length>0?`You're already authenticated on ${e.logged_in_machine_names.length} other machine(s)${e.user_email?` with ${e.user_email}`:""}. Please logout from other machines first on ${Pi()}. You're currently logged in on: ${e.logged_in_machine_names.join(", ")}`:"An unknown error occured.",{status:403,error:n}}async function Bs(e={headless:!1,silent:!1,clearAuthData:!1}){return!0===e.clearAuthData&&await ra(),Ms("sign-in",{...e})}function Ds(e={}){return Ms("sign-out",{...e})}function Ms(n,o){return new Promise(async(t,i)=>{let a=!1;if("sign-in"==n){const e=await wa();if(null!=e&&e.isAuthenticated)return await Ea(e)?(a=!0,o.ora&&(o.ora.text=`Authorized as ${Oa(e)}`),"gotoAccountPage"in o&&!0===o.gotoAccountPage&&(o.ora&&(o.ora.text="Opening account page in the browser"),Di(Pi()),await new Promise(e=>setTimeout(e,2e3))),t(e)):t(null);if(!0===o.headless)return t(null)}else if("sign-out"==n&&!0===o.headless){a=!0,ra();const n=await qs(),o=await e(n.auth_endpoints["sign-out"],{follow:2});return t(o.ok)}const s=await qs();switch(o.timeout||(o.timeout=6e5),"number"==typeof o.timeout&&o.timeout>0&&setTimeout(()=>{a||(o.ora&&o.ora.fail('Timeout "'+n+'"'),t(null))},o.timeout),n){case"sign-in":const e=s.auth_endpoints["sign-in"];setTimeout(()=>Di(e),300),o.ora&&(o.ora.text=`Please authenticate in the browser: ${e}`),setTimeout(l,2e3);break;case"sign-out":ra(),Di(s.auth_endpoints["sign-out"]),setTimeout(l,2e3)}let r=0;const c=10;function l(){e(s.auth_endpoints["is-authenticated"]).then(async e=>{if(200===e.status||400===e.status||403===e.status)switch(n){case"sign-in":if(200===e.status){const e=await wa();return e&&!await Ea(e)?t(null):(a=!0,o.ora&&e&&(o.ora.text="User is authenticated"),t(e))}if(403===e.status){o.ora&&o.ora.fail("Authentication failed");const n=await e.text();if(n.startsWith("{")){const e=JSON.parse(n);if("logged_in_machine_names"in e&&Array.isArray(e.logged_in_machine_names)){const n=e.logged_in_machine_names;A().fail(`You're already authenticated on ${n.length} other machine(s). Please logout from other machines first. You're currently logged in on: ${n.join(", ")}`)}}return t(null)}break;case"sign-out":if(400===e.status)return a=!0,ra(),o.ora&&(o.ora.text="User is signed-out"),t(!0)}else if(r++,r>c)return o.ora?o.ora.fail(`Failed to complete auth flow. Please try again. Make sure that port ${s.port} is not blocked`):o.silent||console.error(`Failed to complete auth flow. Please try again. Make sure that port ${s.port} is not blocked`),t(null);setTimeout(l,1e3)}).catch(e=>{r>=10&&console.debug("Error polling auth status: "+e.message)})}})}globalThis.fetch||(globalThis.fetch=e),globalThis.File||(globalThis.File=n),globalThis.crypto||(globalThis.crypto=o.webcrypto);const Ws=process.argv.includes("--silent"),Gs=JSON.parse(r(new URL("../package.json",import.meta.url),"utf-8"));!Ws&&process.argv.includes("version")&&console.log(`☁ Needle CLI — ${Gs.version}, Node ${process.version}`);const Hs="The access token to use. Use the login command or get a token from https://cloud-staging.needle.tools. You can pass the access token with your command or set the environment variable NEEDLE_CLOUD_TOKEN";async function Js(e,n=null,o=!0){let t,i=null==e?void 0:e.toString();var a;if(i||(M.config(),process.env.NEEDLE_CLOUD_TOKEN&&(i=process.env.NEEDLE_CLOUD_TOKEN,null!=(a=i)&&a.length&&console.log("Using NEEDLE_CLOUD_TOKEN token from env"))),""===i||"true"===i){const e=(await import("node:readline")).createInterface({input:process.stdin}),n=10;let o,i="",a=!1;return new Promise(s=>{const r="Paste your https://cloud-staging.needle.tools/team#token access token here:",c=A({text:r,interval:200,spinner:"moon"}).start();process.stdin.setRawMode(!0),process.stdin.on("data",l=>{const p=l.toString();""===p&&process.exit();const u="\n"===p||"\r"===p;if(!u&&"\n"!==p&&"\r"!==p){""===p||"\b"===p?i=i.slice(0,-1):i+=p;const e=i.replace(/./g,"*");c.text=`${r} ${e}`}clearTimeout(o),o=setTimeout(()=>{if(!a&&(u||i.trim().length>n)){process.stdin.setRawMode(!1),e.close(),a=!0;const n=i.trim();if(n.length>0){const e=n.slice(3,-3).replace(/./g,"*");c.succeed("Access token received: "+e)}else c.fail("No access token provided");s({accessToken:n,org_id:t})}},150)})})}if(!i){let e;await async function(){const e=await wa();return null==e?void 0:e.isAuthenticated}()||(e=Ws?void 0:A("No access token found. Please sign in to authenticate...").start()),Ki("No access token provided, attempting login. Org: "+n);const a=Bs({headless:!o,ora:e,timeout:12e4}),d=await a;var s;if(d&&!Ta(d)?(null==(s=e)||s.warn("You are not logged in from this machine. Please login again."),await Ds({headless:!0})):e&&(Ki("User logged in via getAccessToken "+(null==d?void 0:d.isAuthenticated)),d?e.succeed("Logged in"):e.fail("Login failed")),null!=d&&d.isAuthenticated){var r;if(null==n){const e=await async function(e){var n;if(!e)return{status:401,error:"Not authenticated"};const o=null==(n=e.userInfo)?void 0:n.custom_data;return o?o.default_org?o.default_org:(console.warn("WARN: You do not have a default organization set. Please visit your Needle Cloud account settings and then try again."),Ki("WARN: You do not have a default organization set. Please visit your Needle Cloud account settings and then try again."),null):null}(d);"string"==typeof e&&(n=e)}else n===(null==(r=d.userInfo)?void 0:r.sub)&&(n=null);if(n){var c,l,p;if(t=null==(c=d.userInfo)||null==(c=c.organization_data)||null==(c=c.find(e=>e.id===n))?void 0:c.id,t||(n=null==(l=n.toString())?void 0:l.toLowerCase(),null!=t||(t=null==(p=d.userInfo)||null==(p=p.organization_data)||null==(p=p.find(e=>e.name.toLowerCase()===n))?void 0:p.id)),!t)throw new Error(`ERR: You (${Oa(d)}) are not a member of the organization "${n}"`);i=await(null==d?void 0:d.client.getOrganizationToken(t)),Ki("Getting access token for org "+t+", "+i.substring(0,8)+"...")}else{var u;Ki("Getting access token for user "+(null==(u=d.userInfo)?void 0:u.sub)),i=null==d?void 0:d.accessToken}}}return i||(console.error("ERR: Missing NEEDLE_CLOUD_TOKEN token. Please provide the access token argument or set the environment variable NEEDLE_CLOUD_TOKEN. Get an access token for your team at https://cloud.needle.tools/team"),Ki("ERR: Missing NEEDLE_CLOUD_TOKEN token. Org: "+t),process.exit(403)),{accessToken:i,org_id:t}}const Ks=t.program;async function Vs(){const{spawn:e}=await import("node:child_process");e(process.execPath,[process.argv[1],"start","--integration","cli-login"],{stdio:"inherit",env:{...process.env,NEEDLE_CLOUD_TOKEN:process.env.NEEDLE_CLOUD_TOKEN||""}}),await new Promise(e=>setTimeout(e,1e3))}Ks.version(Gs.version).description("Command-line interface (CLI) for Needle Cloud"),Ks.command("start","Starts the Needle Auth server").alias("start-server").configure({visible:!1,strictOptions:!1}).help("Start the local server for Needle Cloud. This is required to authenticate with Needle Cloud and access your account and data.").option("--restart <restart>","Restarts the server",{required:!1,validator:Ks.BOOLEAN,default:!1}).option("--integration <integration>","Hint for the process which integration triggered this command",{required:!1,validator:Ks.STRING}).action(async({options:e})=>{const n=e.integration,o=Ws?void 0:A("Starting Needle License server "+(n?`(from ${n})`:"")).start();qs({ora:o,restart:e.restart}).catch(e=>{console.error("Failed to start server:",e),null==o||o.fail("Failed to start server: "+e.message),process.exit(1)}).then(e=>{null!=e&&e.baseUrl&&e.isHost?null==o||o.succeed(`Server started on ${e.baseUrl}`):!1===(null==e?void 0:e.isHost)?(n||null==o||o.warn(`Server is running on ${e.baseUrl||e.port}`),process.exit(0)):(null==o||o.fail("Failed to start server"),process.exit(1))})}),Ks.command("mcp","Start MCP server for AI agents (stdio transport)").help('Start the Needle Cloud MCP server using stdio transport.\nThis is the standard way to connect AI agents (Claude Desktop, Cursor, VS Code, etc.).\n\nAdd to your MCP client config:\n{\n "mcpServers": {\n "needle": {\n "command": "npx",\n "args": ["-y", "needle-cloud", "mcp"]\n }\n }\n}').action(async()=>{const{startStdio:e}=await Promise.resolve().then(function(){return xs});e()}),Ks.command("get-project-id","Gets the project id for a local project").configure({visible:!1,strictOptions:!1}).argument("<paths...>","The path to the local project (web project directory)").action(async({args:e})=>{const n=ms(e.paths);n?console.log(`Found project ID: "${n}"`):console.log("No project ID found.")}),Ks.command("login","Login to Needle Cloud").help("Login to Needle Cloud. If you are already logged in, this will refresh the access token.").option("--headless <headless>","The headless process will not open a browser window to login. If the user is not authorized then no auth flow can be started. Use this if you only want to **check** if the user is authenticated",{required:!1,validator:Ks.BOOLEAN,default:!1}).option("--clear <clear>","Refresh the access token",{required:!1,validator:Ks.BOOLEAN,default:!1}).action(async({options:e})=>{await Vs();const n=e.headless.valueOf()||!1,o=e.clear.valueOf()||!1,t=Ws?void 0:A("Login").start();await Bs({headless:n,silent:Ws,clearAuthData:o,ora:t}).then(async e=>{null!=e&&e.isAuthenticated?null==t||t.succeed("Successfully logged in as "+Oa(e)):0==n?null!=e&&e.claims||null!=e&&e.userInfo?null==t||t.warn(`You (${Oa(e)}) are not authenticated...`):null==t||t.fail("Login failed"):Ws||null==t||t.warn("Not logged in"),process.exit(null!=e&&e.isAuthenticated?0:1)})}),Ks.command("logout","Logout of Needle Cloud").help("Logout of Needle Cloud (if you have logged in before).").option("--headless <headless>","Headless will not open a browser window to logout",{required:!1,validator:Ks.BOOLEAN,default:!1}).action(async({options:e})=>{await Vs();const n=e.headless.valueOf()||!1;await Ds({headless:n}).then(e=>{e?A("Logged out").succeed():A("Logout failed").fail(),process.exit(e?0:1)})}),Ks.command("me","Prints your user information").help("Prints basic informaton about the logged in Needle Cloud account (your account)").action(async({})=>{const e=Ws?void 0:A("Query user data").start(),n=await wa();if(null!=n&&n.isAuthenticated&&await Ta(n)){const a=n.userInfo||n.claims;var o,t,i;a?(null==e||e.succeed(`You are logged in as ${Oa(n)}`),console.log(`- Name: ${Oa(n)}`),console.log(`- ID: ${a.sub}`),a.email&&console.log(`- Email: ${a.email}`),a.phone_number&&console.log(`- Phone: ${a.phone_number}`),null!=(o=n.userInfo)&&o.organization_data&&console.log(`- Teams [${null==(t=n.userInfo)?void 0:t.organization_data.length}]: ${null==(i=n.userInfo)?void 0:i.organization_data.sort((e,n)=>e.name.localeCompare(n.name)).map(e=>e.name).join(", ")}`)):null==e||e.fail("Failed to get user data")}else null==e||e.warn("You are not logged in")}),Ks.command("get-pro","Start license flow for Needle Engine PRO").configure({visible:!1,strictArgsCount:!1,strictOptions:!1}).option("--org <org>","The team to purchase the license for",{validator:Ks.STRING}).action(async({options:e})=>{var n;let o=(null==(n=e.org)?void 0:n.toString())||null;const t=A().start("Start Needle Engine PRO purchase flow"),i=function(e){e=e||{};const n="undefined"!=typeof window?window.location:null;"current_page"===e.baseUrl&&(e.baseUrl=null==n?void 0:n.href);let o=e.pathname||(null==n?void 0:n.pathname),t=e.baseUrl||(null==n?void 0:n.href);if(!o||!t)return null;const i=new URL(o,t);return n&&(i.search=n.search),e.license||(e.license="needle-engine:pro"),i.searchParams.set("purchase_intent",e.license),e.account_id&&i.searchParams.set("account_id",e.account_id),e.return_url&&i.searchParams.set("return_url",e.return_url),e.checkout_if_possible&&i.searchParams.set("checkout_if_possible","true"),e.show_all_cards&&i.searchParams.set("show_all_cards","true"),e.affiliate_id&&i.searchParams.set("affiliate_id",e.affiliate_id),e.tracking_id&&i.searchParams.set("tracking_id",e.tracking_id),i}({baseUrl:"https://cloud-staging.needle.tools",pathname:o?`/team/${o}`:"/account",account_id:o,license:"needle-engine:pro",return_url:null});if(!i)return void t.fail("Failed to get purchase url - please visit https://cloud-staging.needle.tools");const a=i.toString();t.succeed(`Started Needle Engine PRO purchase flow: opening browser at ${a}`),Di(a)});const Ys={account:{url:Pi}},Qs=`"${Object.keys(Ys).join('", "')}"`;Ks.command("open",`Open a page in the default browser. Options are: ${Qs}`).argument("<page>",`The page to open. Options are: ${Qs}`,{validator:Ks.STRING}).help("").action(async({args:e,logger:n})=>{const o=e.page.toString(),t=Ys[o];t?"url"in t?Di(t.url()):n.error(`Unknown argument: ${o}`):n.error(`Unknown argument: ${o}. Options are: ${Qs}`)}),Ks.command("list-deployments","Get a list of deployed websites").configure({visible:!1}).help("").option("--token <token>",Hs,{validator:Ks.STRING}).option("--org <org>","The organization name or id to authenticate for",{required:!1,validator:Ks.STRING}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Ks.STRING}).option("--limit <limit>","Limit the number of deployments to show (min: 0, max: 100)",{validator:Ks.NUMBER,default:10}).option("--offset <offset>","The offset for deployments (default: 0, min: 0)",{validator:Ks.NUMBER,default:0}).option("--format <format>","The output format. Options: cli (default), json",{validator:Ks.STRING,default:"cli",hidden:!0}).option("--name","Filter by one or multiple deployment names (separated by ;)",{validator:Ks.STRING}).action(async({options:e,logger:n})=>{var o,t,i;const{accessToken:a,org_id:s}=await Js(e.token,e.org),r=(null==(o=e.endpoint)?void 0:o.toString())||"https://cloud-staging.needle.tools/api",c=e.limit.valueOf(),l=e.offset.valueOf(),p=(null==(t=e.format)?void 0:t.toString())||"cli",u=(null==(i=e.name)?void 0:i.toString())||void 0;if(c<0)return void n.error("The limit can not be negative");if(c>100)return void n.error("The limit can not be higher than 100");const d=A("Query deployments").start(),m=await Zi({endpoint:r,authToken:a,org:s,limit:c,offset:l,names:null==u?void 0:u.split(";")}).catch(e=>{n.error(e)});if(m&&"error"in m)d.fail(m.error+" (status: "+m.status+")");else if(m){if("json"===p){d.succeed(`Found ${m.deployments.length} deployments`);const e=JSON.stringify(m.deployments);return void console.log(e)}m.deployments.length>0?(d.succeed(`Found ${m.deployments.length} deployments`),m.deployments.forEach((e,o)=>{n.info(`${o+c*l}: ${e.name} – ${e.url}`)})):d.warn("No deployments found")}else d.fail("Failed to query deployments")}),Ks.command("list-content","List content items (textures, materials, uploads, etc.)").help("List content items stored in Needle Cloud. Use --type to filter by content type.").option("--token <token>",Hs,{validator:Ks.STRING}).option("--org <org>","The organization name or id to authenticate for",{required:!1,validator:Ks.STRING}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Ks.STRING}).option("--type <type>","Filter by content type (e.g. texture, material, hdri, upload, deployment)",{required:!1,validator:Ks.STRING}).option("--search <search>","Search by name, title or description",{required:!1,validator:Ks.STRING}).option("--limit <limit>","Max number of items to show (default: 20, max: 100)",{validator:Ks.NUMBER,default:20}).option("--offset <offset>","Offset for pagination (default: 0)",{validator:Ks.NUMBER,default:0}).option("--format <format>","Output format: cli (default), json",{validator:Ks.STRING,default:"cli"}).action(async({options:e,logger:n})=>{var o,t,i,a,s,r,c,l;const{accessToken:p,org_id:u}=await Js(e.token,e.org),d=(null==(o=e.endpoint)?void 0:o.toString())||"https://cloud-staging.needle.tools/api",m=Math.min(null!=(t=null==(i=e.limit)?void 0:i.valueOf())?t:20,100),f=null!=(a=null==(s=e.offset)?void 0:s.valueOf())?a:0,h=(null==(r=e.format)?void 0:r.toString())||"cli",g=(null==(c=e.type)?void 0:c.toString())||void 0,v=(null==(l=e.search)?void 0:l.toString())||void 0,x=A("Querying content...").start();try{const e=await Ii({baseUrl:d,authToken:p,org:u},{content_type:g,search:v,limit:String(m),offset:String(f)});if("json"===h)return x.succeed(`Found ${e.items.length} of ${e.total} items`),void console.log(JSON.stringify(e.items,null,2));if(0===e.items.length)return void x.warn("No content found"+(g?` (type: ${g})`:""));x.succeed(`Found ${e.items.length} of ${e.total} items`);for(const o of e.items){const e=o.content_type||o.view_type||"?",t=o.total_size?` (${Si(o.total_size)})`:"";n.info(` ${o.identifier} [${e}] ${o.name||"(untitled)"}${t}`)}e.total>f+m&&n.info(` ... ${e.total-f-m} more (use --offset ${f+m})`)}catch(e){x.fail(e.message)}}),Ks.command("download","Download a content item by identifier or name").help("Download files from a content item. Resolves by identifier first, then by name (case-insensitive).\n\nUsage:\n needle-cloud download <identifier> [directory]").argument("<identifier>","Content item identifier or name",{validator:Ks.STRING}).argument("[directory]","Output directory (default: current directory)",{default:"."}).option("--token <token>",Hs,{validator:Ks.STRING}).option("--org <org>","The organization name or id to authenticate for",{required:!1,validator:Ks.STRING}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Ks.STRING}).option("--type <type>","Filter by content type (e.g. texture, material, hdri)",{required:!1,validator:Ks.STRING}).option("--name <name>","Output filename (without extension)",{required:!1,validator:Ks.STRING}).option("--verbose","Show detailed download info",{required:!1,validator:Ks.BOOLEAN,default:!1}).action(async({args:e,options:n,logger:o})=>{var t,i,a,s,r,c;const{accessToken:l,org_id:p}=await Js(n.token,n.org),u=(null==(t=n.endpoint)?void 0:t.toString())||"https://cloud-staging.needle.tools/api",d=e.identifier.toString(),m=(null==(i=e.directory)?void 0:i.toString())||".",f=(null==(a=n.name)?void 0:a.toString())||void 0,h=null!=(s=null==(r=n.verbose)?void 0:r.valueOf())&&s,g=(null==(c=n.type)?void 0:c.toString())||void 0,v=A("Looking up content...").start();try{const e=await Ii({baseUrl:u,authToken:l,org:p},{content_type:g,search:d,limit:"10"}),n=e.items.find(e=>e.identifier===d)||e.items.find(e=>{var n;return(null==(n=e.name)?void 0:n.toLowerCase())===d.toLowerCase()});if(!n)return void v.fail(`No content found matching "${d}"`);if(!n.job_id)return void v.fail(`Content "${n.name}" has no downloadable files`);v.text=`Downloading "${n.name}"...`,v.stop();const t=await Xi({baseUrl:u,authToken:l,org:p,identifier:n.job_id,outDir:m,filename:f,verbose:h});"error"in t&&o.error(t.error)}catch(e){v.fail(e.message)}}),Ks.command("deploy","Deploy a website to Needle").help("").argument("<directory>","The directory to deploy",{validator:Ks.STRING}).option("--token <token>",Hs,{validator:Ks.STRING}).option("--team <team>","The team name or id to deploy to (not needed when using token/accesstoken)",{required:!1,validator:Ks.STRING}).option("--org <org>","The organization name or id to deloy to (not needed when using token/accesstoken)",{required:!1,validator:Ks.STRING,hidden:!0}).option("--name <name>","The project name. This name will also be used in your website URL",{required:!1,validator:Ks.STRING}).option("--entrypoint <entrypoint>",'The entrypoint file to use (e.g. "index.html"). This is useful if you want to deploy a folder with multiple HTML files and you want to configure which file to load initially or if you have multiple model files in one folder',{required:!1,validator:Ks.STRING,hidden:!0}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Ks.STRING,hidden:!0}).option("--open","Open the deployment in the default browser",{default:!0,validator:Ks.BOOLEAN}).option("--verbose <verbose>","Enables verbose output logs",{required:!1,validator:Ks.BOOLEAN,default:!1,hidden:!0}).option("--experimental","Use the experimental upload API. Mostly used for debugging (default: false)",{required:!1,validator:Ks.BOOLEAN,default:!1,hidden:!0}).option("--raw","Use raw to disallow modifications like gzip compression on upload",{required:!1,validator:Ks.BOOLEAN,default:!1,hidden:!0}).action(async({args:e,options:n,logger:o})=>{var t,i,a;const s=n.open,{accessToken:r,org_id:c}=await Js(n.token,n.team||n.org),l=n.verbose.valueOf(),p=n.experimental.valueOf()||!1,u=n.raw.valueOf()||!1;await Yi({logger:o,endpoint:(null==(t=n.endpoint)?void 0:t.toString())||void 0,token:r,org_id:c,directory:e.directory.toString(),name:(null==(i=n.name)?void 0:i.toString())||void 0,entrypoint:(null==(a=n.entrypoint)?void 0:a.toString())||void 0,open:s,verbose:l||!1,experimental:p||!1,raw:u||!1})}),Ks.command("optimize","Optimize glTF, GLB, VRM, FBX, USD files").help("").option("--token <token>",Hs,{validator:Ks.STRING}).option("--team <team>","The team name or id to upload the file to",{required:!1,validator:Ks.STRING}).option("--org <org>","The organization name or id to upload the file to",{required:!1,validator:Ks.STRING,hidden:!0}).argument("<path>","The full path to a file or directory that should be optimized",{validator:Ks.STRING}).option("--outdir <outdir>","The output directory for the optimized file(s). If set your optimized asset files will automatically be downloaded to this directory.",{required:!1,validator:Ks.STRING}).option("--name <name>","The optimization project name / unique identifier. This can also be the view id of previous uploads.",{required:!1,validator:Ks.STRING}).option("--verbose <verbose>","Enables verbose output logs",{required:!1,validator:Ks.BOOLEAN,default:!1}).option("--progressive","Use Needle progressive loading",{required:!1,validator:Ks.BOOLEAN,default:!0}).action(async({args:e,options:n,logger:o})=>{var t,i,r;const c=n.verbose.valueOf(),{accessToken:l,org_id:p}=await Js(n.token,n.team||n.org);if(l!=n.token){const e=await wa();null!=e&&e.isAuthenticated?p||(A("Please provide an organization id to optimize files...").fail(),process.exit(1)):(A("Please login to optimize files...").fail(),process.exit(1));const n=await async function(e,n){const o=e.baseUrl+X.account.get_licenses,t={...{...n},...Z(e)},i=await fetch(o,{...ee,method:"GET",headers:t}).catch(e=>(console.error(e),null));return i?i.ok?(await i.json()).licenses:(console.error(i.statusText,await i.text()),[]):[]}({baseUrl:"https://cloud-staging.needle.tools/api",authToken:l,org:p},{type:"org",org_id:p});(!n||n.length<=0||!n.find(e=>"Needle Engine"===e.type&&("pro"===e.license||"enterprise"===e.license)))&&(A("Update to Needle PRO or Enterprise required to optimize files via CLI. Visit https://cloud-staging.needle.tools/get-pro").fail(),process.exit(1))}const u=(null==(t=n.progressive)?void 0:t.valueOf())||!0,d=await async function(e){if(e.outDir){var n;if((null==(n=e.outDir)?void 0:n.length)<=0){const e="Output Directory is invalid";return A().fail(e),{error:e}}if(a(e.outDir)&&s(e.outDir).isFile()){const e="The output directory is a file - it must be a directory";return A().fail(e),{error:e}}}const o=e.fileOrDirectory;if(!a(o))return A().fail(`File not found: ${o}`),{error:"File not found"};if(!e.token||e.token.length<=1||"string"!=typeof e.token||"true"===e.token)return{error:`Missing access token. Create a token at ${Pi()}`};if(void 0!==e.name&&e.name&&(e.name.length<=0||"true"===e.name||"false"===e.name))return{error:`Name is not valid: "${e.name}". Please provide a valid name`};e.fileOrDirectory=x(e.fileOrDirectory);const t=A(`Gathering files ${e.fileOrDirectory}`).start();let i=null;try{i=Wi("optimization",e.fileOrDirectory)}catch(n){return A().fail(`${n.message||`Failed to collect files in ${e.fileOrDirectory}`}`),{error:"Failed to collect files"}}t.text=`Uploading ${i.files.length} files for optimization:\n- ${i.files.map(e=>e.path||e.name).join("\n -")}`;const r="https://cloud-staging.needle.tools/api";e.verbose&&console.log("Using endpoint:",r);const c=await Li({baseUrl:r,authToken:e.token,org:e.org_id},{triggered_by:"cli",files:i.files,entrypoint:i.entrypoint},{type:"upload",name:e.name,loglevel:e.verbose?"debug":"none",progress:e=>{t.text=`Uploading ${e.fileName} - finished in approx. ${e.estimatedTimeLeftDisplay}, ${100*e.progress01}%`}});if(0==c.success){const e=`${c.error||"Unknown error: could not start upload"}`;return t.fail(e),{error:e,noprint:!0}}if(c.success){const n=`${Bi()}/${c.view_id}?select_team=1`;t.succeed(c.uploadSkipped?`Files have already been uploaded to ${n}`:`Uploaded ${i.files.length} files for optimization to ${n}`);const o=await async function(e,n={progressive:!0}){const o=e.baseUrl+X.jobs.create,t={...Z(e),"content-type":"application/json"},i={type:"optimization",job_id:e.id,triggered_by:e.trigger_type,parameters:{...n}},a=await fetch(o,{...ee,method:"POST",headers:t,body:JSON.stringify(i)});if(!a.ok){const e=await a.text();return console.error(`Failed to request optimization (${a.status}): ${e} `),null}return await a.json().catch(e=>(console.error(e),null))}({baseUrl:r,authToken:e.token,org:e.org_id,id:c.id,trigger_type:"cli"},{progressive:e.progressive,pipeline_version:"latest"});if(!o)return{error:"Failed to send optimization request"};if("error"in o){const e=`Failed to optimize: ${o.error}`;return console.error(e),{error:e}}{const n=o.job,t=A(`Optimization requested for ${n.name||n.identifier}`).start();let i=!1;for(t.color="gray";;){if("completed"===o.job.status){var l;i=!0,t.succeed(`${null!=(l=o.message)?l:"Optimization completed"}`);break}let a=2e3;const s=await li(n.identifier,{baseUrl:r,authToken:e.token,org:o.job.org});if("new"!==(null==s?void 0:s.status)&&"pending"!==(null==s?void 0:s.status)||(t.text="Your asset is queued - waiting for optimization to start",t.color="yellow",a=2e3),"running"===(null==s?void 0:s.status))t.text=`Your asset is being optimized: ${s.progress?`${s.progress}%`:""} ${s.status_message?`— ${s.status_message}`:""}`,t.color="cyan",a=1e3;else if("stalled"===(null==s?void 0:s.status))a=2500;else{if("completed"===(null==s?void 0:s.status)){i=!0,t.succeed(`Your asset has finished optimizing: ${s.status_message}`);break}if("canceled"===(null==s?void 0:s.status))return t.fail(`Optimization cancelled: ${s.error}`),{error:s.error||"Optimization cancelled"};if("failed"===(null==s?void 0:s.status))return t.fail(`Optimization failed: ${s.error}`),console.error(`Optimization failed: ${s.error}`),{error:s.error||"Optimization failed"}}await Ei(a)}if(i){if(e.outDir){const o=await Xi({baseUrl:r,authToken:e.token,org:e.org_id,identifier:n.identifier,outDir:e.outDir,verbose:e.verbose});if("error"in o)return{error:o.error}}else A().succeed(`Asset successfully optimized: https://cloud-staging.needle.tools/edit/${n.view_id} (To download optimized files, use the --outdir option)`);return{success:!0}}}}return{error:"Unknown error"}}({logger:o,token:l,org_id:p,fileOrDirectory:e.path.toString(),name:(null==(i=n.name)?void 0:i.toString())||void 0,progressive:u,outDir:(null==(r=n.outdir)?void 0:r.toString())||void 0,verbose:c||!1}).catch(e=>{console.error(e),process.exit(1)});Array.isArray(d)?process.exit(0):"error"in d&&(d.noprint||console.error(d.error),process.exit(1))}),Ks.command("generate","Generate assets using AI").help("Available subcommands:\n generate texture - Generate a texture from a text prompt").action(async({logger:e})=>{e.info("Available subcommands:"),e.info(" generate texture - Generate a texture from a text prompt"),e.info("\nRun needle-cloud generate texture --help for more information.")}),Ks.command("generate texture","Generate a texture from a text prompt").help("").argument("<prompt>","The text prompt describing the texture to generate",{validator:Ks.STRING}).option("--token <token>",Hs,{validator:Ks.STRING}).option("--team <team>","The team name or id",{required:!1,validator:Ks.STRING}).option("--org <org>","The organization name or id",{required:!1,validator:Ks.STRING,hidden:!0}).option("--resolution <resolution>","The texture resolution (256, 512, 1k, 2k, 4k)",{default:"512",required:!1,validator:Ks.STRING}).option("--name <name>","Output filename",{required:!1,validator:Ks.STRING}).option("--outdir <outdir>","Output directory to download the generated file(s) to",{required:!1,validator:Ks.STRING}).action(async({args:e,options:n,logger:o})=>{var t,i,a;const{accessToken:s,org_id:r}=await Js(n.token,n.team||n.org),c=e.prompt.toString(),l=null==(t=n.resolution)?void 0:t.toString(),p=null==(i=n.outdir)?void 0:i.toString(),u=null==(a=n.name)?void 0:a.toString(),d=await async function(e){if(!e.token||e.token.length<=1||"string"!=typeof e.token||"true"===e.token)return{error:`Missing access token. Create a token at ${Pi()}`};if(!e.prompt||e.prompt.length<=0)return{error:"A prompt is required"};const n="https://cloud-staging.needle.tools/api",o=A("Requesting texture generation...").start(),t=await async function(e,n){const o=e.baseUrl+X.jobs.create,t={...Z(e),"content-type":"application/json"},i={type:"ai-texture",triggered_by:e.trigger_type,parameters:{...n}},a=await fetch(o,{...ee,method:"POST",headers:t,body:JSON.stringify(i)});if(!a.ok){const e=await a.text();return console.error(`Failed to request texture generation (${a.status}): ${e}`),{error:e||`Request failed (${a.status})`}}return await a.json().catch(e=>(console.error(e),null))}({baseUrl:n,authToken:e.token,org:e.org_id,trigger_type:"cli"},{prompt:e.prompt,resolution:e.resolution||512}).catch(e=>({error:e.message||"Request failed"}));if("error"in t)return o.fail(t.error),{error:t.error};const i=t.job;if("canceled"===i.status)return o.fail(i.status_message||"Texture generation was canceled (quota exceeded)"),{error:i.status_message||"Quota exceeded"};o.succeed(`Texture generation requested: ${i.identifier}`);const a=A("Waiting for texture generation...").start();for(a.color="gray";;){if("completed"===i.status){a.succeed("Texture generation completed");break}let o=2e3;const t=await li(i.identifier,{baseUrl:n,authToken:e.token,org:i.org});if("new"===(null==t?void 0:t.status)||"pending"===(null==t?void 0:t.status))a.text="Your texture is queued - waiting for generation to start",a.color="yellow",o=2e3;else if("running"===(null==t?void 0:t.status))a.text=`Generating texture: ${t.progress?`${t.progress}%`:""} ${t.status_message?`— ${t.status_message}`:""}`,a.color="cyan",o=1e3;else{if("completed"===(null==t?void 0:t.status)){a.succeed(`Texture generation completed: ${t.status_message||""}`);break}if("canceled"===(null==t?void 0:t.status))return a.fail(`Texture generation canceled: ${t.error||""}`),{error:t.error||"Texture generation canceled"};if("failed"===(null==t?void 0:t.status))return a.fail(`Texture generation failed: ${t.error||""}`),{error:t.error||"Texture generation failed"}}await Ei(o)}if(e.outDir||(e.outDir="."),e.outDir){const o=await Xi({baseUrl:n,authToken:e.token,org:e.org_id,identifier:i.identifier,outDir:e.outDir,filename:e.outputName});if("error"in o)return{error:o.error}}return{success:!0}}({logger:o,token:s,org_id:r,prompt:c,resolution:l,outputName:u,outDir:p});"error"in d&&(d.error&&o.error(d.error),process.exit(1)),process.exit(0)});export{Ks as program};
|
|
1
|
+
import e from"node-fetch";import{File as n}from"@web-std/file";import t from"node:crypto";import o from"@caporal/core";import i,{existsSync as a,statSync as s,readFileSync as r,readdirSync as c,appendFileSync as l,mkdirSync as p,writeFileSync as u,readFile as d}from"fs";import m,{TextEncoder as f}from"util";import h,{Readable as g}from"stream";import v,{resolve as x,join as b,relative as y}from"path";import w from"http";import _ from"https";import k from"url";import j from"assert";import S from"tty";import T,{tmpdir as $}from"os";import E from"zlib";import{EventEmitter as C}from"events";import O,{randomUUID as R}from"crypto";import z from"buffer";import N from"open";import A from"ora";import{realpathSync as F,mkdirSync as L,existsSync as U,statSync as I,rename as q}from"node:fs";import{writeFile as P}from"node:fs/promises";import B from"node:os";import D from"node:path";import M from"dotenv";import W from"@logto/node";import{Router as G}from"express";import H from"body-parser";import{execSync as J}from"child_process";import{minimatch as K}from"minimatch";import V,{WebSocketServer as Y}from"ws";import{createInterface as Q}from"node:readline";const Z={status:"/v1/status",version:"/v1/version",api:"/v1/api",usage:{get:"/v1/usage"},affiliate:{get:"/v1/affiliate/get",link_clicked:"/v1/affiliate/link_clicked"},account:{public_key:"/v1/account/public_key",post_machine:"/v1/account/machine",connect:"/v1/account/connect",get_licenses:"/v1/account/get/licenses",set_license_active:"/v1/account/set_license_active",set_licenses_active:"/v1/account/set_licenses_active",buy_licenses:"/v1/account/buy_licenses",update_licenses:"/v1/account/update_licenses",update_payment_method:"/v1/account/update_payment_method",get_billing:"/v1/account/get_billing",resume_subscription:"/v1/account/resume_subscription",cancel_subscription:"/v1/account/cancel_subscription",start_billingportal_session:"/v1/account/start_billingportal_session",post_preferences:"/v1/account/preferences",get_preferences:"/v1/account/preferences"},ai:{llmstxt:"/v1/ai/llmstxt",chat:"/v1/ai/chat",list_chats:"/v1/ai/chat/list",ask:"/v1/ai/ask"},organizations:{get:"/v1/organizations/get",orgs_details:"/v1/organizations/details",licenses:"/v1/organizations/licenses",get_invitations:"/v1/organizations/get_invitations"},events:{get:"/v1/events/get",post:"/v1/events/post",list:"/v1/events/list"},reports:{get:"/v1/reports/get",post:"/v1/reports/post"},questionnaire:{get:"/v1/questionnaires/get",post:"/v1/questionnaires/post"},roadmap:{get:"/v1/roadmap/get",post_vote:"/v1/roadmap/post"},tokens:{create:"/v1/tokens/create",delete:"/v1/tokens/delete",list:"/v1/tokens/list"},get:{stats:"/v1/get/stats",jobs:"/v1/list/jobs",deployments:"/v1/list/deployments",discounts:"/v1/get/discounts"},urls:{public:"/v1/public",public_download_urls:"/v1/public/download/urls"},view:{get_analytics:"/v1/view/analytics",get_public_info:"/v1/view/public/info",post_version:"/v1/view/post_version"},content:{root:"/v1/content",download:"/v1/content/download",detail:"/v1/content/:identifier",update:"/v1/content/:identifier",delete:"/v1/content/:identifier",restore:"/v1/content/:identifier/restore"},collections:{list:"/v1/collections/list",get:"/v1/collections/get",create:"/v1/collections/create",update:"/v1/collections/update",delete:"/v1/collections/delete",add_item:"/v1/collections/add-item",remove_item:"/v1/collections/remove-item",reorder_items:"/v1/collections/reorder-items"},upload:{request:"/v1/upload/request",request_put_url:"/v1/upload/put",update_results:"/v1/upload/results",done:"/v1/upload/done",cancel:"/v1/upload/cancel"},jobs:{create:"/v1/jobs/create",get_id:"/v1/jobs/get_id",request_start:"/v1/jobs/request_start",request_download_url:"/v1/download/get_presigned_url",request_download_urls:"/v1/download/get_presigned_urls",request_restart:"/v1/jobs/restart",delete:"/v1/jobs/delete",post_update:"/v1/jobs/update",post_results_stats:"/v1/jobs/results_stats",post_usage:"/v1/jobs/post_usage",get_status:"/v1/jobs/status",get_org:"/v1/jobs/org",query:"/v1/jobs/query",request_job_that_needs_stats:"/v1/jobs/job_needs_stats"},worker:{ping:"/v1/worker/ping",get_available_count:"/v1/worker/get_available_count",post_available_info:"/v1/worker/post_available_info",get_available_info:"/v1/worker/get_available_info"},local_projects:{get:{user:"/v1/local_projects/user",by_id:"/v1/local_projects/"},post:"/v1/local_projects"}};function X(e){const n={authorization:"Bearer "+e.authToken};return e.org&&(n["x-needle-cloud-org"]=e.org),e.roles&&(n.roles=e.roles.join(",")),e.roles_org&&(n.roles_org=e.roles_org.join(",")),n}const ee={credentials:"omit"};function ne(e,n){return function(){return e.apply(n,arguments)}}const{toString:te}=Object.prototype,{getPrototypeOf:oe}=Object,ie=(ae=Object.create(null),e=>{const n=te.call(e);return ae[n]||(ae[n]=n.slice(8,-1).toLowerCase())});var ae;const se=e=>(e=e.toLowerCase(),n=>ie(n)===e),re=e=>n=>typeof n===e,{isArray:ce}=Array,le=re("undefined"),pe=se("ArrayBuffer"),ue=re("string"),de=re("function"),me=re("number"),fe=e=>null!==e&&"object"==typeof e,he=e=>{if("object"!==ie(e))return!1;const n=oe(e);return!(null!==n&&n!==Object.prototype&&null!==Object.getPrototypeOf(n)||Symbol.toStringTag in e||Symbol.iterator in e)},ge=se("Date"),ve=se("File"),xe=se("Blob"),be=se("FileList"),ye=se("URLSearchParams"),[we,_e,ke,je]=["ReadableStream","Request","Response","Headers"].map(se);function Se(e,n,{allOwnKeys:t=!1}={}){if(null==e)return;let o,i;if("object"!=typeof e&&(e=[e]),ce(e))for(o=0,i=e.length;o<i;o++)n.call(null,e[o],o,e);else{const i=t?Object.getOwnPropertyNames(e):Object.keys(e),a=i.length;let s;for(o=0;o<a;o++)s=i[o],n.call(null,e[s],s,e)}}function Te(e,n){n=n.toLowerCase();const t=Object.keys(e);let o,i=t.length;for(;i-- >0;)if(o=t[i],n===o.toLowerCase())return o;return null}const $e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Ee=e=>!le(e)&&e!==$e,Ce=(Oe="undefined"!=typeof Uint8Array&&oe(Uint8Array),e=>Oe&&e instanceof Oe);var Oe;const Re=se("HTMLFormElement"),ze=(({hasOwnProperty:e})=>(n,t)=>e.call(n,t))(Object.prototype),Ne=se("RegExp"),Ae=(e,n)=>{const t=Object.getOwnPropertyDescriptors(e),o={};Se(t,(t,i)=>{let a;!1!==(a=n(t,i,e))&&(o[i]=a||t)}),Object.defineProperties(e,o)},Fe="abcdefghijklmnopqrstuvwxyz",Le="0123456789",Ue={DIGIT:Le,ALPHA:Fe,ALPHA_DIGIT:Fe+Fe.toUpperCase()+Le},Ie=se("AsyncFunction"),qe=(Pe="function"==typeof setImmediate,Be=de($e.postMessage),Pe?setImmediate:Be?(De=`axios@${Math.random()}`,Me=[],$e.addEventListener("message",({source:e,data:n})=>{e===$e&&n===De&&Me.length&&Me.shift()()},!1),e=>{Me.push(e),$e.postMessage(De,"*")}):e=>setTimeout(e));var Pe,Be,De,Me;const We="undefined"!=typeof queueMicrotask?queueMicrotask.bind($e):"undefined"!=typeof process&&process.nextTick||qe;var Ge={isArray:ce,isArrayBuffer:pe,isBuffer:function(e){return null!==e&&!le(e)&&null!==e.constructor&&!le(e.constructor)&&de(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let n;return e&&("function"==typeof FormData&&e instanceof FormData||de(e.append)&&("formdata"===(n=ie(e))||"object"===n&&de(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let n;return n="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&pe(e.buffer),n},isString:ue,isNumber:me,isBoolean:e=>!0===e||!1===e,isObject:fe,isPlainObject:he,isReadableStream:we,isRequest:_e,isResponse:ke,isHeaders:je,isUndefined:le,isDate:ge,isFile:ve,isBlob:xe,isRegExp:Ne,isFunction:de,isStream:e=>fe(e)&&de(e.pipe),isURLSearchParams:ye,isTypedArray:Ce,isFileList:be,forEach:Se,merge:function e(){const{caseless:n}=Ee(this)&&this||{},t={},o=(o,i)=>{const a=n&&Te(t,i)||i;t[a]=he(t[a])&&he(o)?e(t[a],o):he(o)?e({},o):ce(o)?o.slice():o};for(let e=0,n=arguments.length;e<n;e++)arguments[e]&&Se(arguments[e],o);return t},extend:(e,n,t,{allOwnKeys:o}={})=>(Se(n,(n,o)=>{e[o]=t&&de(n)?ne(n,t):n},{allOwnKeys:o}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,n,t,o)=>{e.prototype=Object.create(n.prototype,o),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:n.prototype}),t&&Object.assign(e.prototype,t)},toFlatObject:(e,n,t,o)=>{let i,a,s;const r={};if(n=n||{},null==e)return n;do{for(i=Object.getOwnPropertyNames(e),a=i.length;a-- >0;)s=i[a],o&&!o(s,e,n)||r[s]||(n[s]=e[s],r[s]=!0);e=!1!==t&&oe(e)}while(e&&(!t||t(e,n))&&e!==Object.prototype);return n},kindOf:ie,kindOfTest:se,endsWith:(e,n,t)=>{e=String(e),(void 0===t||t>e.length)&&(t=e.length);const o=e.indexOf(n,t-=n.length);return-1!==o&&o===t},toArray:e=>{if(!e)return null;if(ce(e))return e;let n=e.length;if(!me(n))return null;const t=new Array(n);for(;n-- >0;)t[n]=e[n];return t},forEachEntry:(e,n)=>{const t=(e&&e[Symbol.iterator]).call(e);let o;for(;(o=t.next())&&!o.done;){const t=o.value;n.call(e,t[0],t[1])}},matchAll:(e,n)=>{let t;const o=[];for(;null!==(t=e.exec(n));)o.push(t);return o},isHTMLForm:Re,hasOwnProperty:ze,hasOwnProp:ze,reduceDescriptors:Ae,freezeMethods:e=>{Ae(e,(n,t)=>{if(de(e)&&-1!==["arguments","caller","callee"].indexOf(t))return!1;de(e[t])&&(n.enumerable=!1,"writable"in n?n.writable=!1:n.set||(n.set=()=>{throw Error("Can not rewrite read-only method '"+t+"'")}))})},toObjectSet:(e,n)=>{const t={},o=e=>{e.forEach(e=>{t[e]=!0})};return ce(e)?o(e):o(String(e).split(n)),t},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,n,t){return n.toUpperCase()+t}),noop:()=>{},toFiniteNumber:(e,n)=>null!=e&&Number.isFinite(e=+e)?e:n,findKey:Te,global:$e,isContextDefined:Ee,ALPHABET:Ue,generateString:(e=16,n=Ue.ALPHA_DIGIT)=>{let t="";const{length:o}=n;for(;e--;)t+=n[Math.random()*o|0];return t},isSpecCompliantForm:function(e){return!!(e&&de(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const n=new Array(10),t=(e,o)=>{if(fe(e)){if(n.indexOf(e)>=0)return;if(!("toJSON"in e)){n[o]=e;const i=ce(e)?[]:{};return Se(e,(e,n)=>{const a=t(e,o+1);!le(a)&&(i[n]=a)}),n[o]=void 0,i}}return e};return t(e,0)},isAsyncFn:Ie,isThenable:e=>e&&(fe(e)||de(e))&&de(e.then)&&de(e.catch),setImmediate:qe,asap:We};function He(e,n,t,o,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",n&&(this.code=n),t&&(this.config=t),o&&(this.request=o),i&&(this.response=i)}Ge.inherits(He,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Ge.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Je=He.prototype,Ke={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ke[e]={value:e}}),Object.defineProperties(He,Ke),Object.defineProperty(Je,"isAxiosError",{value:!0}),He.from=(e,n,t,o,i,a)=>{const s=Object.create(Je);return Ge.toFlatObject(e,s,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),He.call(s,e.message,n,t,o,i),s.cause=e,s.name=e.name,a&&Object.assign(s,a),s};var Ve=h.Stream,Ye=Qe;function Qe(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}m.inherits(Qe,Ve),Qe.create=function(e,n){var t=new this;for(var o in n=n||{})t[o]=n[o];t.source=e;var i=e.emit;return e.emit=function(){return t._handleEmit(arguments),i.apply(e,arguments)},e.on("error",function(){}),t.pauseStream&&e.pause(),t},Object.defineProperty(Qe.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),Qe.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},Qe.prototype.resume=function(){this._released||this.release(),this.source.resume()},Qe.prototype.pause=function(){this.source.pause()},Qe.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},Qe.prototype.pipe=function(){var e=Ve.prototype.pipe.apply(this,arguments);return this.resume(),e},Qe.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},Qe.prototype._checkIfMaxDataSizeExceeded=function(){this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize||(this._maxDataSizeExceeded=!0,this.emit("error",new Error("DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.")))};var Ze=h.Stream,Xe=en;function en(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}m.inherits(en,Ze),en.create=function(e){var n=new this;for(var t in e=e||{})n[t]=e[t];return n},en.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!Buffer.isBuffer(e)},en.prototype.append=function(e){if(en.isStreamLike(e)){if(!(e instanceof Ye)){var n=Ye.create(e,{maxDataSize:Infinity,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=n}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},en.prototype.pipe=function(e,n){return Ze.prototype.pipe.call(this,e,n),this.resume(),e},en.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},en.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){en.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},en.prototype._pipeNext=function(e){if(this._currentStream=e,en.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});this.write(e),this._getNext()},en.prototype._handleErrors=function(e){var n=this;e.on("error",function(e){n._emitError(e)})},en.prototype.write=function(e){this.emit("data",e)},en.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},en.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},en.prototype.end=function(){this._reset(),this.emit("end")},en.prototype.destroy=function(){this._reset(),this.emit("close")},en.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},en.prototype._checkDataSize=function(){this._updateDataSize(),this.dataSize<=this.maxDataSize||this._emitError(new Error("DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded."))},en.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach(function(n){n.dataSize&&(e.dataSize+=n.dataSize)}),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},en.prototype._emitError=function(e){this._reset(),this.emit("error",e)};var nn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function tn(e){var n={exports:{}};return e(n,n.exports),n.exports}var on={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}},an=tn(function(e,n){var t,o,i,a=v.extname,s=/^\s*([^;\s]*)(?:;|\s|$)/,r=/^text\//i;function c(e){if(!e||"string"!=typeof e)return!1;var n=s.exec(e),t=n&&on[n[1].toLowerCase()];return t&&t.charset?t.charset:!(!n||!r.test(n[1]))&&"UTF-8"}n.charset=c,n.charsets={lookup:c},n.contentType=function(e){if(!e||"string"!=typeof e)return!1;var t=-1===e.indexOf("/")?n.lookup(e):e;if(!t)return!1;if(-1===t.indexOf("charset")){var o=n.charset(t);o&&(t+="; charset="+o.toLowerCase())}return t},n.extension=function(e){if(!e||"string"!=typeof e)return!1;var t=s.exec(e),o=t&&n.extensions[t[1].toLowerCase()];return!(!o||!o.length)&&o[0]},n.extensions=Object.create(null),n.lookup=function(e){if(!e||"string"!=typeof e)return!1;var t=a("x."+e).toLowerCase().substr(1);return t&&n.types[t]||!1},n.types=Object.create(null),t=n.extensions,o=n.types,i=["nginx","apache",void 0,"iana"],Object.keys(on).forEach(function(e){var n=on[e],a=n.extensions;if(a&&a.length){t[e]=a;for(var s=0;s<a.length;s++){var r=a[s];if(o[r]){var c=i.indexOf(on[o[r]].source),l=i.indexOf(n.source);if("application/octet-stream"!==o[r]&&(c>l||c===l&&"application/"===o[r].substr(0,12)))continue}o[r]=e}}})}),sn=function(e){var n="function"==typeof setImmediate?setImmediate:"object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:null;n?n(e):setTimeout(e,0)},rn=function(e){var n=!1;return sn(function(){n=!0}),function(t,o){n?e(t,o):sn(function(){e(t,o)})}},cn=function(e){Object.keys(e.jobs).forEach(ln.bind(e)),e.jobs={}};function ln(e){"function"==typeof this.jobs[e]&&this.jobs[e]()}var pn=function(e,n,t,o){var i=t.keyedList?t.keyedList[t.index]:t.index;t.jobs[i]=function(e,n,t,o){return 2==e.length?e(t,rn(o)):e(t,n,rn(o))}(n,i,e[i],function(e,n){i in t.jobs&&(delete t.jobs[i],e?cn(t):t.results[i]=n,o(e,t.results))})},un=function(e,n){var t=!Array.isArray(e),o={index:0,keyedList:t||n?Object.keys(e):null,jobs:{},results:t?{}:[],size:t?Object.keys(e).length:e.length};return n&&o.keyedList.sort(t?n:function(t,o){return n(e[t],e[o])}),o},dn=function(e){Object.keys(this.jobs).length&&(this.index=this.size,cn(this),rn(e)(null,this.results))},mn=function(e,n,t,o){var i=un(e,t);return pn(e,n,i,function t(a,s){a?o(a,s):(i.index++,i.index<(i.keyedList||e).length?pn(e,n,i,t):o(null,i.results))}),dn.bind(i,o)};function fn(e,n){return e<n?-1:e>n?1:0}mn.ascending=fn,mn.descending=function(e,n){return-1*fn(e,n)};var hn=function(e,n){return Object.keys(n).forEach(function(t){e[t]=e[t]||n[t]}),e},gn=k.parse,vn=h.Stream,xn=bn;function bn(e){if(!(this instanceof bn))return new bn(e);for(var n in this._overheadLength=0,this._valueLength=0,this._valuesToMeasure=[],Xe.call(this),e=e||{})this[n]=e[n]}m.inherits(bn,Xe),bn.LINE_BREAK="\r\n",bn.DEFAULT_CONTENT_TYPE="application/octet-stream",bn.prototype.append=function(e,n,t){"string"==typeof(t=t||{})&&(t={filename:t});var o=Xe.prototype.append.bind(this);if("number"==typeof n&&(n=""+n),m.isArray(n))this._error(new Error("Arrays are not supported."));else{var i=this._multiPartHeader(e,n,t),a=this._multiPartFooter();o(i),o(n),o(a),this._trackLength(i,n,t)}},bn.prototype._trackLength=function(e,n,t){var o=0;null!=t.knownLength?o+=+t.knownLength:Buffer.isBuffer(n)?o=n.length:"string"==typeof n&&(o=Buffer.byteLength(n)),this._valueLength+=o,this._overheadLength+=Buffer.byteLength(e)+bn.LINE_BREAK.length,n&&(n.path||n.readable&&n.hasOwnProperty("httpVersion")||n instanceof vn)&&(t.knownLength||this._valuesToMeasure.push(n))},bn.prototype._lengthRetriever=function(e,n){e.hasOwnProperty("fd")?null!=e.end&&Infinity!=e.end&&null!=e.start?n(null,e.end+1-(e.start?e.start:0)):i.stat(e.path,function(t,o){t?n(t):n(null,o.size-(e.start?e.start:0))}):e.hasOwnProperty("httpVersion")?n(null,+e.headers["content-length"]):e.hasOwnProperty("httpModule")?(e.on("response",function(t){e.pause(),n(null,+t.headers["content-length"])}),e.resume()):n("Unknown stream")},bn.prototype._multiPartHeader=function(e,n,t){if("string"==typeof t.header)return t.header;var o,i=this._getContentDisposition(n,t),a=this._getContentType(n,t),s="",r={"Content-Disposition":["form-data",'name="'+e+'"'].concat(i||[]),"Content-Type":[].concat(a||[])};for(var c in"object"==typeof t.header&&hn(r,t.header),r)r.hasOwnProperty(c)&&null!=(o=r[c])&&(Array.isArray(o)||(o=[o]),o.length&&(s+=c+": "+o.join("; ")+bn.LINE_BREAK));return"--"+this.getBoundary()+bn.LINE_BREAK+s+bn.LINE_BREAK},bn.prototype._getContentDisposition=function(e,n){var t,o;return"string"==typeof n.filepath?t=v.normalize(n.filepath).replace(/\\/g,"/"):n.filename||e.name||e.path?t=v.basename(n.filename||e.name||e.path):e.readable&&e.hasOwnProperty("httpVersion")&&(t=v.basename(e.client._httpMessage.path||"")),t&&(o='filename="'+t+'"'),o},bn.prototype._getContentType=function(e,n){var t=n.contentType;return!t&&e.name&&(t=an.lookup(e.name)),!t&&e.path&&(t=an.lookup(e.path)),!t&&e.readable&&e.hasOwnProperty("httpVersion")&&(t=e.headers["content-type"]),t||!n.filepath&&!n.filename||(t=an.lookup(n.filepath||n.filename)),t||"object"!=typeof e||(t=bn.DEFAULT_CONTENT_TYPE),t},bn.prototype._multiPartFooter=function(){return function(e){var n=bn.LINE_BREAK;0===this._streams.length&&(n+=this._lastBoundary()),e(n)}.bind(this)},bn.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+bn.LINE_BREAK},bn.prototype.getHeaders=function(e){var n,t={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t},bn.prototype.setBoundary=function(e){this._boundary=e},bn.prototype.getBoundary=function(){return this._boundary||this._generateBoundary(),this._boundary},bn.prototype.getBuffer=function(){for(var e=new Buffer.alloc(0),n=this.getBoundary(),t=0,o=this._streams.length;t<o;t++)"function"!=typeof this._streams[t]&&(e=Buffer.isBuffer(this._streams[t])?Buffer.concat([e,this._streams[t]]):Buffer.concat([e,Buffer.from(this._streams[t])]),"string"==typeof this._streams[t]&&this._streams[t].substring(2,n.length+2)===n||(e=Buffer.concat([e,Buffer.from(bn.LINE_BREAK)])));return Buffer.concat([e,Buffer.from(this._lastBoundary())])},bn.prototype._generateBoundary=function(){for(var e="--------------------------",n=0;n<24;n++)e+=Math.floor(10*Math.random()).toString(16);this._boundary=e},bn.prototype.getLengthSync=function(){var e=this._overheadLength+this._valueLength;return this._streams.length&&(e+=this._lastBoundary().length),this.hasKnownLength()||this._error(new Error("Cannot calculate proper length in synchronous way.")),e},bn.prototype.hasKnownLength=function(){var e=!0;return this._valuesToMeasure.length&&(e=!1),e},bn.prototype.getLength=function(e){var n=this._overheadLength+this._valueLength;this._streams.length&&(n+=this._lastBoundary().length),this._valuesToMeasure.length?function(e,n,t){for(var o=un(e);o.index<(o.keyedList||e).length;)pn(e,n,o,function(e,n){e?t(e,n):0!==Object.keys(o.jobs).length||t(null,o.results)}),o.index++;dn.bind(o,t)}(this._valuesToMeasure,this._lengthRetriever,function(t,o){t?e(t):(o.forEach(function(e){n+=e}),e(null,n))}):process.nextTick(e.bind(this,null,n))},bn.prototype.submit=function(e,n){var t,o,i={method:"post"};return"string"==typeof e?(e=gn(e),o=hn({port:e.port,path:e.pathname,host:e.hostname,protocol:e.protocol},i)):(o=hn(e,i)).port||(o.port="https:"==o.protocol?443:80),o.headers=this.getHeaders(e.headers),t="https:"==o.protocol?_.request(o):w.request(o),this.getLength(function(e,o){if(e&&"Unknown stream"!==e)this._error(e);else if(o&&t.setHeader("Content-Length",o),this.pipe(t),n){var i,a=function(e,o){return t.removeListener("error",a),t.removeListener("response",i),n.call(this,e,o)};i=a.bind(this,null),t.on("error",a),t.on("response",i)}}.bind(this)),t},bn.prototype._error=function(e){this.error||(this.error=e,this.pause(),this.emit("error",e))},bn.prototype.toString=function(){return"[object FormData]"};var yn=xn;function wn(e){return Ge.isPlainObject(e)||Ge.isArray(e)}function _n(e){return Ge.endsWith(e,"[]")?e.slice(0,-2):e}function kn(e,n,t){return e?e.concat(n).map(function(e,n){return e=_n(e),!t&&n?"["+e+"]":e}).join(t?".":""):n}const jn=Ge.toFlatObject(Ge,{},null,function(e){return/^is[A-Z]/.test(e)});function Sn(e,n,t){if(!Ge.isObject(e))throw new TypeError("target must be an object");n=n||new(yn||FormData);const o=(t=Ge.toFlatObject(t,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,n){return!Ge.isUndefined(n[e])})).metaTokens,i=t.visitor||l,a=t.dots,s=t.indexes,r=(t.Blob||"undefined"!=typeof Blob&&Blob)&&Ge.isSpecCompliantForm(n);if(!Ge.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Ge.isDate(e))return e.toISOString();if(!r&&Ge.isBlob(e))throw new He("Blob is not supported. Use a Buffer instead.");return Ge.isArrayBuffer(e)||Ge.isTypedArray(e)?r&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,t,i){let r=e;if(e&&!i&&"object"==typeof e)if(Ge.endsWith(t,"{}"))t=o?t:t.slice(0,-2),e=JSON.stringify(e);else if(Ge.isArray(e)&&function(e){return Ge.isArray(e)&&!e.some(wn)}(e)||(Ge.isFileList(e)||Ge.endsWith(t,"[]"))&&(r=Ge.toArray(e)))return t=_n(t),r.forEach(function(e,o){!Ge.isUndefined(e)&&null!==e&&n.append(!0===s?kn([t],o,a):null===s?t:t+"[]",c(e))}),!1;return!!wn(e)||(n.append(kn(i,t,a),c(e)),!1)}const p=[],u=Object.assign(jn,{defaultVisitor:l,convertValue:c,isVisitable:wn});if(!Ge.isObject(e))throw new TypeError("data must be an object");return function e(t,o){if(!Ge.isUndefined(t)){if(-1!==p.indexOf(t))throw Error("Circular reference detected in "+o.join("."));p.push(t),Ge.forEach(t,function(t,a){!0===(!(Ge.isUndefined(t)||null===t)&&i.call(n,t,Ge.isString(a)?a.trim():a,o,u))&&e(t,o?o.concat(a):[a])}),p.pop()}}(e),n}function Tn(e){const n={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return n[e]})}function $n(e,n){this._pairs=[],e&&Sn(e,this,n)}const En=$n.prototype;function Cn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function On(e,n,t){if(!n)return e;const o=t&&t.encode||Cn,i=t&&t.serialize;let a;if(a=i?i(n,t):Ge.isURLSearchParams(n)?n.toString():new $n(n,t).toString(o),a){const n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e}En.append=function(e,n){this._pairs.push([e,n])},En.toString=function(e){const n=e?function(n){return e.call(this,n,Tn)}:Tn;return this._pairs.map(function(e){return n(e[0])+"="+n(e[1])},"").join("&")};var Rn=class{constructor(){this.handlers=[]}use(e,n,t){return this.handlers.push({fulfilled:e,rejected:n,synchronous:!!t&&t.synchronous,runWhen:t?t.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Ge.forEach(this.handlers,function(n){null!==n&&e(n)})}},zn={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Nn={isNode:!0,classes:{URLSearchParams:k.URLSearchParams,FormData:yn,Blob:"undefined"!=typeof Blob&&Blob||null},protocols:["http","https","file","data"]};const An="undefined"!=typeof window&&"undefined"!=typeof document,Fn=(Ln="undefined"!=typeof navigator&&navigator.product,An&&["ReactNative","NativeScript","NS"].indexOf(Ln)<0);var Ln,Un={__proto__:null,hasBrowserEnv:An,hasStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,hasStandardBrowserEnv:Fn,origin:An&&window.location.href||"http://localhost",...Nn};function In(e){function n(e,t,o,i){let a=e[i++];if("__proto__"===a)return!0;const s=Number.isFinite(+a),r=i>=e.length;return a=!a&&Ge.isArray(o)?o.length:a,r?(o[a]=Ge.hasOwnProp(o,a)?[o[a],t]:t,!s):(o[a]&&Ge.isObject(o[a])||(o[a]=[]),n(e,t,o[a],i)&&Ge.isArray(o[a])&&(o[a]=function(e){const n={},t=Object.keys(e);let o;const i=t.length;let a;for(o=0;o<i;o++)a=t[o],n[a]=e[a];return n}(o[a])),!s)}if(Ge.isFormData(e)&&Ge.isFunction(e.entries)){const t={};return Ge.forEachEntry(e,(e,o)=>{n(function(e){return Ge.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),o,t,0)}),t}return null}const qn={transitional:zn,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const t=n.getContentType()||"",o=t.indexOf("application/json")>-1,i=Ge.isObject(e);if(i&&Ge.isHTMLForm(e)&&(e=new FormData(e)),Ge.isFormData(e))return o?JSON.stringify(In(e)):e;if(Ge.isArrayBuffer(e)||Ge.isBuffer(e)||Ge.isStream(e)||Ge.isFile(e)||Ge.isBlob(e)||Ge.isReadableStream(e))return e;if(Ge.isArrayBufferView(e))return e.buffer;if(Ge.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(i){if(t.indexOf("application/x-www-form-urlencoded")>-1)return function(e,n){return Sn(e,new Un.classes.URLSearchParams,Object.assign({visitor:function(e,n,t,o){return Un.isNode&&Ge.isBuffer(e)?(this.append(n,e.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},n))}(e,this.formSerializer).toString();if((a=Ge.isFileList(e))||t.indexOf("multipart/form-data")>-1){const n=this.env&&this.env.FormData;return Sn(a?{"files[]":e}:e,n&&new n,this.formSerializer)}}return i||o?(n.setContentType("application/json",!1),function(e,n,t){if(Ge.isString(e))try{return(0,JSON.parse)(e),Ge.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const n=this.transitional||qn.transitional,t=n&&n.forcedJSONParsing,o="json"===this.responseType;if(Ge.isResponse(e)||Ge.isReadableStream(e))return e;if(e&&Ge.isString(e)&&(t&&!this.responseType||o)){const t=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(e)}catch(e){if(t){if("SyntaxError"===e.name)throw He.from(e,He.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Un.classes.FormData,Blob:Un.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Ge.forEach(["delete","get","head","post","put","patch"],e=>{qn.headers[e]={}});var Pn=qn;const Bn=Ge.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Dn=Symbol("internals");function Mn(e){return e&&String(e).trim().toLowerCase()}function Wn(e){return!1===e||null==e?e:Ge.isArray(e)?e.map(Wn):String(e)}function Gn(e,n,t,o,i){return Ge.isFunction(o)?o.call(this,n,t):(i&&(n=t),Ge.isString(n)?Ge.isString(o)?-1!==n.indexOf(o):Ge.isRegExp(o)?o.test(n):void 0:void 0)}class Hn{constructor(e){e&&this.set(e)}set(e,n,t){const o=this;function i(e,n,t){const i=Mn(n);if(!i)throw new Error("header name must be a non-empty string");const a=Ge.findKey(o,i);(!a||void 0===o[a]||!0===t||void 0===t&&!1!==o[a])&&(o[a||n]=Wn(e))}const a=(e,n)=>Ge.forEach(e,(e,t)=>i(e,t,n));if(Ge.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(Ge.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))a((e=>{const n={};let t,o,i;return e&&e.split("\n").forEach(function(e){i=e.indexOf(":"),t=e.substring(0,i).trim().toLowerCase(),o=e.substring(i+1).trim(),!t||n[t]&&Bn[t]||("set-cookie"===t?n[t]?n[t].push(o):n[t]=[o]:n[t]=n[t]?n[t]+", "+o:o)}),n})(e),n);else if(Ge.isHeaders(e))for(const[n,o]of e.entries())i(o,n,t);else null!=e&&i(n,e,t);return this}get(e,n){if(e=Mn(e)){const t=Ge.findKey(this,e);if(t){const e=this[t];if(!n)return e;if(!0===n)return function(e){const n=Object.create(null),t=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let o;for(;o=t.exec(e);)n[o[1]]=o[2];return n}(e);if(Ge.isFunction(n))return n.call(this,e,t);if(Ge.isRegExp(n))return n.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Mn(e)){const t=Ge.findKey(this,e);return!(!t||void 0===this[t]||n&&!Gn(0,this[t],t,n))}return!1}delete(e,n){const t=this;let o=!1;function i(e){if(e=Mn(e)){const i=Ge.findKey(t,e);!i||n&&!Gn(0,t[i],i,n)||(delete t[i],o=!0)}}return Ge.isArray(e)?e.forEach(i):i(e),o}clear(e){const n=Object.keys(this);let t=n.length,o=!1;for(;t--;){const i=n[t];e&&!Gn(0,this[i],i,e,!0)||(delete this[i],o=!0)}return o}normalize(e){const n=this,t={};return Ge.forEach(this,(o,i)=>{const a=Ge.findKey(t,i);if(a)return n[a]=Wn(o),void delete n[i];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,t)=>n.toUpperCase()+t)}(i):String(i).trim();s!==i&&delete n[i],n[s]=Wn(o),t[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return Ge.forEach(this,(t,o)=>{null!=t&&!1!==t&&(n[o]=e&&Ge.isArray(t)?t.join(", "):t)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const t=new this(e);return n.forEach(e=>t.set(e)),t}static accessor(e){const n=(this[Dn]=this[Dn]={accessors:{}}).accessors,t=this.prototype;function o(e){const o=Mn(e);n[o]||(function(e,n){const t=Ge.toCamelCase(" "+n);["get","set","has"].forEach(o=>{Object.defineProperty(e,o+t,{value:function(e,t,i){return this[o].call(this,n,e,t,i)},configurable:!0})})}(t,e),n[o]=!0)}return Ge.isArray(e)?e.forEach(o):o(e),this}}Hn.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Ge.reduceDescriptors(Hn.prototype,({value:e},n)=>{let t=n[0].toUpperCase()+n.slice(1);return{get:()=>e,set(e){this[t]=e}}}),Ge.freezeMethods(Hn);var Jn=Hn;function Kn(e,n){const t=this||Pn,o=n||t,i=Jn.from(o.headers);let a=o.data;return Ge.forEach(e,function(e){a=e.call(t,a,i.normalize(),n?n.status:void 0)}),i.normalize(),a}function Vn(e){return!(!e||!e.__CANCEL__)}function Yn(e,n,t){He.call(this,null==e?"canceled":e,He.ERR_CANCELED,n,t),this.name="CanceledError"}function Qn(e,n,t){const o=t.config.validateStatus;t.status&&o&&!o(t.status)?n(new He("Request failed with status code "+t.status,[He.ERR_BAD_REQUEST,He.ERR_BAD_RESPONSE][Math.floor(t.status/100)-4],t.config,t.request,t)):e(t)}function Zn(e,n){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(n)?function(e,n){return n?e.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):e}(e,n):n}Ge.inherits(Yn,He,{__CANCEL__:!0});var Xn=k.parse,et={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443},nt=String.prototype.endsWith||function(e){return e.length<=this.length&&-1!==this.indexOf(e,this.length-e.length)};function tt(e){return process.env[e.toLowerCase()]||process.env[e.toUpperCase()]||""}var ot=1e3,it=60*ot,at=60*it,st=24*at,rt=7*st,ct=function(e,n){n=n||{};var t=typeof e;if("string"===t&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var n=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(n){var t=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*t;case"weeks":case"week":case"w":return t*rt;case"days":case"day":case"d":return t*st;case"hours":case"hour":case"hrs":case"hr":case"h":return t*at;case"minutes":case"minute":case"mins":case"min":case"m":return t*it;case"seconds":case"second":case"secs":case"sec":case"s":return t*ot;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}(e);if("number"===t&&isFinite(e))return n.long?function(e){var n=Math.abs(e);return n>=st?lt(e,n,st,"day"):n>=at?lt(e,n,at,"hour"):n>=it?lt(e,n,it,"minute"):n>=ot?lt(e,n,ot,"second"):e+" ms"}(e):function(e){var n=Math.abs(e);return n>=st?Math.round(e/st)+"d":n>=at?Math.round(e/at)+"h":n>=it?Math.round(e/it)+"m":n>=ot?Math.round(e/ot)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function lt(e,n,t,o){var i=n>=1.5*t;return Math.round(e/t)+" "+o+(i?"s":"")}var pt=function(e){function n(e){let o,i,a,s=null;function r(...e){if(!r.enabled)return;const t=r,i=Number(new Date);t.diff=i-(o||i),t.prev=o,t.curr=i,o=i,e[0]=n.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(o,i)=>{if("%%"===o)return"%";a++;const s=n.formatters[i];return"function"==typeof s&&(o=s.call(t,e[a]),e.splice(a,1),a--),o}),n.formatArgs.call(t,e),(t.log||n.log).apply(t,e)}return r.namespace=e,r.useColors=n.useColors(),r.color=n.selectColor(e),r.extend=t,r.destroy=n.destroy,Object.defineProperty(r,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(i!==n.namespaces&&(i=n.namespaces,a=n.enabled(e)),a),set:e=>{s=e}}),"function"==typeof n.init&&n.init(r),r}function t(e,t){const o=n(this.namespace+(void 0===t?":":t)+e);return o.log=this.log,o}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return n.debug=n,n.default=n,n.coerce=function(e){return e instanceof Error?e.stack||e.message:e},n.disable=function(){const e=[...n.names.map(o),...n.skips.map(o).map(e=>"-"+e)].join(",");return n.enable(""),e},n.enable=function(e){let t;n.save(e),n.namespaces=e,n.names=[],n.skips=[];const o=("string"==typeof e?e:"").split(/[\s,]+/),i=o.length;for(t=0;t<i;t++)o[t]&&("-"===(e=o[t].replace(/\*/g,".*?"))[0]?n.skips.push(new RegExp("^"+e.slice(1)+"$")):n.names.push(new RegExp("^"+e+"$")))},n.enabled=function(e){if("*"===e[e.length-1])return!0;let t,o;for(t=0,o=n.skips.length;t<o;t++)if(n.skips[t].test(e))return!1;for(t=0,o=n.names.length;t<o;t++)if(n.names[t].test(e))return!0;return!1},n.humanize=ct,n.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={},n.selectColor=function(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return n.colors[Math.abs(t)%n.colors.length]},n.enable(n.load()),n},ut=tn(function(e,n){n.formatArgs=function(n){if(n[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+n[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const t="color: "+this.color;n.splice(1,0,t,"color: inherit");let o=0,i=0;n[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(o++,"%c"===e&&(i=o))}),n.splice(i,0,t)},n.save=function(e){try{e?n.storage.setItem("debug",e):n.storage.removeItem("debug")}catch(e){}},n.load=function(){let e;try{e=n.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},n.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},n.storage=function(){try{return localStorage}catch(e){}}(),n.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),n.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],n.log=console.debug||console.log||(()=>{}),e.exports=pt(n);const{formatters:t}=e.exports;t.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}),dt=(e,n=process.argv)=>{const t=e.startsWith("-")?"":1===e.length?"-":"--",o=n.indexOf(t+e),i=n.indexOf("--");return-1!==o&&(-1===i||o<i)};const{env:mt}=process;let ft;function ht(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function gt(e,n){if(0===ft)return 0;if(dt("color=16m")||dt("color=full")||dt("color=truecolor"))return 3;if(dt("color=256"))return 2;if(e&&!n&&void 0===ft)return 0;const t=ft||0;if("dumb"===mt.TERM)return t;if("win32"===process.platform){const e=T.release().split(".");return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in mt)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(e=>e in mt)||"codeship"===mt.CI_NAME?1:t;if("TEAMCITY_VERSION"in mt)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(mt.TEAMCITY_VERSION)?1:0;if("truecolor"===mt.COLORTERM)return 3;if("TERM_PROGRAM"in mt){const e=parseInt((mt.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(mt.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(mt.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(mt.TERM)||"COLORTERM"in mt?1:t}dt("no-color")||dt("no-colors")||dt("color=false")||dt("color=never")?ft=0:(dt("color")||dt("colors")||dt("color=true")||dt("color=always"))&&(ft=1),"FORCE_COLOR"in mt&&(ft="true"===mt.FORCE_COLOR?1:"false"===mt.FORCE_COLOR?0:0===mt.FORCE_COLOR.length?1:Math.min(parseInt(mt.FORCE_COLOR,10),3));var vt,xt={supportsColor:function(e){return ht(gt(e,e&&e.isTTY))},stdout:ht(gt(!0,S.isatty(1))),stderr:ht(gt(!0,S.isatty(2)))},bt=tn(function(e,n){n.init=function(e){e.inspectOpts={};const t=Object.keys(n.inspectOpts);for(let o=0;o<t.length;o++)e.inspectOpts[t[o]]=n.inspectOpts[t[o]]},n.log=function(...e){return process.stderr.write(m.format(...e)+"\n")},n.formatArgs=function(t){const{namespace:o,useColors:i}=this;if(i){const n=this.color,i="[3"+(n<8?n:"8;5;"+n),a=` ${i};1m${o} [0m`;t[0]=a+t[0].split("\n").join("\n"+a),t.push(i+"m+"+e.exports.humanize(this.diff)+"[0m")}else t[0]=(n.inspectOpts.hideDate?"":(new Date).toISOString()+" ")+o+" "+t[0]},n.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},n.load=function(){return process.env.DEBUG},n.useColors=function(){return"colors"in n.inspectOpts?Boolean(n.inspectOpts.colors):S.isatty(process.stderr.fd)},n.destroy=m.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),n.colors=[6,2,3,4,5,1];try{xt&&(xt.stderr||xt).level>=2&&(n.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}n.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,n)=>{const t=n.substring(6).toLowerCase().replace(/_([a-z])/g,(e,n)=>n.toUpperCase());let o=process.env[n];return o=!!/^(yes|on|true|enabled)$/i.test(o)||!/^(no|off|false|disabled)$/i.test(o)&&("null"===o?null:Number(o)),e[t]=o,e},{}),e.exports=pt(n);const{formatters:t}=e.exports;t.o=function(e){return this.inspectOpts.colors=this.useColors,m.inspect(e,this.inspectOpts).split("\n").map(e=>e.trim()).join(" ")},t.O=function(e){return this.inspectOpts.colors=this.useColors,m.inspect(e,this.inspectOpts)}}),yt=tn(function(e){e.exports="undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?ut:bt}),wt=function(){if(!vt){try{vt=yt("follow-redirects")}catch(e){}"function"!=typeof vt&&(vt=function(){})}vt.apply(null,arguments)},_t=k.URL,kt=h.Writable,jt=!1;try{j(new _t)}catch(e){jt="ERR_INVALID_URL"===e.code}var St=["auth","host","hostname","href","path","pathname","port","protocol","query","search","hash"],Tt=["abort","aborted","connect","error","socket","timeout"],$t=Object.create(null);Tt.forEach(function(e){$t[e]=function(n,t,o){this._redirectable.emit(e,n,t,o)}});var Et=Bt("ERR_INVALID_URL","Invalid URL",TypeError),Ct=Bt("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),Ot=Bt("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded",Ct),Rt=Bt("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),zt=Bt("ERR_STREAM_WRITE_AFTER_END","write after end"),Nt=kt.prototype.destroy||Lt;function At(e,n){kt.call(this),this._sanitizeOptions(e),this._options=e,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],n&&this.on("response",n);var t=this;this._onNativeResponse=function(e){try{t._processResponse(e)}catch(e){t.emit("error",e instanceof Ct?e:new Ct({cause:e}))}},this._performRequest()}function Ft(e){var n={maxRedirects:21,maxBodyLength:10485760},t={};return Object.keys(e).forEach(function(o){var i=o+":",a=t[i]=e[o],s=n[o]=Object.create(a);Object.defineProperties(s,{request:{value:function(e,o,a){return _t&&e instanceof _t?e=qt(e):Mt(e)?e=qt(Ut(e)):(a=o,o=It(e),e={protocol:i}),Wt(o)&&(a=o,o=null),(o=Object.assign({maxRedirects:n.maxRedirects,maxBodyLength:n.maxBodyLength},e,o)).nativeProtocols=t,Mt(o.host)||Mt(o.hostname)||(o.hostname="::1"),j.equal(o.protocol,i,"protocol mismatch"),wt("options",o),new At(o,a)},configurable:!0,enumerable:!0,writable:!0},get:{value:function(e,n,t){var o=s.request(e,n,t);return o.end(),o},configurable:!0,enumerable:!0,writable:!0}})}),n}function Lt(){}function Ut(e){var n;if(jt)n=new _t(e);else if(!Mt((n=It(k.parse(e))).protocol))throw new Et({input:e});return n}function It(e){if(/^\[/.test(e.hostname)&&!/^\[[:0-9a-f]+\]$/i.test(e.hostname))throw new Et({input:e.href||e});if(/^\[/.test(e.host)&&!/^\[[:0-9a-f]+\](:\d+)?$/i.test(e.host))throw new Et({input:e.href||e});return e}function qt(e,n){var t=n||{};for(var o of St)t[o]=e[o];return t.hostname.startsWith("[")&&(t.hostname=t.hostname.slice(1,-1)),""!==t.port&&(t.port=Number(t.port)),t.path=t.search?t.pathname+t.search:t.pathname,t}function Pt(e,n){var t;for(var o in n)e.test(o)&&(t=n[o],delete n[o]);return null==t?void 0:String(t).trim()}function Bt(e,n,t){function o(t){Error.captureStackTrace(this,this.constructor),Object.assign(this,t||{}),this.code=e,this.message=this.cause?n+": "+this.cause.message:n}return o.prototype=new(t||Error),Object.defineProperties(o.prototype,{constructor:{value:o,enumerable:!1},name:{value:"Error ["+e+"]",enumerable:!1}}),o}function Dt(e,n){for(var t of Tt)e.removeListener(t,$t[t]);e.on("error",Lt),e.destroy(n)}function Mt(e){return"string"==typeof e||e instanceof String}function Wt(e){return"function"==typeof e}(At.prototype=Object.create(kt.prototype)).abort=function(){Dt(this._currentRequest),this._currentRequest.abort(),this.emit("abort")},At.prototype.destroy=function(e){return Dt(this._currentRequest,e),Nt.call(this,e),this},At.prototype.write=function(e,n,t){if(this._ending)throw new zt;if(!(Mt(e)||"object"==typeof(o=e)&&"length"in o))throw new TypeError("data should be a string, Buffer or Uint8Array");var o;Wt(n)&&(t=n,n=null),0!==e.length?this._requestBodyLength+e.length<=this._options.maxBodyLength?(this._requestBodyLength+=e.length,this._requestBodyBuffers.push({data:e,encoding:n}),this._currentRequest.write(e,n,t)):(this.emit("error",new Rt),this.abort()):t&&t()},At.prototype.end=function(e,n,t){if(Wt(e)?(t=e,e=n=null):Wt(n)&&(t=n,n=null),e){var o=this,i=this._currentRequest;this.write(e,n,function(){o._ended=!0,i.end(null,null,t)}),this._ending=!0}else this._ended=this._ending=!0,this._currentRequest.end(null,null,t)},At.prototype.setHeader=function(e,n){this._options.headers[e]=n,this._currentRequest.setHeader(e,n)},At.prototype.removeHeader=function(e){delete this._options.headers[e],this._currentRequest.removeHeader(e)},At.prototype.setTimeout=function(e,n){var t=this;function o(n){n.setTimeout(e),n.removeListener("timeout",n.destroy),n.addListener("timeout",n.destroy)}function i(n){t._timeout&&clearTimeout(t._timeout),t._timeout=setTimeout(function(){t.emit("timeout"),a()},e),o(n)}function a(){t._timeout&&(clearTimeout(t._timeout),t._timeout=null),t.removeListener("abort",a),t.removeListener("error",a),t.removeListener("response",a),t.removeListener("close",a),n&&t.removeListener("timeout",n),t.socket||t._currentRequest.removeListener("socket",i)}return n&&this.on("timeout",n),this.socket?i(this.socket):this._currentRequest.once("socket",i),this.on("socket",o),this.on("abort",a),this.on("error",a),this.on("response",a),this.on("close",a),this},["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(e){At.prototype[e]=function(n,t){return this._currentRequest[e](n,t)}}),["aborted","connection","socket"].forEach(function(e){Object.defineProperty(At.prototype,e,{get:function(){return this._currentRequest[e]}})}),At.prototype._sanitizeOptions=function(e){if(e.headers||(e.headers={}),e.host&&(e.hostname||(e.hostname=e.host),delete e.host),!e.pathname&&e.path){var n=e.path.indexOf("?");n<0?e.pathname=e.path:(e.pathname=e.path.substring(0,n),e.search=e.path.substring(n))}},At.prototype._performRequest=function(){var e=this._options.protocol,n=this._options.nativeProtocols[e];if(!n)throw new TypeError("Unsupported protocol "+e);if(this._options.agents){var t=e.slice(0,-1);this._options.agent=this._options.agents[t]}var o=this._currentRequest=n.request(this._options,this._onNativeResponse);for(var i of(o._redirectable=this,Tt))o.on(i,$t[i]);if(this._currentUrl=/^\//.test(this._options.path)?k.format(this._options):this._options.path,this._isRedirect){var a=0,s=this,r=this._requestBodyBuffers;!function e(n){if(o===s._currentRequest)if(n)s.emit("error",n);else if(a<r.length){var t=r[a++];o.finished||o.write(t.data,t.encoding,e)}else s._ended&&o.end()}()}},At.prototype._processResponse=function(e){var n=e.statusCode;this._options.trackRedirects&&this._redirects.push({url:this._currentUrl,headers:e.headers,statusCode:n});var t,o=e.headers.location;if(!o||!1===this._options.followRedirects||n<300||n>=400)return e.responseUrl=this._currentUrl,e.redirects=this._redirects,this.emit("response",e),void(this._requestBodyBuffers=[]);if(Dt(this._currentRequest),e.destroy(),++this._redirectCount>this._options.maxRedirects)throw new Ot;var i=this._options.beforeRedirect;i&&(t=Object.assign({Host:e.req.getHeader("host")},this._options.headers));var a=this._options.method;((301===n||302===n)&&"POST"===this._options.method||303===n&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],Pt(/^content-/i,this._options.headers));var s=Pt(/^host$/i,this._options.headers),r=Ut(this._currentUrl),c=s||r.host,l=/^\w+:/.test(o)?this._currentUrl:k.format(Object.assign(r,{host:c})),p=function(e,n){return jt?new _t(e,n):Ut(k.resolve(n,e))}(o,l);wt("redirecting to",p.href),this._isRedirect=!0,qt(p,this._options),(p.protocol!==r.protocol&&"https:"!==p.protocol||p.host!==c&&!function(e,n){j(Mt(e)&&Mt(n));var t=e.length-n.length-1;return t>0&&"."===e[t]&&e.endsWith(n)}(p.host,c))&&Pt(/^(?:(?:proxy-)?authorization|cookie)$/i,this._options.headers),Wt(i)&&(i(this._options,{headers:e.headers,statusCode:n},{url:l,method:a,headers:t}),this._sanitizeOptions(this._options)),this._performRequest()};var Gt=Ft({http:w,https:_});Gt.wrap=Ft;const Ht="1.7.4";function Jt(e){const n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return n&&n[1]||""}const Kt=/^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/,Vt=Symbol("internals");var Yt=class extends h.Transform{constructor(e){super({readableHighWaterMark:(e=Ge.toFlatObject(e,{maxRate:0,chunkSize:65536,minChunkSize:100,timeWindow:500,ticksRate:2,samplesCount:15},null,(e,n)=>!Ge.isUndefined(n[e]))).chunkSize});const n=this[Vt]={timeWindow:e.timeWindow,chunkSize:e.chunkSize,maxRate:e.maxRate,minChunkSize:e.minChunkSize,bytesSeen:0,isCaptured:!1,notifiedBytesLoaded:0,ts:Date.now(),bytes:0,onReadCallback:null};this.on("newListener",e=>{"progress"===e&&(n.isCaptured||(n.isCaptured=!0))})}_read(e){const n=this[Vt];return n.onReadCallback&&n.onReadCallback(),super._read(e)}_transform(e,n,t){const o=this[Vt],i=o.maxRate,a=this.readableHighWaterMark,s=o.timeWindow,r=i/(1e3/s),c=!1!==o.minChunkSize?Math.max(o.minChunkSize,.01*r):0,l=(e,n)=>{const t=Buffer.byteLength(e);o.bytesSeen+=t,o.bytes+=t,o.isCaptured&&this.emit("progress",o.bytesSeen),this.push(e)?process.nextTick(n):o.onReadCallback=()=>{o.onReadCallback=null,process.nextTick(n)}},p=(e,n)=>{const t=Buffer.byteLength(e);let p,u=null,d=a,m=0;if(i){const e=Date.now();(!o.ts||(m=e-o.ts)>=s)&&(o.ts=e,p=r-o.bytes,o.bytes=p<0?-p:0,m=0),p=r-o.bytes}if(i){if(p<=0)return setTimeout(()=>{n(null,e)},s-m);p<d&&(d=p)}d&&t>d&&t-d>c&&(u=e.subarray(d),e=e.subarray(0,d)),l(e,u?()=>{process.nextTick(n,null,u)}:n)};p(e,function e(n,o){if(n)return t(n);o?p(o,e):t(null)})}};const{asyncIterator:Qt}=Symbol;var Zt=async function*(e){e.stream?yield*e.stream():e.arrayBuffer?yield await e.arrayBuffer():e[Qt]?yield*e[Qt]():yield e};const Xt=Ge.ALPHABET.ALPHA_DIGIT+"-_",eo=new f,no="\r\n",to=eo.encode(no);class oo{constructor(e,n){const{escapeName:t}=this.constructor,o=Ge.isString(n);let i=`Content-Disposition: form-data; name="${t(e)}"${!o&&n.name?`; filename="${t(n.name)}"`:""}${no}`;o?n=eo.encode(String(n).replace(/\r?\n|\r\n?/g,no)):i+=`Content-Type: ${n.type||"application/octet-stream"}${no}`,this.headers=eo.encode(i+no),this.contentLength=o?n.byteLength:n.size,this.size=this.headers.byteLength+this.contentLength+2,this.name=e,this.value=n}async*encode(){yield this.headers;const{value:e}=this;Ge.isTypedArray(e)?yield e:yield*Zt(e),yield to}static escapeName(e){return String(e).replace(/[\r\n"]/g,e=>({"\r":"%0D","\n":"%0A",'"':"%22"}[e]))}}var io=class extends h.Transform{__transform(e,n,t){this.push(e),t()}_transform(e,n,t){if(0!==e.length&&(this._transform=this.__transform,120!==e[0])){const e=Buffer.alloc(2);e[0]=120,e[1]=156,this.push(e,n)}this.__transform(e,n,t)}},ao=(e,n)=>Ge.isAsyncFn(e)?function(...t){const o=t.pop();e.apply(this,t).then(e=>{try{n?o(null,...n(e)):o(null,e)}catch(e){o(e)}},o)}:e;const so=(e,n,t=3)=>{let o=0;const i=function(e,n){e=e||10;const t=new Array(e),o=new Array(e);let i,a=0,s=0;return n=void 0!==n?n:1e3,function(r){const c=Date.now(),l=o[s];i||(i=c),t[a]=r,o[a]=c;let p=s,u=0;for(;p!==a;)u+=t[p++],p%=e;if(a=(a+1)%e,a===s&&(s=(s+1)%e),c-i<n)return;const d=l&&c-l;return d?Math.round(1e3*u/d):void 0}}(50,250);return function(e,n){let t,o,i=0,a=1e3/n;const s=(n,a=Date.now())=>{i=a,t=null,o&&(clearTimeout(o),o=null),e.apply(null,n)};return[(...e)=>{const n=Date.now(),r=n-i;r>=a?s(e,n):(t=e,o||(o=setTimeout(()=>{o=null,s(t)},a-r)))},()=>t&&s(t)]}(t=>{const a=t.loaded,s=t.lengthComputable?t.total:void 0,r=a-o,c=i(r);o=a,e({loaded:a,total:s,progress:s?a/s:void 0,bytes:r,rate:c||void 0,estimated:c&&s&&a<=s?(s-a)/c:void 0,event:t,lengthComputable:null!=s,[n?"download":"upload"]:!0})},t)},ro=(e,n)=>{const t=null!=e;return[o=>n[0]({lengthComputable:t,total:e,loaded:o}),n[1]]},co=e=>(...n)=>Ge.asap(()=>e(...n)),lo={flush:E.constants.Z_SYNC_FLUSH,finishFlush:E.constants.Z_SYNC_FLUSH},po={flush:E.constants.BROTLI_OPERATION_FLUSH,finishFlush:E.constants.BROTLI_OPERATION_FLUSH},uo=Ge.isFunction(E.createBrotliDecompress),{http:mo,https:fo}=Gt,ho=/https:?/,go=Un.protocols.map(e=>e+":"),vo=(e,[n,t])=>(e.on("end",t).on("error",t),n);function xo(e,n){e.beforeRedirects.proxy&&e.beforeRedirects.proxy(e),e.beforeRedirects.config&&e.beforeRedirects.config(e,n)}function bo(e,n,t){let o=n;if(!o&&!1!==o){const e=function(e){var n="string"==typeof e?Xn(e):e||{},t=n.protocol,o=n.host,i=n.port;if("string"!=typeof o||!o||"string"!=typeof t)return"";if(t=t.split(":",1)[0],!function(e,n){var t=(tt("npm_config_no_proxy")||tt("no_proxy")).toLowerCase();return!t||"*"!==t&&t.split(/[,\s]/).every(function(t){if(!t)return!0;var o=t.match(/^(.+):(\d+)$/),i=o?o[1]:t,a=o?parseInt(o[2]):0;return!(!a||a===n)||(/^[.*]/.test(i)?("*"===i.charAt(0)&&(i=i.slice(1)),!nt.call(e,i)):e!==i)})}(o=o.replace(/:\d*$/,""),i=parseInt(i)||et[t]||0))return"";var a=tt("npm_config_"+t+"_proxy")||tt(t+"_proxy")||tt("npm_config_proxy")||tt("all_proxy");return a&&-1===a.indexOf("://")&&(a=t+"://"+a),a}(t);e&&(o=new URL(e))}if(o){if(o.username&&(o.auth=(o.username||"")+":"+(o.password||"")),o.auth){(o.auth.username||o.auth.password)&&(o.auth=(o.auth.username||"")+":"+(o.auth.password||""));const n=Buffer.from(o.auth,"utf8").toString("base64");e.headers["Proxy-Authorization"]="Basic "+n}e.headers.host=e.hostname+(e.port?":"+e.port:"");const n=o.hostname||o.host;e.hostname=n,e.host=n,e.port=o.port,e.path=t,o.protocol&&(e.protocol=o.protocol.includes(":")?o.protocol:`${o.protocol}:`)}e.beforeRedirects.proxy=function(e){bo(e,n,e.href)}}const yo="undefined"!=typeof process&&"process"===Ge.kindOf(process),wo=(e,n)=>(({address:e,family:n})=>{if(!Ge.isString(e))throw TypeError("address must be a string");return{address:e,family:n||(e.indexOf(".")<0?6:4)}})(Ge.isObject(e)?e:{address:e,family:n});var _o=yo&&function(e){return n=async function(n,t,o){let{data:i,lookup:a,family:s}=e;const{responseType:r,responseEncoding:c}=e,l=e.method.toUpperCase();let p,u,d=!1;if(a){const e=ao(a,e=>Ge.isArray(e)?e:[e]);a=(n,t,o)=>{e(n,t,(e,n,i)=>{if(e)return o(e);const a=Ge.isArray(n)?n.map(e=>wo(e)):[wo(n,i)];t.all?o(e,a):o(e,a[0].address,a[0].family)})}}const f=new C,v=()=>{e.cancelToken&&e.cancelToken.unsubscribe(x),e.signal&&e.signal.removeEventListener("abort",x),f.removeAllListeners()};function x(n){f.emit("abort",!n||n.type?new Yn(null,e,u):n)}o((e,n)=>{p=!0,n&&(d=!0,v())}),f.once("abort",t),(e.cancelToken||e.signal)&&(e.cancelToken&&e.cancelToken.subscribe(x),e.signal&&(e.signal.aborted?x():e.signal.addEventListener("abort",x)));const b=Zn(e.baseURL,e.url),y=new URL(b,Ge.hasBrowserEnv?Un.origin:void 0),k=y.protocol||go[0];if("data:"===k){let o;if("GET"!==l)return Qn(n,t,{status:405,statusText:"method not allowed",headers:{},config:e});try{o=function(e,n,t){const o=t&&t.Blob||Un.classes.Blob,i=Jt(e);if(void 0===n&&o&&(n=!0),"data"===i){e=i.length?e.slice(i.length+1):e;const t=Kt.exec(e);if(!t)throw new He("Invalid URL",He.ERR_INVALID_URL);const a=t[1],s=t[2],r=Buffer.from(decodeURIComponent(t[3]),s?"base64":"utf8");if(n){if(!o)throw new He("Blob is not supported",He.ERR_NOT_SUPPORT);return new o([r],{type:a})}return r}throw new He("Unsupported protocol "+i,He.ERR_NOT_SUPPORT)}(e.url,"blob"===r,{Blob:e.env&&e.env.Blob})}catch(n){throw He.from(n,He.ERR_BAD_REQUEST,e)}return"text"===r?(o=o.toString(c),c&&"utf8"!==c||(o=Ge.stripBOM(o))):"stream"===r&&(o=h.Readable.from(o)),Qn(n,t,{data:o,status:200,statusText:"OK",headers:new Jn,config:e})}if(-1===go.indexOf(k))return t(new He("Unsupported protocol "+k,He.ERR_BAD_REQUEST,e));const j=Jn.from(e.headers).normalize();j.set("User-Agent","axios/"+Ht,!1);const{onUploadProgress:S,onDownloadProgress:T}=e,$=e.maxRate;let O,R;if(Ge.isSpecCompliantForm(i)){const e=j.getContentType(/boundary=([-_\w\d]{10,70})/i);i=((e,n,t)=>{const{tag:o="form-data-boundary",size:i=25,boundary:a=o+"-"+Ge.generateString(i,Xt)}=t||{};if(!Ge.isFormData(e))throw TypeError("FormData instance required");if(a.length<1||a.length>70)throw Error("boundary must be 10-70 characters long");const s=eo.encode("--"+a+no),r=eo.encode("--"+a+"--"+no+no);let c=r.byteLength;const l=Array.from(e.entries()).map(([e,n])=>{const t=new oo(e,n);return c+=t.size,t});c+=s.byteLength*l.length,c=Ge.toFiniteNumber(c);const p={"Content-Type":`multipart/form-data; boundary=${a}`};return Number.isFinite(c)&&(p["Content-Length"]=c),n&&n(p),g.from(async function*(){for(const e of l)yield s,yield*e.encode();yield r}())})(i,e=>{j.set(e)},{tag:`axios-${Ht}-boundary`,boundary:e&&e[1]||void 0})}else if(Ge.isFormData(i)&&Ge.isFunction(i.getHeaders)){if(j.set(i.getHeaders()),!j.hasContentLength())try{const e=await m.promisify(i.getLength).call(i);Number.isFinite(e)&&e>=0&&j.setContentLength(e)}catch(e){}}else if(Ge.isBlob(i))i.size&&j.setContentType(i.type||"application/octet-stream"),j.setContentLength(i.size||0),i=h.Readable.from(Zt(i));else if(i&&!Ge.isStream(i)){if(Buffer.isBuffer(i));else if(Ge.isArrayBuffer(i))i=Buffer.from(new Uint8Array(i));else{if(!Ge.isString(i))return t(new He("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",He.ERR_BAD_REQUEST,e));i=Buffer.from(i,"utf-8")}if(j.setContentLength(i.length,!1),e.maxBodyLength>-1&&i.length>e.maxBodyLength)return t(new He("Request body larger than maxBodyLength limit",He.ERR_BAD_REQUEST,e))}const z=Ge.toFiniteNumber(j.getContentLength());let N,A;Ge.isArray($)?(O=$[0],R=$[1]):O=R=$,i&&(S||O)&&(Ge.isStream(i)||(i=h.Readable.from(i,{objectMode:!1})),i=h.pipeline([i,new Yt({maxRate:Ge.toFiniteNumber(O)})],Ge.noop),S&&i.on("progress",vo(i,ro(z,so(co(S),!1,3))))),e.auth&&(N=(e.auth.username||"")+":"+(e.auth.password||"")),!N&&y.username&&(N=y.username+":"+y.password),N&&j.delete("authorization");try{A=On(y.pathname+y.search,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(n){const o=new Error(n.message);return o.config=e,o.url=e.url,o.exists=!0,t(o)}j.set("Accept-Encoding","gzip, compress, deflate"+(uo?", br":""),!1);const F={path:A,method:l,headers:j.toJSON(),agents:{http:e.httpAgent,https:e.httpsAgent},auth:N,protocol:k,family:s,beforeRedirect:xo,beforeRedirects:{}};let L;!Ge.isUndefined(a)&&(F.lookup=a),e.socketPath?F.socketPath=e.socketPath:(F.hostname=y.hostname,F.port=y.port,bo(F,e.proxy,k+"//"+y.hostname+(y.port?":"+y.port:"")+F.path));const U=ho.test(F.protocol);if(F.agent=U?e.httpsAgent:e.httpAgent,e.transport?L=e.transport:0===e.maxRedirects?L=U?_:w:(e.maxRedirects&&(F.maxRedirects=e.maxRedirects),e.beforeRedirect&&(F.beforeRedirects.config=e.beforeRedirect),L=U?fo:mo),F.maxBodyLength=e.maxBodyLength>-1?e.maxBodyLength:Infinity,e.insecureHTTPParser&&(F.insecureHTTPParser=e.insecureHTTPParser),u=L.request(F,function(o){if(u.destroyed)return;const i=[o],a=+o.headers["content-length"];if(T||R){const e=new Yt({maxRate:Ge.toFiniteNumber(R)});T&&e.on("progress",vo(e,ro(a,so(co(T),!0,3)))),i.push(e)}let s=o;const p=o.req||u;if(!1!==e.decompress&&o.headers["content-encoding"])switch("HEAD"!==l&&204!==o.statusCode||delete o.headers["content-encoding"],(o.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":i.push(E.createUnzip(lo)),delete o.headers["content-encoding"];break;case"deflate":i.push(new io),i.push(E.createUnzip(lo)),delete o.headers["content-encoding"];break;case"br":uo&&(i.push(E.createBrotliDecompress(po)),delete o.headers["content-encoding"])}s=i.length>1?h.pipeline(i,Ge.noop):i[0];const m=h.finished(s,()=>{m(),v()}),g={status:o.statusCode,statusText:o.statusMessage,headers:new Jn(o.headers),config:e,request:p};if("stream"===r)g.data=s,Qn(n,t,g);else{const o=[];let i=0;s.on("data",function(n){o.push(n),i+=n.length,e.maxContentLength>-1&&i>e.maxContentLength&&(d=!0,s.destroy(),t(new He("maxContentLength size of "+e.maxContentLength+" exceeded",He.ERR_BAD_RESPONSE,e,p)))}),s.on("aborted",function(){if(d)return;const n=new He("maxContentLength size of "+e.maxContentLength+" exceeded",He.ERR_BAD_RESPONSE,e,p);s.destroy(n),t(n)}),s.on("error",function(n){u.destroyed||t(He.from(n,null,e,p))}),s.on("end",function(){try{let e=1===o.length?o[0]:Buffer.concat(o);"arraybuffer"!==r&&(e=e.toString(c),c&&"utf8"!==c||(e=Ge.stripBOM(e))),g.data=e}catch(n){return t(He.from(n,null,e,g.request,g))}Qn(n,t,g)})}f.once("abort",e=>{s.destroyed||(s.emit("error",e),s.destroy())})}),f.once("abort",e=>{t(e),u.destroy(e)}),u.on("error",function(n){t(He.from(n,null,e,u))}),u.on("socket",function(e){e.setKeepAlive(!0,6e4)}),e.timeout){const n=parseInt(e.timeout,10);if(Number.isNaN(n))return void t(new He("error trying to parse `config.timeout` to int",He.ERR_BAD_OPTION_VALUE,e,u));u.setTimeout(n,function(){if(p)return;let n=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";e.timeoutErrorMessage&&(n=e.timeoutErrorMessage),t(new He(n,(e.transitional||zn).clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,e,u)),x()})}if(Ge.isStream(i)){let n=!1,t=!1;i.on("end",()=>{n=!0}),i.once("error",e=>{t=!0,u.destroy(e)}),i.on("close",()=>{n||t||x(new Yn("Request stream has been aborted",e,u))}),i.pipe(u)}else u.end(i)},new Promise((e,t)=>{let o,i;const a=(e,n)=>{i||(i=!0,o&&o(e,n))},s=e=>{a(e,!0),t(e)};n(n=>{a(n),e(n)},s,e=>o=e).catch(s)});var n},ko=Un.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let t;function o(t){let o=t;return e&&(n.setAttribute("href",o),o=n.href),n.setAttribute("href",o),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){const n=Ge.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0},jo=Un.hasStandardBrowserEnv?{write(e,n,t,o,i,a){const s=[e+"="+encodeURIComponent(n)];Ge.isNumber(t)&&s.push("expires="+new Date(t).toGMTString()),Ge.isString(o)&&s.push("path="+o),Ge.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read(e){const n=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};const So=e=>e instanceof Jn?{...e}:e;function To(e,n){n=n||{};const t={};function o(e,n,t){return Ge.isPlainObject(e)&&Ge.isPlainObject(n)?Ge.merge.call({caseless:t},e,n):Ge.isPlainObject(n)?Ge.merge({},n):Ge.isArray(n)?n.slice():n}function i(e,n,t){return Ge.isUndefined(n)?Ge.isUndefined(e)?void 0:o(void 0,e,t):o(e,n,t)}function a(e,n){if(!Ge.isUndefined(n))return o(void 0,n)}function s(e,n){return Ge.isUndefined(n)?Ge.isUndefined(e)?void 0:o(void 0,e):o(void 0,n)}function r(t,i,a){return a in n?o(t,i):a in e?o(void 0,t):void 0}const c={url:a,method:a,data:a,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:r,headers:(e,n)=>i(So(e),So(n),!0)};return Ge.forEach(Object.keys(Object.assign({},e,n)),function(o){const a=c[o]||i,s=a(e[o],n[o],o);Ge.isUndefined(s)&&a!==r||(t[o]=s)}),t}var $o=e=>{const n=To({},e);let t,{data:o,withXSRFToken:i,xsrfHeaderName:a,xsrfCookieName:s,headers:r,auth:c}=n;if(n.headers=r=Jn.from(r),n.url=On(Zn(n.baseURL,n.url),e.params,e.paramsSerializer),c&&r.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),Ge.isFormData(o))if(Un.hasStandardBrowserEnv||Un.hasStandardBrowserWebWorkerEnv)r.setContentType(void 0);else if(!1!==(t=r.getContentType())){const[e,...n]=t?t.split(";").map(e=>e.trim()).filter(Boolean):[];r.setContentType([e||"multipart/form-data",...n].join("; "))}if(Un.hasStandardBrowserEnv&&(i&&Ge.isFunction(i)&&(i=i(n)),i||!1!==i&&ko(n.url))){const e=a&&s&&jo.read(s);e&&r.set(a,e)}return n},Eo="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(n,t){const o=$o(e);let i=o.data;const a=Jn.from(o.headers).normalize();let s,r,c,l,p,{responseType:u,onUploadProgress:d,onDownloadProgress:m}=o;function f(){l&&l(),p&&p(),o.cancelToken&&o.cancelToken.unsubscribe(s),o.signal&&o.signal.removeEventListener("abort",s)}let h=new XMLHttpRequest;function g(){if(!h)return;const o=Jn.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders());Qn(function(e){n(e),f()},function(e){t(e),f()},{data:u&&"text"!==u&&"json"!==u?h.response:h.responseText,status:h.status,statusText:h.statusText,headers:o,config:e,request:h}),h=null}h.open(o.method.toUpperCase(),o.url,!0),h.timeout=o.timeout,"onloadend"in h?h.onloadend=g:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(g)},h.onabort=function(){h&&(t(new He("Request aborted",He.ECONNABORTED,e,h)),h=null)},h.onerror=function(){t(new He("Network Error",He.ERR_NETWORK,e,h)),h=null},h.ontimeout=function(){let n=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";o.timeoutErrorMessage&&(n=o.timeoutErrorMessage),t(new He(n,(o.transitional||zn).clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,e,h)),h=null},void 0===i&&a.setContentType(null),"setRequestHeader"in h&&Ge.forEach(a.toJSON(),function(e,n){h.setRequestHeader(n,e)}),Ge.isUndefined(o.withCredentials)||(h.withCredentials=!!o.withCredentials),u&&"json"!==u&&(h.responseType=o.responseType),m&&([c,p]=so(m,!0),h.addEventListener("progress",c)),d&&h.upload&&([r,l]=so(d),h.upload.addEventListener("progress",r),h.upload.addEventListener("loadend",l)),(o.cancelToken||o.signal)&&(s=n=>{h&&(t(!n||n.type?new Yn(null,e,h):n),h.abort(),h=null)},o.cancelToken&&o.cancelToken.subscribe(s),o.signal&&(o.signal.aborted?s():o.signal.addEventListener("abort",s)));const v=Jt(o.url);v&&-1===Un.protocols.indexOf(v)?t(new He("Unsupported protocol "+v+":",He.ERR_BAD_REQUEST,e)):h.send(i||null)})},Co=(e,n)=>{let t,o=new AbortController;const i=function(e){if(!t){t=!0,s();const n=e instanceof Error?e:this.reason;o.abort(n instanceof He?n:new Yn(n instanceof Error?n.message:n))}};let a=n&&setTimeout(()=>{i(new He(`timeout ${n} of ms exceeded`,He.ETIMEDOUT))},n);const s=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(e=>{e&&(e.removeEventListener?e.removeEventListener("abort",i):e.unsubscribe(i))}),e=null)};e.forEach(e=>e&&e.addEventListener&&e.addEventListener("abort",i));const{signal:r}=o;return r.unsubscribe=s,[r,()=>{a&&clearTimeout(a),a=null}]};const Oo=function*(e,n){let t=e.byteLength;if(!n||t<n)return void(yield e);let o,i=0;for(;i<t;)o=i+n,yield e.slice(i,o),i=o},Ro=(e,n,t,o,i)=>{const a=async function*(e,n,t){for await(const o of e)yield*Oo(ArrayBuffer.isView(o)?o:await t(String(o)),n)}(e,n,i);let s,r=0,c=e=>{s||(s=!0,o&&o(e))};return new ReadableStream({async pull(e){try{const{done:n,value:o}=await a.next();if(n)return c(),void e.close();if(t){let e=r+=o.byteLength;t(e)}e.enqueue(new Uint8Array(o))}catch(e){throw c(e),e}},cancel:e=>(c(e),a.return())},{highWaterMark:2})},zo="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,No=zo&&"function"==typeof ReadableStream,Ao=zo&&("function"==typeof TextEncoder?(Fo=new TextEncoder,e=>Fo.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Fo;const Lo=(e,...n)=>{try{return!!e(...n)}catch(e){return!1}},Uo=No&&Lo(()=>{let e=!1;const n=new Request(Un.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!n}),Io=No&&Lo(()=>Ge.isReadableStream(new Response("").body)),qo={stream:Io&&(e=>e.body)};var Po;zo&&(Po=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!qo[e]&&(qo[e]=Ge.isFunction(Po[e])?n=>n[e]():(n,t)=>{throw new He(`Response type '${e}' is not supported`,He.ERR_NOT_SUPPORT,t)})}));var Bo=zo&&(async e=>{let{url:n,method:t,data:o,signal:i,cancelToken:a,timeout:s,onDownloadProgress:r,onUploadProgress:c,responseType:l,headers:p,withCredentials:u="same-origin",fetchOptions:d}=$o(e);l=l?(l+"").toLowerCase():"text";let m,f,[h,g]=i||a||s?Co([i,a],s):[];const v=()=>{!m&&setTimeout(()=>{h&&h.unsubscribe()}),m=!0};let x;try{if(c&&Uo&&"get"!==t&&"head"!==t&&0!==(x=await(async(e,n)=>{const t=Ge.toFiniteNumber(e.getContentLength());return null==t?(async e=>null==e?0:Ge.isBlob(e)?e.size:Ge.isSpecCompliantForm(e)?(await new Request(e).arrayBuffer()).byteLength:Ge.isArrayBufferView(e)||Ge.isArrayBuffer(e)?e.byteLength:(Ge.isURLSearchParams(e)&&(e+=""),Ge.isString(e)?(await Ao(e)).byteLength:void 0))(n):t})(p,o))){let e,t=new Request(n,{method:"POST",body:o,duplex:"half"});if(Ge.isFormData(o)&&(e=t.headers.get("content-type"))&&p.setContentType(e),t.body){const[e,n]=ro(x,so(co(c)));o=Ro(t.body,65536,e,n,Ao)}}Ge.isString(u)||(u=u?"include":"omit"),f=new Request(n,{...d,signal:h,method:t.toUpperCase(),headers:p.normalize().toJSON(),body:o,duplex:"half",credentials:u});let i=await fetch(f);const a=Io&&("stream"===l||"response"===l);if(Io&&(r||a)){const e={};["status","statusText","headers"].forEach(n=>{e[n]=i[n]});const n=Ge.toFiniteNumber(i.headers.get("content-length")),[t,o]=r&&ro(n,so(co(r),!0))||[];i=new Response(Ro(i.body,65536,t,()=>{o&&o(),a&&v()},Ao),e)}l=l||"text";let s=await qo[Ge.findKey(qo,l)||"text"](i,e);return!a&&v(),g&&g(),await new Promise((n,t)=>{Qn(n,t,{data:s,headers:Jn.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:f})})}catch(n){if(v(),n&&"TypeError"===n.name&&/fetch/i.test(n.message))throw Object.assign(new He("Network Error",He.ERR_NETWORK,e,f),{cause:n.cause||n});throw He.from(n,n&&n.code,e,f)}});const Do={http:_o,xhr:Eo,fetch:Bo};Ge.forEach(Do,(e,n)=>{if(e){try{Object.defineProperty(e,"name",{value:n})}catch(e){}Object.defineProperty(e,"adapterName",{value:n})}});const Mo=e=>`- ${e}`,Wo=e=>Ge.isFunction(e)||null===e||!1===e;var Go=e=>{e=Ge.isArray(e)?e:[e];const{length:n}=e;let t,o;const i={};for(let a=0;a<n;a++){let n;if(t=e[a],o=t,!Wo(t)&&(o=Do[(n=String(t)).toLowerCase()],void 0===o))throw new He(`Unknown adapter '${n}'`);if(o)break;i[n||"#"+a]=o}if(!o){const e=Object.entries(i).map(([e,n])=>`adapter ${e} `+(!1===n?"is not supported by the environment":"is not available in the build"));throw new He("There is no suitable adapter to dispatch the request "+(n?e.length>1?"since :\n"+e.map(Mo).join("\n"):" "+Mo(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return o};function Ho(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Yn(null,e)}function Jo(e){return Ho(e),e.headers=Jn.from(e.headers),e.data=Kn.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Go(e.adapter||Pn.adapter)(e).then(function(n){return Ho(e),n.data=Kn.call(e,e.transformResponse,n),n.headers=Jn.from(n.headers),n},function(n){return Vn(n)||(Ho(e),n&&n.response&&(n.response.data=Kn.call(e,e.transformResponse,n.response),n.response.headers=Jn.from(n.response.headers))),Promise.reject(n)})}const Ko={};["object","boolean","number","function","string","symbol"].forEach((e,n)=>{Ko[e]=function(t){return typeof t===e||"a"+(n<1?"n ":" ")+e}});const Vo={};Ko.transitional=function(e,n,t){function o(e,n){return"[Axios v1.7.4] Transitional option '"+e+"'"+n+(t?". "+t:"")}return(t,i,a)=>{if(!1===e)throw new He(o(i," has been removed"+(n?" in "+n:"")),He.ERR_DEPRECATED);return n&&!Vo[i]&&(Vo[i]=!0,console.warn(o(i," has been deprecated since v"+n+" and will be removed in the near future"))),!e||e(t,i,a)}};var Yo={assertOptions:function(e,n,t){if("object"!=typeof e)throw new He("options must be an object",He.ERR_BAD_OPTION_VALUE);const o=Object.keys(e);let i=o.length;for(;i-- >0;){const a=o[i],s=n[a];if(s){const n=e[a],t=void 0===n||s(n,a,e);if(!0!==t)throw new He("option "+a+" must be "+t,He.ERR_BAD_OPTION_VALUE)}else if(!0!==t)throw new He("Unknown option "+a,He.ERR_BAD_OPTION)}},validators:Ko};const Qo=Yo.validators;class Zo{constructor(e){this.defaults=e,this.interceptors={request:new Rn,response:new Rn}}async request(e,n){try{return await this._request(e,n)}catch(e){if(e instanceof Error){let n;Error.captureStackTrace?Error.captureStackTrace(n={}):n=new Error;const t=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.stack?t&&!String(e.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+t):e.stack=t}catch(e){}}throw e}}_request(e,n){"string"==typeof e?(n=n||{}).url=e:n=e||{},n=To(this.defaults,n);const{transitional:t,paramsSerializer:o,headers:i}=n;void 0!==t&&Yo.assertOptions(t,{silentJSONParsing:Qo.transitional(Qo.boolean),forcedJSONParsing:Qo.transitional(Qo.boolean),clarifyTimeoutError:Qo.transitional(Qo.boolean)},!1),null!=o&&(Ge.isFunction(o)?n.paramsSerializer={serialize:o}:Yo.assertOptions(o,{encode:Qo.function,serialize:Qo.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&Ge.merge(i.common,i[n.method]);i&&Ge.forEach(["delete","get","head","post","put","patch","common"],e=>{delete i[e]}),n.headers=Jn.concat(a,i);const s=[];let r=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(n)||(r=r&&e.synchronous,s.unshift(e.fulfilled,e.rejected))});const c=[];let l;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let p,u=0;if(!r){const e=[Jo.bind(this),void 0];for(e.unshift.apply(e,s),e.push.apply(e,c),p=e.length,l=Promise.resolve(n);u<p;)l=l.then(e[u++],e[u++]);return l}p=s.length;let d=n;for(u=0;u<p;){const e=s[u++],n=s[u++];try{d=e(d)}catch(e){n.call(this,e);break}}try{l=Jo.call(this,d)}catch(e){return Promise.reject(e)}for(u=0,p=c.length;u<p;)l=l.then(c[u++],c[u++]);return l}getUri(e){return On(Zn((e=To(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}Ge.forEach(["delete","get","head","options"],function(e){Zo.prototype[e]=function(n,t){return this.request(To(t||{},{method:e,url:n,data:(t||{}).data}))}}),Ge.forEach(["post","put","patch"],function(e){function n(n){return function(t,o,i){return this.request(To(i||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:t,data:o}))}}Zo.prototype[e]=n(),Zo.prototype[e+"Form"]=n(!0)});var Xo=Zo;class ei{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(e){n=e});const t=this;this.promise.then(e=>{if(!t._listeners)return;let n=t._listeners.length;for(;n-- >0;)t._listeners[n](e);t._listeners=null}),this.promise.then=e=>{let n;const o=new Promise(e=>{t.subscribe(e),n=e}).then(e);return o.cancel=function(){t.unsubscribe(n)},o},e(function(e,o,i){t.reason||(t.reason=new Yn(e,o,i),n(t.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);-1!==n&&this._listeners.splice(n,1)}static source(){let e;return{token:new ei(function(n){e=n}),cancel:e}}}var ni=ei;const ti={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ti).forEach(([e,n])=>{ti[n]=e});var oi=ti;const ii=function e(n){const t=new Xo(n),o=ne(Xo.prototype.request,t);return Ge.extend(o,Xo.prototype,t,{allOwnKeys:!0}),Ge.extend(o,t,null,{allOwnKeys:!0}),o.create=function(t){return e(To(n,t))},o}(Pn);ii.Axios=Xo,ii.CanceledError=Yn,ii.CancelToken=ni,ii.isCancel=Vn,ii.VERSION=Ht,ii.toFormData=Sn,ii.AxiosError=He,ii.Cancel=ii.CanceledError,ii.all=function(e){return Promise.all(e)},ii.spread=function(e){return function(n){return e.apply(null,n)}},ii.isAxiosError=function(e){return Ge.isObject(e)&&!0===e.isAxiosError},ii.mergeConfig=To,ii.AxiosHeaders=Jn,ii.formToJSON=e=>In(Ge.isHTMLForm(e)?new FormData(e):e),ii.getAdapter=Go,ii.HttpStatusCode=oi,ii.default=ii;var ai=ii;const{CanceledError:si}=ai,ri=/screenshot(\-\d+?)?\.needle\.(webp|png|jpg|jpeg)/;async function ci(e,n){const t=n.baseUrl+Z.jobs.post_update,o={...X(n),job_id:e.identifier,status:e.status},i={status_message:e.status_message,error:e.error,progress:e.progress},a=await fetch(t,{...ee,method:"POST",headers:o,body:JSON.stringify(i)}).catch(e=>(console.error(e),null));return!!a&&a.ok}async function li(e,n){const t=n.baseUrl+Z.jobs.get_status,o={...X(n),job_id:e,org:n.org},i=await fetch(t,{...ee,method:"GET",headers:o}).catch(e=>(n.verbose?console.error("Failed to get job status",e):console.error("Failed to get job status",e.message),null));return i?i.ok?await i.json():(console.error("Failed to get status",i.status,await i.text()),null):null}var pi=tn(function(e){!function(){var n="input is invalid type",t="object"==typeof window,o=t?window:{};o.JS_MD5_NO_WINDOW&&(t=!1);var i=!t&&"object"==typeof self,a=!o.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;a?o=nn:i&&(o=self);var s,r=!o.JS_MD5_NO_COMMON_JS&&e.exports,c=!o.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,l="0123456789abcdef".split(""),p=[128,32768,8388608,-2147483648],u=[0,8,16,24],d=["hex","array","digest","buffer","arrayBuffer","base64"],m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),f=[];if(c){var h=new ArrayBuffer(68);s=new Uint8Array(h),f=new Uint32Array(h)}var g=Array.isArray;!o.JS_MD5_NO_NODE_JS&&g||(g=function(e){return"[object Array]"===Object.prototype.toString.call(e)});var v=ArrayBuffer.isView;!c||!o.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&v||(v=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var x=function(e){var t=typeof e;if("string"===t)return[e,!0];if("object"!==t||null===e)throw new Error(n);if(c&&e.constructor===ArrayBuffer)return[new Uint8Array(e),!1];if(!g(e)&&!v(e))throw new Error(n);return[e,!1]},b=function(e){return function(n){return new w(!0).update(n)[e]()}},y=function(e){return function(n,t){return new _(n,!0).update(t)[e]()}};function w(e){if(e)f[0]=f[16]=f[1]=f[2]=f[3]=f[4]=f[5]=f[6]=f[7]=f[8]=f[9]=f[10]=f[11]=f[12]=f[13]=f[14]=f[15]=0,this.blocks=f,this.buffer8=s;else if(c){var n=new ArrayBuffer(68);this.buffer8=new Uint8Array(n),this.blocks=new Uint32Array(n)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}function _(e,n){var t,o=x(e);if(e=o[0],o[1]){var i,a=[],s=e.length,r=0;for(t=0;t<s;++t)(i=e.charCodeAt(t))<128?a[r++]=i:i<2048?(a[r++]=192|i>>>6,a[r++]=128|63&i):i<55296||i>=57344?(a[r++]=224|i>>>12,a[r++]=128|i>>>6&63,a[r++]=128|63&i):(i=65536+((1023&i)<<10|1023&e.charCodeAt(++t)),a[r++]=240|i>>>18,a[r++]=128|i>>>12&63,a[r++]=128|i>>>6&63,a[r++]=128|63&i);e=a}e.length>64&&(e=new w(!0).update(e).array());var c=[],l=[];for(t=0;t<64;++t){var p=e[t]||0;c[t]=92^p,l[t]=54^p}w.call(this,n),this.update(l),this.oKeyPad=c,this.inner=!0,this.sharedMemory=n}w.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");for(var n,t,o=x(e),i=o[1],a=0,s=(e=o[0]).length,r=this.blocks,l=this.buffer8;a<s;){if(this.hashed&&(this.hashed=!1,r[0]=r[16],r[16]=r[1]=r[2]=r[3]=r[4]=r[5]=r[6]=r[7]=r[8]=r[9]=r[10]=r[11]=r[12]=r[13]=r[14]=r[15]=0),i)if(c)for(t=this.start;a<s&&t<64;++a)(n=e.charCodeAt(a))<128?l[t++]=n:n<2048?(l[t++]=192|n>>>6,l[t++]=128|63&n):n<55296||n>=57344?(l[t++]=224|n>>>12,l[t++]=128|n>>>6&63,l[t++]=128|63&n):(n=65536+((1023&n)<<10|1023&e.charCodeAt(++a)),l[t++]=240|n>>>18,l[t++]=128|n>>>12&63,l[t++]=128|n>>>6&63,l[t++]=128|63&n);else for(t=this.start;a<s&&t<64;++a)(n=e.charCodeAt(a))<128?r[t>>>2]|=n<<u[3&t++]:n<2048?(r[t>>>2]|=(192|n>>>6)<<u[3&t++],r[t>>>2]|=(128|63&n)<<u[3&t++]):n<55296||n>=57344?(r[t>>>2]|=(224|n>>>12)<<u[3&t++],r[t>>>2]|=(128|n>>>6&63)<<u[3&t++],r[t>>>2]|=(128|63&n)<<u[3&t++]):(n=65536+((1023&n)<<10|1023&e.charCodeAt(++a)),r[t>>>2]|=(240|n>>>18)<<u[3&t++],r[t>>>2]|=(128|n>>>12&63)<<u[3&t++],r[t>>>2]|=(128|n>>>6&63)<<u[3&t++],r[t>>>2]|=(128|63&n)<<u[3&t++]);else if(c)for(t=this.start;a<s&&t<64;++a)l[t++]=e[a];else for(t=this.start;a<s&&t<64;++a)r[t>>>2]|=e[a]<<u[3&t++];this.lastByteIndex=t,this.bytes+=t-this.start,t>=64?(this.start=t-64,this.hash(),this.hashed=!0):this.start=t}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this},w.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,n=this.lastByteIndex;e[n>>>2]|=p[3&n],n>=56&&(this.hashed||this.hash(),e[0]=e[16],e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.bytes<<3,e[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},w.prototype.hash=function(){var e,n,t,o,i,a,s=this.blocks;this.first?n=((n=((e=((e=s[0]-680876937)<<7|e>>>25)-271733879|0)^(t=((t=(-271733879^(o=((o=(-1732584194^2004318071&e)+s[1]-117830708)<<12|o>>>20)+e|0)&(-271733879^e))+s[2]-1126478375)<<17|t>>>15)+o|0)&(o^e))+s[3]-1316259209)<<22|n>>>10)+t|0:(e=this.h0,n=this.h1,n=((n+=((e=((e+=((o=this.h3)^n&((t=this.h2)^o))+s[0]-680876936)<<7|e>>>25)+n|0)^(t=((t+=(n^(o=((o+=(t^e&(n^t))+s[1]-389564586)<<12|o>>>20)+e|0)&(e^n))+s[2]+606105819)<<17|t>>>15)+o|0)&(o^e))+s[3]-1044525330)<<22|n>>>10)+t|0),n=((n+=((e=((e+=(o^n&(t^o))+s[4]-176418897)<<7|e>>>25)+n|0)^(t=((t+=(n^(o=((o+=(t^e&(n^t))+s[5]+1200080426)<<12|o>>>20)+e|0)&(e^n))+s[6]-1473231341)<<17|t>>>15)+o|0)&(o^e))+s[7]-45705983)<<22|n>>>10)+t|0,n=((n+=((e=((e+=(o^n&(t^o))+s[8]+1770035416)<<7|e>>>25)+n|0)^(t=((t+=(n^(o=((o+=(t^e&(n^t))+s[9]-1958414417)<<12|o>>>20)+e|0)&(e^n))+s[10]-42063)<<17|t>>>15)+o|0)&(o^e))+s[11]-1990404162)<<22|n>>>10)+t|0,n=((n+=((e=((e+=(o^n&(t^o))+s[12]+1804603682)<<7|e>>>25)+n|0)^(t=((t+=(n^(o=((o+=(t^e&(n^t))+s[13]-40341101)<<12|o>>>20)+e|0)&(e^n))+s[14]-1502002290)<<17|t>>>15)+o|0)&(o^e))+s[15]+1236535329)<<22|n>>>10)+t|0,n=((n+=((o=((o+=(n^t&((e=((e+=(t^o&(n^t))+s[1]-165796510)<<5|e>>>27)+n|0)^n))+s[6]-1069501632)<<9|o>>>23)+e|0)^e&((t=((t+=(e^n&(o^e))+s[11]+643717713)<<14|t>>>18)+o|0)^o))+s[0]-373897302)<<20|n>>>12)+t|0,n=((n+=((o=((o+=(n^t&((e=((e+=(t^o&(n^t))+s[5]-701558691)<<5|e>>>27)+n|0)^n))+s[10]+38016083)<<9|o>>>23)+e|0)^e&((t=((t+=(e^n&(o^e))+s[15]-660478335)<<14|t>>>18)+o|0)^o))+s[4]-405537848)<<20|n>>>12)+t|0,n=((n+=((o=((o+=(n^t&((e=((e+=(t^o&(n^t))+s[9]+568446438)<<5|e>>>27)+n|0)^n))+s[14]-1019803690)<<9|o>>>23)+e|0)^e&((t=((t+=(e^n&(o^e))+s[3]-187363961)<<14|t>>>18)+o|0)^o))+s[8]+1163531501)<<20|n>>>12)+t|0,n=((n+=((o=((o+=(n^t&((e=((e+=(t^o&(n^t))+s[13]-1444681467)<<5|e>>>27)+n|0)^n))+s[2]-51403784)<<9|o>>>23)+e|0)^e&((t=((t+=(e^n&(o^e))+s[7]+1735328473)<<14|t>>>18)+o|0)^o))+s[12]-1926607734)<<20|n>>>12)+t|0,n=((n+=((a=(o=((o+=((i=n^t)^(e=((e+=(i^o)+s[5]-378558)<<4|e>>>28)+n|0))+s[8]-2022574463)<<11|o>>>21)+e|0)^e)^(t=((t+=(a^n)+s[11]+1839030562)<<16|t>>>16)+o|0))+s[14]-35309556)<<23|n>>>9)+t|0,n=((n+=((a=(o=((o+=((i=n^t)^(e=((e+=(i^o)+s[1]-1530992060)<<4|e>>>28)+n|0))+s[4]+1272893353)<<11|o>>>21)+e|0)^e)^(t=((t+=(a^n)+s[7]-155497632)<<16|t>>>16)+o|0))+s[10]-1094730640)<<23|n>>>9)+t|0,n=((n+=((a=(o=((o+=((i=n^t)^(e=((e+=(i^o)+s[13]+681279174)<<4|e>>>28)+n|0))+s[0]-358537222)<<11|o>>>21)+e|0)^e)^(t=((t+=(a^n)+s[3]-722521979)<<16|t>>>16)+o|0))+s[6]+76029189)<<23|n>>>9)+t|0,n=((n+=((a=(o=((o+=((i=n^t)^(e=((e+=(i^o)+s[9]-640364487)<<4|e>>>28)+n|0))+s[12]-421815835)<<11|o>>>21)+e|0)^e)^(t=((t+=(a^n)+s[15]+530742520)<<16|t>>>16)+o|0))+s[2]-995338651)<<23|n>>>9)+t|0,n=((n+=((o=((o+=(n^((e=((e+=(t^(n|~o))+s[0]-198630844)<<6|e>>>26)+n|0)|~t))+s[7]+1126891415)<<10|o>>>22)+e|0)^((t=((t+=(e^(o|~n))+s[14]-1416354905)<<15|t>>>17)+o|0)|~e))+s[5]-57434055)<<21|n>>>11)+t|0,n=((n+=((o=((o+=(n^((e=((e+=(t^(n|~o))+s[12]+1700485571)<<6|e>>>26)+n|0)|~t))+s[3]-1894986606)<<10|o>>>22)+e|0)^((t=((t+=(e^(o|~n))+s[10]-1051523)<<15|t>>>17)+o|0)|~e))+s[1]-2054922799)<<21|n>>>11)+t|0,n=((n+=((o=((o+=(n^((e=((e+=(t^(n|~o))+s[8]+1873313359)<<6|e>>>26)+n|0)|~t))+s[15]-30611744)<<10|o>>>22)+e|0)^((t=((t+=(e^(o|~n))+s[6]-1560198380)<<15|t>>>17)+o|0)|~e))+s[13]+1309151649)<<21|n>>>11)+t|0,n=((n+=((o=((o+=(n^((e=((e+=(t^(n|~o))+s[4]-145523070)<<6|e>>>26)+n|0)|~t))+s[11]-1120210379)<<10|o>>>22)+e|0)^((t=((t+=(e^(o|~n))+s[2]+718787259)<<15|t>>>17)+o|0)|~e))+s[9]-343485551)<<21|n>>>11)+t|0,this.first?(this.h0=e+1732584193|0,this.h1=n-271733879|0,this.h2=t-1732584194|0,this.h3=o+271733878|0,this.first=!1):(this.h0=this.h0+e|0,this.h1=this.h1+n|0,this.h2=this.h2+t|0,this.h3=this.h3+o|0)},w.prototype.toString=w.prototype.hex=function(){this.finalize();var e=this.h0,n=this.h1,t=this.h2,o=this.h3;return l[e>>>4&15]+l[15&e]+l[e>>>12&15]+l[e>>>8&15]+l[e>>>20&15]+l[e>>>16&15]+l[e>>>28&15]+l[e>>>24&15]+l[n>>>4&15]+l[15&n]+l[n>>>12&15]+l[n>>>8&15]+l[n>>>20&15]+l[n>>>16&15]+l[n>>>28&15]+l[n>>>24&15]+l[t>>>4&15]+l[15&t]+l[t>>>12&15]+l[t>>>8&15]+l[t>>>20&15]+l[t>>>16&15]+l[t>>>28&15]+l[t>>>24&15]+l[o>>>4&15]+l[15&o]+l[o>>>12&15]+l[o>>>8&15]+l[o>>>20&15]+l[o>>>16&15]+l[o>>>28&15]+l[o>>>24&15]},w.prototype.array=w.prototype.digest=function(){this.finalize();var e=this.h0,n=this.h1,t=this.h2,o=this.h3;return[255&e,e>>>8&255,e>>>16&255,e>>>24&255,255&n,n>>>8&255,n>>>16&255,n>>>24&255,255&t,t>>>8&255,t>>>16&255,t>>>24&255,255&o,o>>>8&255,o>>>16&255,o>>>24&255]},w.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(16),n=new Uint32Array(e);return n[0]=this.h0,n[1]=this.h1,n[2]=this.h2,n[3]=this.h3,e},w.prototype.buffer=w.prototype.arrayBuffer,w.prototype.base64=function(){for(var e,n,t,o="",i=this.array(),a=0;a<15;)e=i[a++],n=i[a++],t=i[a++],o+=m[e>>>2]+m[63&(e<<4|n>>>4)]+m[63&(n<<2|t>>>6)]+m[63&t];return o+(m[(e=i[a])>>>2]+m[e<<4&63]+"==")},(_.prototype=new w).finalize=function(){if(w.prototype.finalize.call(this),this.inner){this.inner=!1;var e=this.array();w.call(this,this.sharedMemory),this.update(this.oKeyPad),this.update(e),w.prototype.finalize.call(this)}};var k=function(){var e=b("hex");a&&(e=function(e){var t,i=O,a=z.Buffer;return t=a.from&&!o.JS_MD5_NO_BUFFER_FROM?a.from:function(e){return new a(e)},function(o){if("string"==typeof o)return i.createHash("md5").update(o,"utf8").digest("hex");if(null==o)throw new Error(n);return o.constructor===ArrayBuffer&&(o=new Uint8Array(o)),g(o)||v(o)||o.constructor===a?i.createHash("md5").update(t(o)).digest("hex"):e(o)}}(e)),e.create=function(){return new w},e.update=function(n){return e.create().update(n)};for(var t=0;t<d.length;++t){var i=d[t];e[i]=b(i)}return e}();k.md5=k,k.md5.hmac=function(){var e=y("hex");e.create=function(e){return new _(e)},e.update=function(n,t){return e.create(n).update(t)};for(var n=0;n<d.length;++n){var t=d[n];e[t]=y(t)}return e}(),r?e.exports=k:o.md5=k}()});function ui(e,n=0){return hi(e,n,2).getUint16(0,!0)}function di(e,n=0){return hi(e,n,4).getUint32(0,!0)}function mi(e,n=0,t=e.byteLength){const o=e.slice(n,n+t);return gi.decode(new Uint8Array(o))}function fi(e,n,t=0){if(e.length<n.length+t)return!1;for(const[o,i]of n.entries())if(null!==i&&i!==e[o+t])return!1;return!0}function hi(e,n,t){const o=e.slice(n,n+t);return new DataView(new Uint8Array(o).buffer)}const gi=new TextDecoder("utf8"),vi=[["db","application/vnd.sqlite3",[83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0]],["woff","font/woff",[119,79,70,70]],["woff2","font/woff2",[119,79,70,50]],["bmp","image/bmp",[66,77]],["gif","image/gif",[71,73,70,56,55,97]],["gif","image/gif",[71,73,70,56,57,97]],["heic","image/heic",[102,116,121,112,104,101,105],{offset:4}],["heic","image/heic",[102,116,121,112,109],{offset:4}],["ico","image/x-icon",[0,0,1,0]],["jpg","image/jpeg",[255,216,255]],["pdf","application/pdf",[37,80,68,70,45]],["png","image/png",[137,80,78,71,13,10,26,10]],["7z","application/x-7z-compressed",[55,122,188,175,39,28]],["rar","application/x-rar-compressed",[82,97,114,33,26,7,0]],["rar","application/x-rar-compressed",[82,97,114,33,26,7,1,0]],["rtf","application/rtf",[123,92,114,116,102,49]],["bz2","application/x-bzip2",[66,90,104]],["gz","application/gzip",[31,139]],["tar","application/x-tar",[117,115,116,97,114,0,48,48],{offset:257}],["tar","application/x-tar",[117,115,116,97,114,32,32,0],{offset:257}],["tif","image/tiff",[73,73,42,0]],["tiff","image/tiff",[77,77,0,42]],["zip","application/zip",[80,75,3,4],{exact:!1}],["zip","application/zip",[80,75,5,6]],["mp3","audio/mp3",[255,251]],["mp3","audio/mp3",[255,243]],["mp3","audio/mp3",[255,242]],["mp3","audio/mp3",[73,68,51]],["mp4","video/mp4",[102,116,121,112,105,115,111,109],{offset:4}],["avi","video/x-msvideo",[82,73,70,70,null,null,null,null,65,86,73,32]],["wav","audio/wav",[82,73,70,70,null,null,null,null,87,65,86,69]],["ogx","application/ogg",[79,103,103,83],{exact:!1},[["oga","audio/ogg",[127,70,76,65,67],{offset:28}],["ogg","audio/ogg",[1,118,111,114,98,105,115],{offset:28}],["ogm","video/ogg",[1,118,105,100,101,111,0],{offset:28}],["ogv","video/ogg",[128,116,104,101,111,114,97],{offset:28}]]],["webp","image/webp",[82,73,70,70,null,null,null,null,87,69,66,80]],["psd","image/vnd.adobe.photoshop",[56,66,80,83]],["flac","audio/x-flac",[102,76,97,67]],["wasm","application/wasm",[0,97,115,109]],["deb","application/x-deb",[33,60,97,114,99,104,62,10]],["exe","application/x-msdownload",[77,90]],["exe","application/x-msdownload",[90,77]],["class","application/java-vm",[202,254,186,190]]];function xi(e){return e.flatMap(([e,n,t,o={},i=[]])=>[[e,n,t,o],...i])}function bi(e,n){const t=ui(e,26),o=mi(e,30,t),[i]=o.split("/"),a=o.endsWith(".xml");return"META-INF"===i?{ext:"jar",mime:"application/java-archive"}:"ppt"===i&&a?{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}:"word"===i&&a?{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}:"xl"===i&&a?{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}:"mimetype"===i?function(e,n){const t=di(e,18),o=di(e,22),i=ui(e,28);if(t===o){const o=mi(e,30+n+i,t);if("application/vnd.oasis.opendocument.presentation"===o)return{ext:"odp",mime:o};if("application/vnd.oasis.opendocument.spreadsheet"===o)return{ext:"ods",mime:o};if("application/vnd.oasis.opendocument.text"===o)return{ext:"odt",mime:o};if("application/epub+zip"===o)return{ext:"epub",mime:o}}}(e,t)??n:n}const yi=function(e){return xi(e).map(([e,n,t,{offset:o=0}={}])=>t.length+o).reduce((e,n)=>n>e?n:e,0)}(vi);function wi(e,n){for(const[t,o,i,{exact:a=!0,offset:s=0}={},r=[]]of n)if(fi(e,i,s)){if("zip"===t&&!a)return bi(e.buffer,{ext:t,mime:o});if(!a&&r.length)for(const[n,t,o,{offset:i=0}={}]of r)if(fi(e,o,i))return{ext:n,mime:t};return{ext:t,mime:o}}}function _i(e,n,t=void 0){const o=function(e,n,t){let o=0;for(;;){let n=e.indexOf("\\",o);if(-1===n)break;o=n+1,e=e.replace("\\","/")}return e}(e).split("/").pop()||e,i=(null==t?void 0:t.type)||ji(n,e),a=new File([n],o,{type:i});return a.path=e,a}function ki(e){const n=pi.md5.create();return n.update(e),n.base64()}function ji(e,n=void 0){const t=function(e,{extra:n=!1,hint:t}={}){const o=new Uint8Array(e.slice(0,yi));if(t){const e=function(e,{ext:n,mime:t}){return n||t?xi(e).filter(e=>e[0]===n||e[1]===t):[]}(vi,t);if(e.length>0){const n=wi(o,e);if(void 0!==n)return n}}return wi(o,vi)||(n?function(e){return function(e){try{const n=mi(e);if(!function(e){for(let n=0;n<e.length;n++)try{const t=e.charCodeAt(n);if(65533===t||t<=8)return!1}catch{return!1}return!0}(n))return;try{return JSON.parse(n),{ext:"json",mime:"application/json"}}catch{return{ext:"txt",mime:"text/plain"}}}catch{return}}(e)}(e):void 0)}(e);if(t)return t.mime;const o=new Uint8Array(e).subarray(0,4);let i="";for(var a=0;a<o.length;a++)i+=o[a].toString(16);let s="unknown";switch(i){case"676c5446":s="model/gltf-binary";break;case"89504e47":s="image/png";break;case"ffd8ffe0":case"ffd8ffe1":case"ffd8ffe2":case"ffd8ffe3":case"ffd8ffe8":s="image/jpeg";break;default:s="unknown"}return"unknown"===s&&"string"==typeof n&&(s=function(e){const n=e.toLowerCase();let t="";return n.endsWith(".html")||n.endsWith(".html.gz")||n.endsWith(".html.br")?t="text/html":n.endsWith(".js")||n.endsWith(".js.gz")||n.endsWith(".js.br")||n.endsWith(".mjs")||n.endsWith(".mjs.gz")||n.endsWith(".mjs.br")||n.endsWith(".cjs")||n.endsWith(".cjs.gz")||n.endsWith(".cjs.br")?t="application/javascript":n.endsWith(".wasm")?t="application/wasm":n.endsWith(".css")||n.endsWith(".css.gz")||n.endsWith(".css.br")?t="text/css":n.endsWith(".json")?t="application/json":n.endsWith(".txt")?t="text/plain":n.endsWith(".bin")?t="application/octet-stream":n.endsWith(".png")?t="image/png":n.endsWith(".jpg")||n.endsWith(".jpeg")?t="image/jpeg":n.endsWith(".gif")?t="image/gif":n.endsWith(".webp")?t="image/webp":n.endsWith(".svg")?t="image/svg+xml":n.endsWith(".xml")?t="application/xml":n.endsWith(".glb")?t="model/gltf-binary":n.endsWith(".gltf")?t="model/gltf+json":n.endsWith(".vrm")?t="model/gltf-binary":n.endsWith(".usdz")?t="model/vnd.usdz+zip":n.endsWith(".usda")?t="model/vnd.usd-usda":n.endsWith(".usdc")?t="model/vnd.usd-usdc":n.endsWith(".usd")?t="model/vnd.usd-usd":n.endsWith(".mtl")?t="model/mtl":n.endsWith(".obj")?t="model/obj":n.endsWith(".fbx")?t="model/vnd.autodesk.fbx":n.endsWith(".stl")?t="model/stl":n.endsWith(".mtlx")&&(t="application/materialx+xml"),t}(n)),s}function Si(e,n){const t=e.toLowerCase();return"application/gzip"===n||"application/brotli"===n?(t.endsWith(".html.gz")||t.endsWith(".html.br")?(n="text/html",e=e.substring(0,e.length-3)):t.endsWith(".js.gz")||t.endsWith(".js.br")||t.endsWith(".mjs.gz")||t.endsWith(".mjs.br")||t.endsWith(".cjs.gz")||t.endsWith(".cjs.br")?(n="application/javascript",e=e.substring(0,e.length-3)):t.endsWith(".css.gz")||t.endsWith(".css.br")?(n="text/css",e=e.substring(0,e.length-3)):t.endsWith(".json.gz")||t.endsWith(".json.br")?(n="text/json",e=e.substring(0,e.length-3)):t.endsWith(".txt.gz")||t.endsWith(".txt.br")?(n="text/plain",e=e.substring(0,e.length-3)):t.endsWith(".wasm.gz")||t.endsWith(".wasm.br")?(n="application/wasm",e=e.substring(0,e.length-3)):t.endsWith(".bin.gz")||t.endsWith(".bin.br")?(n="application/octet-stream",e=e.substring(0,e.length-3)):t.endsWith(".png.gz")||t.endsWith(".png.br")?(n="image/png",e=e.substring(0,e.length-3)):t.endsWith(".jpg.gz")||t.endsWith(".jpg.br")||t.endsWith(".jpeg.gz")||t.endsWith(".jpeg.br")?(n="image/jpeg",e=e.substring(0,e.length-3)):t.endsWith(".gif.gz")||t.endsWith(".gif.br")?(n="image/gif",e=e.substring(0,e.length-3)):t.endsWith(".webp.gz")||t.endsWith(".webp.br")?(n="image/webp",e=e.substring(0,e.length-3)):t.endsWith(".svg.gz")||t.endsWith(".svg.br")?(n="image/svg+xml",e=e.substring(0,e.length-3)):t.endsWith(".xml.gz")||t.endsWith(".xml.br")?(n="application/xml",e=e.substring(0,e.length-3)):t.endsWith(".ico.gz")||t.endsWith(".ico.br")?(n="image/x-icon",e=e.substring(0,e.length-3)):t.endsWith(".webm.gz")||t.endsWith(".webm.br")?(n="video/webm",e=e.substring(0,e.length-3)):t.endsWith(".mp4.gz")||t.endsWith(".mp4.br")?(n="video/mp4",e=e.substring(0,e.length-3)):t.endsWith(".mov.gz")||t.endsWith(".mov.br")?(n="video/quicktime",e=e.substring(0,e.length-3)):t.endsWith(".mp3.gz")||t.endsWith(".mp3.br")?(n="audio/mpeg",e=e.substring(0,e.length-3)):t.endsWith(".wav.gz")||t.endsWith(".wav.br")?(n="audio/wave",e=e.substring(0,e.length-3)):t.endsWith(".ogg.gz")||t.endsWith(".ogg.br")?(n="audio/ogg",e=e.substring(0,e.length-3)):t.endsWith(".flac.gz")||t.endsWith(".flac.br")?(n="audio/flac",e=e.substring(0,e.length-3)):t.endsWith(".glb.gz")||t.endsWith(".glb.br")?(n="model/gltf-binary",e=e.substring(0,e.length-3)):t.endsWith(".gltf.gz")||t.endsWith(".gltf.br")?(n="model/gltf+json",e=e.substring(0,e.length-3)):t.endsWith(".vrm.gz")||t.endsWith(".vrm.br")?(n="model/gltf-binary",e=e.substring(0,e.length-3)):t.endsWith(".usdz.gz")||t.endsWith(".usdz.br")?(n="model/vnd.usdz+zip",e=e.substring(0,e.length-3)):t.endsWith(".obj.gz")||t.endsWith(".obj.br")?(n="model/obj",e=e.substring(0,e.length-3)):t.endsWith(".mtl.gz")||t.endsWith(".mtl.br")?(n="model/mtl",e=e.substring(0,e.length-3)):t.endsWith(".stl.gz")||t.endsWith(".stl.br")?(n="model/stl",e=e.substring(0,e.length-3)):(t.endsWith(".mtlx.gz")||t.endsWith(".mtlx.br"))&&(n="application/materialx+xml",e=e.substring(0,e.length-3)),{filename:e,mimetype:n}):null}function Ti(e,n=void 0,t=!0){const o=Math.abs(e);if(o>=1099511627776){let o=t?" TB":"";return(e/1099511627776).toFixed(void 0===n?2:n)+o}if(o>=1073741824){let o=t?" GB":"";return(e/1073741824).toFixed(void 0===n?2:n)+o}if(o>=1048576){let o=t?" MB":"";return(e/1048576).toFixed(void 0===n?1:n)+o}if(o>=1024){let o=t?" KB":"";return(e/1024).toFixed(void 0===n?0:n)+o}let i=t?" B":"";return e.toFixed(0)+i}function $i(e){return e.split("/").reduce((e,n)=>("."===n||(".."===n?e.pop():null!=n&&n.length&&e.push(n)),e),[]).join("/")}async function Ei(e){return new Promise(n=>setTimeout(n,e))}function Ci(e,n,t=void 0){e instanceof Date&&(e=e.getTime()),n instanceof Date&&(n=n.getTime());let o=n-e,i=o>0;const a=!1!==(null==t?void 0:t.prefix),s=!1!==(null==t?void 0:t.suffix);let r="",c="";o<0&&(o=-o);const l=Math.floor(o/1e3),p=Math.floor(l/60),u=Math.floor(p/60),d=Math.floor(u/24);if(null!=(null==t?void 0:t.limitInDays)&&d>=t.limitInDays)return a&&(r="on "),`${r}${new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}${c}`;r=a?i?"":"in ":"",c=s&&i?" ago":"";const m=Math.floor(d/30),f=Math.floor(m/12);return 1===f?`${r}1 year${c}`:f>1?`${r}${Math.floor(f)} years${c}`:1===m?`${r}1 month${c}`:m>1?`${r}${Math.floor(m)} months${c}`:1===d?i&&null!=t&&t.allowSimple?"yesterday":`${r}1 day${c}`:d>1?`${r}${Math.floor(d)} days${c}`:1===u?`${r}1 hour${c}`:u>1?`${r}${Math.floor(u)} hours${c}`:1===p?`${r}1 minute${c}`:p>1?`${r}${Math.floor(p)} minutes${c}`:null!=t&&t.allowSimple&&l<10?"just now":`${r}${l.toFixed(0)} seconds${c}`}const Oi=/^image_(?<image_lod>\d+)_|^mesh_lod_(?<mesh_lod>\d+)_/;function Ri(e){return e.includes("\\u")?JSON.parse(`"${e}"`):decodeURIComponent(e)}function zi(e){let n=null,t="";const o=e.filter(e=>"index.html"===e.name.toLowerCase()||"index.html.gz"===e.name.toLowerCase()||"index.html.br"===e.name.toLowerCase());if(1===o.length)return n=o[0],n;const i=e.filter(e=>e.name.toLowerCase().endsWith(".html")||e.name.toLowerCase().endsWith(".htm")||e.name.toLowerCase().endsWith(".html.gz")||e.name.toLowerCase().endsWith(".html.br"));if(1===i.length)return i[0];if(i.length>1){const e=new Map;for(const n of i){const t=n.path.split("/");let o=e.get(t.length);o||(o=[],e.set(t.length,o)),o.push(n)}const o=Array.from(e.keys()).sort((e,n)=>e-n);if(o.length>0)for(const t of o){const o=e.get(t);if(!o)continue;const i=o.find(e=>"index.html"===e.name.toLowerCase()||"index.html.gz"===e.name.toLowerCase()||"index.html.br"===e.name.toLowerCase());return i?(n=i,n):(n=o[0],n)}return t="Invalid upload: Multiple HTML files found but could not determine root.",console.error(t,i.map(e=>e.path||e.name)),{error:t}}const a=e.filter(e=>e.name.toLowerCase().endsWith(".glb")||e.name.toLowerCase().endsWith(".gltf")||e.name.toLowerCase().endsWith(".vrm"));if(a.length>1){const e=function(e){const n=new Array,t=/(mesh_lod|image)_\d_(.{1,50})/;for(const o of e){if(t.test(o.name))continue;const e=o.name.toLowerCase();(e.endsWith(".gltf")||e.endsWith(".vrm")||e.endsWith(".glb"))&&n.push(o)}return 1==n.length?n[0]:Ni(n)}(a);return e?(n=e,n):(t="Invalid upload: Multiple glb/glTF/vrm files found. This is currently not supported.",console.error(t,a.map(e=>e.path||e.name)),{error:t})}if(1===a.length)return n=a[0],n;const s=e.filter(e=>e.name.toLowerCase().endsWith(".usdz")||e.name.toLowerCase().endsWith(".usd")||e.name.toLowerCase().endsWith(".usda")||e.name.toLowerCase().endsWith(".usdc"));s.length>=1&&(n=Ni(s));const r=e.filter(e=>e.name.toLowerCase().endsWith(".fbx"));if(r.length>1)return t="Invalid upload: Multiple fbx files found. This is currently not supported.",console.error(t,r),{error:t};if(1===r.length)return n=r[0],n;const c=e.filter(e=>e.name.toLowerCase().endsWith(".obj"));if(c.length>1)return t="Invalid upload: Multiple obj files found. This is currently not supported.",console.error(t,c),{error:t};if(1===c.length)return n=c[0],n;const l=e.filter(e=>e.name.toLowerCase().endsWith(".stl"));if(l.length>1)return t="Invalid upload: Multiple stl files found. This is currently not supported.",console.error(t,l),{error:t};if(1===l.length)return n=l[0],n;if(1===e.length&&!e[0].arrayBuffer&&e[0].path.toLowerCase().startsWith("http"))return n=e[0],n;const p=e.filter(e=>e.name.toLowerCase().endsWith("package.json"));if(1===p.length)return n=p[0],n;if(p.length>1)return t="Invalid upload: Multiple package.json files found. This is currently not supported.",console.error(t,p),{error:t};const u=e.filter(e=>e.name.toLowerCase().endsWith(".mtlx"));return u.length>1?(t="Invalid upload: Multiple mtlx files found. This is currently not supported.",console.error(t,u),{error:t}):1===u.length?(n=u[0],n):n||{error:"No supported file to upload found..."}}function Ni(e){let n=-1,t=Infinity;for(let o=0;o<e.length;o++){const i=e[o];i.path.split("/").length<t&&(t=i.path.split("/").length,n=o)}return n<0?null:e[n]}class Ai{constructor(e,n){this.totalFiles=e,this.estimatedTotalSize=n,this.uploadedSize=0,this.startTime=Date.now(),this.lastUpdateTime=this.startTime,this.lastUploadedSize=0,this.speedEMA=null,this.emaFactor=.1,this.smoothedRemainingTime=null,this.recentSpeeds=new Array,this.maxRecentSpeeds=20,this.initialEstimateThreshold=.05}updateProgress(e){const n=Date.now(),t=(n-this.lastUpdateTime)/1e3,o=e-this.lastUploadedSize;if(this.uploadedSize=e,t>0&&o>0){this.recentSpeeds.push(o/t),this.recentSpeeds.length>this.maxRecentSpeeds&&this.recentSpeeds.shift();const e=this.recentSpeeds.reduce((e,n)=>e+n,0)/this.recentSpeeds.length;this.speedEMA=null===this.speedEMA?e:this.emaFactor*e+(1-this.emaFactor)*this.speedEMA}this.lastUpdateTime=n,this.lastUploadedSize=e;const i=this.uploadedSize/this.estimatedTotalSize,a=(n-this.startTime)/1e3,s=this.speedEMA&&this.speedEMA>0?this.speedEMA:this.uploadedSize/a;let r;if(r=s>0?(this.estimatedTotalSize-this.uploadedSize)/s:Infinity,i>=this.initialEstimateThreshold)if(null===this.smoothedRemainingTime)this.smoothedRemainingTime=r;else{const e=.1;this.smoothedRemainingTime=(1-e)*this.smoothedRemainingTime+e*r}else this.smoothedRemainingTime=a/i-a;return this.smoothedRemainingTime=Math.max(this.smoothedRemainingTime,(this.estimatedTotalSize-this.uploadedSize)/s),{progress:100*i,estimatedTimeRemaining:Math.round(this.smoothedRemainingTime),estimatedTimeRemainingString:this.smoothedRemainingTime>3?this.__formatTime(this.smoothedRemainingTime):"few seconds"}}__formatTime(e){if(!isFinite(e)||e>86400)return"Calculating...";if(e<60)return`${Math.round(e)}sec`;const n=Math.floor(e/60);return n<60?`${n}min`:`${Math.floor(n/60)}h ${n%60}min`}}async function Fi(e){const n=await import("./pako.esm-01431bd2.js"),t=await e.arrayBuffer(),o=n.gzip(new Uint8Array(t)).buffer.slice(0);if(o.byteLength>51200&&o.byteLength>=t.byteLength){if(t.byteLength>0)return null}else if(!(o instanceof ArrayBuffer))return console.error("gzipCompress: Invalid ArrayBuffer"),{error:`Gzip compressing failed for "${e.name}" (unexpected result)`};return _i(`${"path"in e?e.path:e.name}.gz`,o,{type:"application/gzip"})}async function Li(e,n,t=void 0){const o=async function(e,n,t){var o,i,a,s,r,c,l,p,u,d,m,f,h,g;const v=n.files,x=(null==(o=t)?void 0:o.loglevel)||"none";if(!v.length)return"none"!=x&&console.error("No files to upload"),{success:!1,error:"No files to upload"};if(!n.entrypoint){const e=zi(v);if(null==e)return{success:!1,error:"No entrypoint file found"};if("object"==typeof e&&"error"in e)return{success:!1,error:e.error};"info"===x&&console.log("Entrypoint: "+e.name),n.entrypoint=e}n.entrypoint&&!v.includes(n.entrypoint)&&v.push(n.entrypoint);const b=await async function(e){if(e.length>5e3)return{success:!1,error:"Too many files. Maximum filecount is 5000"};let n=0,t=0,o=0,i=0;for(let c=e.length-1;c>=0;c--){const l=e[c];if(n+=l.size,n>1073741824)return{success:!1,error:`Total file size exceeds limit of ${1024..toFixed(0)} MB. Please reduce the size of your upload.`};const p=l.name.toLocaleLowerCase();if(".ds_store"!==p){if(p.endsWith(".gltf")?o++:p.endsWith(".glb")?(r=p)&&Oi.test(r)||i++:p.endsWith(".vrm")&&t++,p.endsWith(".gltf")){var a;o+=1,console.log(`Found glTF file ${l.name}. Will check if all dependencies are available\n`,e);const n=await l.text(),t=n.matchAll(/"uri"\s*:\s*"(?<value>.*?)"/g);if(!t)continue;const i=JSON.parse(n);if("2.0"!==i.asset.version)return console.warn("⚠ glTF version is not 2.0. This is currently not supported."),{success:!1,error:`glTF version ${i.asset.version} is unsupported.Please use glTF 2.0.`};const r=null==(a=l.path)?void 0:a.split("/"),c=r.splice(0,r.length-1).join("/");for(const n of t){var s;const t=null==(s=n.groups)?void 0:s.value;if(t){let n=!1;if(t.startsWith("http://")||t.startsWith("https://")||t.startsWith("www.")){console.log(`✅ Found remote dependency ${t} `);break}if(t.startsWith("data:")){console.log(`✅ Found embedded dependency ${t} `);break}{const o=$i(`${c}/${Ri(t)}`);console.log('❓ Check if local dependency exists "'+o+'"');for(const t of e){if(t.webkitRelativePath===o||t.name==o){n=!0,console.log(`✅ Found dependency in name or webkit: ${t.name} || ${t.webkitRelativePath} `);break}if(t.path===o){n=!0,console.log(`✅ Found dependency in path: ${t.path} `);break}}}if(!n)return console.warn("⚠ Missing dependency "+t,c),{success:!1,error:"Missing resource: "+t}}}}}else e.splice(c,1)}var r;return{success:!0,vrm_count:t,gltf_count:o,glb_count:i}}(v);if("error"in b)return{success:!1,error:b.error||"Failed to validate files"};if(null!=(i=n.entrypoint)&&i.name.endsWith(".htm")||null!=(a=n.entrypoint)&&a.name.endsWith(".html")||null!=(s=n.entrypoint)&&s.name.endsWith(".html.gz")||null!=(r=n.entrypoint)&&r.name.endsWith(".html.br"))t||(t={}),t.type="deployment";else if(b.vrm_count>10)return{success:!1,error:"Multiple model files found - this is not supported for asset uploads. Please upload a single model file only."};if(n.raw)"none"!=x&&console.warn("Raw upload - skipping gzip compression of files");else for(let e=0;e<v.length;e++){const o=v[e],i=o.name.toLowerCase();if(i.endsWith(".html")||i.endsWith(".js")||i.endsWith(".css")){var y,w;"none"!==(null==(y=t)?void 0:y.loglevel)&&console.log(`gZip compressing file: ${o.name}`);const i=await Fi(o).catch(e=>({error:`Error compressing ${o.name}: ${e.message}`}));if(null===i){var _;"none"!==(null==(_=t)?void 0:_.loglevel)&&console.error(`Did not compress file: ${o.name}`);continue}if("error"in i)return{success:!1,error:i.error,status:500};if(!i)return{success:!1,error:`Failed to compress ${o.name}`,status:500};const a=n.entrypoint===o;v[e]=i,a&&(n.entrypoint=i),"none"!==(null==(w=t)?void 0:w.loglevel)&&console.log(`gZip compressed file: ${o.name} ${a?"(entrypoint)":""}`)}}v.sort((e,n)=>e.name.includes(".needle")&&!n.name.includes(".needle")?-1:!e.name.includes(".needle")&&n.name.includes(".needle")?1:0);const{baseUrl:k,authToken:j}=e,S="Bearer "+j,T={...X(e),triggered_by:n.triggered_by,filename:`${encodeURIComponent(n.entrypoint.name)}`,"total-files":v.length.toString(),"total-files-size":v.reduce((e,n)=>e+n.size,0).toString()};null!=(c=t)&&c.content_id&&(T.content_id=t.content_id),null!=(l=t)&&l.type&&(T.type=t.type),null!=(p=t)&&p.name&&(T.name=encodeURIComponent(t.name)),null!=(u=t)&&u.parent_job_id&&(T.parent_job_id=t.parent_job_id);const $={entrypoint:(null==(d=n.entrypoint)?void 0:d.path)||(null==(m=n.entrypoint)?void 0:m.name),files:[]},E={outputs:[$]},C=[];for(let e=0;e<v.length;e++){var O,R,z;const n=v[e];let o=n.path||n.webkitRelativePath||n.name;if(null!=(O=o)&&O.includes(":"))throw new Error(`Invalid filename: ${o}`);let i=await n.arrayBuffer();const a=n.size;let s=n.type;if(null!=(R=s)&&R.length&&"unknown"!==s.toLowerCase()||(s=ji(i,o)),"deployment"===(null==(z=t)?void 0:z.type)){const e=Si(o,s);e&&(o=e.filename,s=e.mimetype)}const r=ki(i);C[e]=i,$.files[e]={filename:o,content_type:s,content_length:a,content_md5:r}}const N=await fetch(k+Z.upload.request,{...ee,method:"POST",headers:T,body:JSON.stringify(E)}).catch(e=>"fetch failed"==e.message||"Failed to fetch"==e.message?`Network error. Make sure you are connected to the internet and ${k} is reachable.`:(console.error("Failed to begin upload\n",e),null));if(null===N||"string"==typeof N)return{success:!1,error:N||"Failed to begin upload"};if(!N.ok){const e=await N.text();if(e.startsWith("{")){const n=JSON.parse(e);if("error"in n)return{success:!1,status:N.status,error:n.error}}return"none"!=x&&console.error("Failed to begin upload\n",N.status,e),{success:!1,status:N.status,error:`${e}`}}const A=await N.json();"debug"===x&&console.debug("BeginResponse",A);const F=v.reduce((e,n)=>e+n.size,0);var L;if("exists"===A.type)return"none"!=x&&console.log("Upload already exists",A.id),null!=(L=t)&&L.onStart&&t.onStart(A.id,A.content_id),{success:!0,uploadSkipped:!0,id:A.id,type:A.job_type,content_id:A.content_id,filesUploaded:v.length,totalSize:F,url:A.url};const U=n.entrypoint.webkitRelativePath||n.entrypoint.name;let I=0;null==(f=t)||null==(f=f.abort)||f.addEventListener("abort",async()=>{console.log("Upload aborted: Cancelling upload"),await fetch(k+Z.upload.cancel,{...ee,method:"POST",headers:{authorization:S,id:A.id}})});let q=!1,P=Date.now();function B(n,t,o=!1){if(!o&&Date.now()-P<1e3)return!1;if(q&&"completed"!==t)return void("none"!=x&&console.warn("Invalid status update..."));P=Date.now();const i=Math.floor(I/F*100);return"debug"===x&&console.log("SET STATUS: "+t,n,i),ci({identifier:A.id,status:t,status_message:n,progress:i},e),!0}null!=(h=t)&&h.onStart&&t.onStart(A.id,A.content_id);const D=Date.now(),M=new Ai(v.length,F/1024/1024),W=new Array;let G=!1;const H=[...v],J=v.length;for(let o=0;o<H.length;o++){var K;if(null!=(K=t)&&null!=(K=K.abort)&&K.aborted){console.debug("Upload aborted");break}if(G){console.debug("Upload failed");break}if(W.length<10){console.debug(`Uploading file ${o}/${v.length}: ${v[o].name}`);let i=0,a=0;const s=$.files[o],r=s.filename,c=C[o],l=s.content_length,p=s.content_type,u=v[o],d=u.name.endsWith(".gz")?"gzip":u.name.endsWith(".br")?"br":void 0,m=Ui({uploadId:A.id,uploadRequestPUTUrl:A.request_put_url,entrypointPath:U,file:v[o],fileName:r,fileMd5:s.content_md5,fileBuffer:c,fileType:p,content_encoding:d,fileSize:l,fileIndex:o,fileNumber:o+1,fileCount:J,loglevel:x,experimental:n.experimental,args:e,options:t,onProgress:e=>{var n;const s=e.progress||0;i=v[o].size*s;const c=i-a;if(a=i,I+=c,null!=(n=t)&&n.progress){const e=I/F,n=v.length,i=v[o].size,a=(Date.now()-D)/1e3,c=M.updateProgress(I/1024/1024);t.progress({uploadedBytes:I,totalBytes:F,progress01:e,fileName:v[o].name,fileSize:i,fileProgress01:s,fileIndex:o,totalFiles:n,estimatedTimeLeftDisplay:c.estimatedTimeRemainingString,estimatedTimeLeft:c.estimatedTimeRemaining,elapsedTime:a}),B(`Uploading file ${o+1}/${n} (${r}): ${(100*s).toFixed(0)}% of ${Ti(F)}. Finished in approx. ${c.estimatedTimeRemainingString}`,"running",!1)}}}).then(e=>{if(!0!==e)return e;for(let e=W.length-1;e>=0;e--)W[e]===m&&W.splice(e,1);B(`Uploaded ${Ti(I)+" of "+Ti(F)} for ${v[o].name}`,"running")}).catch(e=>{var n;null!=(n=t)&&null!=(n=n.abort)&&n.aborted?console.warn("Upload aborted"):(console.error(e.message),G=!0)});W.push(m)}W.length>=10&&await Promise.race(W)}if(await Promise.all(W).catch(e=>{var n;null!=(n=t)&&null!=(n=n.abort)&&n.aborted?console.warn("Upload aborted"):(console.error(e.message),G=!0)}),G)return await ci({identifier:A.id,status:"failed",error:"Failed to upload files"},e),{success:!1,error:"Failed to upload files"};if(null!=(g=t)&&null!=(g=g.abort)&&g.aborted)return await ci({identifier:A.id,status:"canceled",status_message:"Upload aborted",error:"Upload aborted"},e),{success:!1,error:"Upload aborted"};q=!0,console.log(`Upload Done: All files uploaded to ${A.id}`);const V={...X(e),id:A.id};"none"!=x&&console.log("Completing upload - notify server");let Y=null;for(let e=0;e<5;e++){var Q;await Ei(1e3*e);const n=AbortSignal.timeout(2e4+1e3*e);if(Y=await fetch(k+Z.upload.done,{...ee,method:"POST",headers:V,signal:n}).catch(n=>(console.error(`Failed to complete upload (${e+1} / 5)`,n.message),null)),!0===(null==(Q=Y)?void 0:Q.ok))break;var ne;"none"!=x&&e<4&&console.warn(`Failed to complete upload (${(null==(ne=Y)?void 0:ne.status)||"no status"}): will retry in 1 second`)}if(!Y)return console.error("Failed to complete upload"),{success:!1,error:"Failed to complete upload"};if(!Y.ok){if(524===Y.status)return console.error("Failed to complete upload: Gateway Timeout"),{success:!1,error:"Failed to complete upload: Gateway Timeout"};{const e=await Y.text();return console.error(`Failed to complete upload (${Y.status}): ${e}`),{success:!1,error:"Failed to complete upload"}}}"none"!=x&&console.log("Upload complete");const te=await Y.json();return{success:!0,type:te.type,uploadSkipped:!1,id:te.id,content_id:te.content_id,url:te.url,filesUploaded:v.length,totalSize:F}}(e,n,t);return await o.finally(()=>{})}async function Ui(e){const{uploadId:n,uploadRequestPUTUrl:t,entrypointPath:o,file:i,fileName:a,fileBuffer:s,fileMd5:r,fileSize:c,fileType:l,content_encoding:p,fileIndex:u,fileNumber:d,fileCount:m,loglevel:f,args:h,options:g,experimental:v}=e;"info"===f&&console.log(`Uploading file "${i.name}" type=${l} (${c}) ${i.type} with hash ${r}`);const x={...X(h),"Content-Type":"application/json",org:h.org,job_id:n,filesize:c.toString(),progress:(u/m*100).toFixed(0)},b={filename:a,entrypoint:o,"content-type":l,"content-md5":r,"content-encoding":p,output_index:0};"debug"===f&&console.debug("Requesting presigned URL with headers",x);const y=JSON.stringify(b);let w=null,_="";for(let e=0;e<5;e++){var k;if(null!=w)break;if(null!=g&&null!=(k=g.abort)&&k.aborted)throw new Error("Upload aborted");await Ei(200*e),w=await fetch(t,{...ee,method:"POST",headers:x,body:y}).then(async e=>e.ok?await e.json():(_=await e.text(),console.log(t),console.warn(`Failed to get presigned url for "${a}" "${l}" (${e.status}).\n→ Retrying...`),null)).catch(e=>(_=e.message,console.warn("Failed to get presigned url "+e.message+", retrying..."),null))}if(null==w)throw new Error(`Failed to get presigned url for "${a}" "${l}" \n${_}`);const j=w.presigned_url;var S=!1;let T=null;for(let n=0;n<5;n++){var $;if(n>0&&("none"!==f&&console.log(`Retry PUT #${n} for file ${a}`),await Ei(1e3*n)),null!=g&&null!=($=g.abort)&&$.aborted)throw new si("Upload aborted");const t={"Content-Type":l,"Content-MD5":r};v&&(t["Content-Length"]=c.toString()),p&&(t["Content-Encoding"]=p),0===n&&"none"!=f&&console.log(`Uploading file ${d}/${m}: ${a}`),"debug"===f&&console.debug("PUT with headers",t);const o=await ai.put(j,s,{...ee,withCredentials:!1,signal:null==g?void 0:g.abort,headers:t,timeout:3e5,onUploadProgress:n=>{e.onProgress(n)}}).catch(e=>(T=e.message,e instanceof si||("none"!==f&&console.error(`Failed to upload file (PUT) (${d}, ${a}) "${e.message}"`),"debug"===f&&(console.log(t,{fileSize:c}),e.response?console.debug(e.response):console.debug(e))),null));if(o){if(200!==o.status){T=`${o.statusText} (${o.status})`,console.debug(`Failed (${o.status} ${o.status}) to upload file ${i.name} to "${w.path}". Retrying...`);continue}S=!0,"info"===f&&console.log(`Uploaded file ${d}/${m} "${a}" (${l}, ${Ti(c)})`);break}}var E;if(!S)throw console.error("Failed to upload file "+a),await ci({identifier:n,status:"failed",status_message:`Failed to upload file (${a}): ${null==(E=T)?void 0:E.substring(0,200)}`,error:"Failed to upload file "+a},h),new Error("Failed to upload file "+a);return!0}async function Ii(e,n,t){const o=e.baseUrl+Z.jobs.request_download_url,i=await fetch(o,{...ee,method:"POST",headers:{...X(e),job_id:n},body:JSON.stringify(t)}).catch(e=>(console.error(e),null));return i&&i.ok?await i.text():(console.error("Failed to get presigned download URL",null==i?void 0:i.status),null)}async function qi(e,n={}){const t=new URL(e.baseUrl+Z.content.root);n.content_type&&t.searchParams.set("content_type",n.content_type),n.content_format&&t.searchParams.set("content_format",n.content_format),n.search&&t.searchParams.set("search",n.search),n.tags&&t.searchParams.set("tags",n.tags),n.types&&t.searchParams.set("types",n.types),n.trash&&t.searchParams.set("trash","true"),n.page&&t.searchParams.set("page",String(n.page)),n.limit&&t.searchParams.set("limit",String(n.limit)),n.collection_id&&t.searchParams.set("collection_id",n.collection_id),n.offset&&t.searchParams.set("offset",String(n.offset));const o=X(e),i=await fetch(t,{...ee,method:"GET",headers:o});if(!i.ok){const e=await i.text();throw new Error(`Failed to list content (${i.status}): ${e}`)}return await i.json()}new Array;const Pi={schema:{name:"load_needle_engine_skill",description:'Load the Needle Engine skill with coding guidelines, patterns, and reference docs. Call this before answering Needle Engine coding or technical questions. Without arguments loads the main skill file. Use the "file" parameter to load specific reference files (e.g. "references/api.md", "references/components.md"). Call without arguments first to discover available references.',inputSchema:{type:"object",properties:{file:{type:"string",description:'File to load relative to the skill root, e.g. "references/api.md". Defaults to the main skill file.'}},additionalProperties:!1,required:[]}},async execute(e){const n=(null==e?void 0:e.file)||"SKILL.md";if(n.includes("..")||n.startsWith("/"))return{error:"Invalid file path."};try{const e="https://raw.githubusercontent.com/needle-tools/ai/main/providers/claude/plugin/skills/needle-engine/"+encodeURI(n),t=new AbortController,o=setTimeout(()=>t.abort(),5e3),i=await fetch(e,{signal:t.signal,redirect:"follow"});return clearTimeout(o),i.ok?{content:await i.text()}:{error:`Could not fetch '${n}' (HTTP ${i.status})`}}catch(e){return{error:`Error fetching skill: ${e.message}`}}}},Bi=()=>"https://cloud-staging.needle.tools/account",Di=()=>"https://cloud-staging.needle.tools/edit";function Mi(e){return N(e)}const Wi=["node_modules",".git",".vscode",".vercel",".github",".idea"];function Gi(e,n,t=null,o="",i=0){if(null===t){if(i>0)throw new Error("result must be provided if level > 0. Did you forget to pass it?");t={files:[],total_size:0}}if(0===i){if(!a(n))throw new Error(`Directory or file "${n}" does not exist.`);if(s(n).isFile()){const e=_i(n,r(n));return e.path=e.name,t.files.push(e),t.entrypoint=e,t}}else if(i>20)throw new Error("Recursion depth too high. Are you sure you are providing the correct directory?");const l=c(n,{withFileTypes:!0});for(const i of l)if(0==i.isDirectory()){if("optimization"===e&&0==((p=(p=i.name).toLowerCase()).endsWith(".glb")||p.endsWith(".gltf")||p.endsWith(".vrm")||p.endsWith(".usdz")||p.endsWith(".usd")||p.endsWith(".fbx")))continue;const a=_i(o+i.name,r(n+"/"+i.name));if(t.files.push(a),t.total_size+=a.size,t.total_size>1073741824)throw new Error(`Collected filesize exceeds ${1024..toFixed(0)} MB. Are you sure you are providing the correct directory?`);if(t.files.length>1e4)throw new Error(`Too many files (${t.files.length}): The maximum filecount is 10,000.`)}var p;for(const a of l)if(a.isDirectory()){if(Wi.includes(a.name))continue;Gi(e,n+"/"+a.name,t,o+a.name+"/",i+1)}return t}const Hi=`${F(B.tmpdir())}/Needle/Cloud/logs`;L(Hi,{recursive:!0});const Ji=D.resolve(Hi,"cli.log");if(U(Ji)){const e=I(Ji),n=e.mtimeMs;if(Date.now()-n>432e5||e.size>52428800){const e=D.resolve(Hi,"cli.prev.log");q(Ji,e,n=>{n?console.error(`Failed to rename log file: ${n.message}`):console.log(`Log file renamed to ${e}`)})}}function Ki(){return Ji}async function Vi(e,n){return e=`[${(new Date).toISOString()}] ${e}`,null!=n&&n.emptyLineBefore&&(e="\n"+e),P(Ji,e+"\n",{flag:"a"}).then(()=>!0).catch(e=>(console.error(`Failed to write to log file: ${e.message}`),!1))}function Yi(e,n,t){process.env.GITHUB_ACTIONS&&(process.env.GITHUB_OUTPUT?l(process.env.GITHUB_OUTPUT,`${e}=${n}\n`):null==t||t.logger.warn("GITHUB_OUTPUT environment variable is not set. Cannot set output variables."))}async function Qi(e){var n;e.directory=v.resolve(e.directory);let{files:t,entrypoint:o}=Gi("deployment",e.directory);if(e.entrypoint&&(o=t.find(n=>n.path===e.entrypoint),!o))return void A().fail(`Entrypoint "${e.entrypoint}" not found. Please make sure you provide a valid entrypoint.`);if(!o){const e=zi(t);if("error"in e)return Vi(`[Deployment] Error determining entrypoint: ${e.error}`),void A().fail(`Error: ${e.error}`);o=e}if(!(t.length>0&&o&&(o.name.toLowerCase().endsWith(".html")||o.name.toLowerCase().endsWith(".html.gz")||o.name.toLowerCase().endsWith(".html.br"))))return Vi("[Deployment] Deployment is not valid: No .html file found."),void A().fail("Deployment is not valid: No .html file found.");if(!o)return Vi("[Deployment] No entrypoint found. Please provide an index.html file in your project."),void A().fail("No entrypoint found. Please provide an index.html file in your project.");const i=null!=(n=e.endpoint)&&n.length?e.endpoint:"https://cloud-staging.needle.tools/api";let a=e.name;a||(a=Zi(e.directory)||void 0);let s=null==i?void 0:i.includes("localhost");const r=a?` of "${a}"`:"",c=A().start(`Begin deployment${r} ${s?"(local)":""} of ${t.length} files...`);c.spinner="earth",await Ei(50);let l=-1;Vi(`Deployment started${r} ${s?"(local)":""} of ${t.length} files...`);const p=await Li({baseUrl:i,authToken:e.token,org:e.org_id},{triggered_by:"cli",files:t,entrypoint:o,experimental:e.experimental,raw:e.raw},{name:a,type:"deployment",loglevel:e.verbose?"debug":"none",progress:e=>{if(e.fileIndex!==l){l=e.fileIndex;const n=e.totalBytes/1024/1024;c.text=`Uploading file ${e.fileIndex+1} of ${e.totalFiles} files: ${(e.uploadedBytes/1024/1024).toFixed(1)} / ${n.toFixed(1)} MB. Total progress: ${(100*e.progress01).toFixed(1)} %. Time passed: ${e.elapsedTime.toFixed(0)}sec. About ${e.estimatedTimeLeftDisplay} until complete.`}}}).catch(e=>(c.fail(e),null));if(null!=p&&!0===p.success){c.succeed(`🚀 Deployment${r} successful (${p.content_id}/${p.id})`);let n="";n=p.url?p.url:"https://cloud-staging.needle.tools/view/"+p.content_id+"/"+p.id,console.log("🔗 View the deployment at: "+n),e.open&&Mi(n);try{Yi("deployment_url",n,{logger:e.logger}),Yi("edit_id",p.content_id,{logger:e.logger})}catch(n){e.logger.error("Error writing output for CI: "+n)}}else c.fail(`${null==p?void 0:p.error}`)}function Zi(e,n=0){if(n>10)return null;const t=v.join(e,"needle.config.json");if(a(t)){const n=v.join(e,"package.json");if(a(n)){var o;const e=r(n,"utf8"),t=JSON.parse(e);if(null!=(o=t.name)&&o.length)return t.name}return v.basename(e)}const i=v.dirname(e);return i===e?null:Zi(i,n+1)}async function Xi(e){if(!e.outDir)throw new Error("Output directory is required");const n=A("Downloading results...").start(),t=await async function(e){const n=await async function(e){if(!e.identifier)return null;const n={...X(e)},t={job_id:e.identifier,fields:e.fields,content_format:e.content_format},o=e.baseUrl+Z.jobs.query,i=await fetch(o,{...ee,method:"POST",headers:n,body:JSON.stringify(t)}).catch(e=>(console.error(e),null));if(null==i)return null;if(!i.ok)return console.error("Failed to get job",i.status,await i.text()),null;const a=await i.json().catch(e=>(console.error(e),null));return null==a?null:a.job}({baseUrl:e.baseUrl,authToken:e.authToken,org:e.org,identifier:e.identifier,fields:["results"],content_format:e.content_format});if(null==n||!n.results)return{error:`Job ${e.identifier} did not produce any result files`};const t=n.results;if(!t.bucket||!t.directory)return{error:`Job ${e.identifier} has incomplete result data`};const o=[];for(const n of t.files){if((i=n.filename).startsWith(".extras/")||i.startsWith(".extras\\")||i.endsWith("screenshot.needle.webp")||ri.test(i)||i.endsWith(".needle.log"))continue;const a=`${t.directory}/${n.filename}`,s=await Ii(e,e.identifier,{bucket:t.bucket,key:a});if(!s){console.error(`Failed to get presigned URL for: ${n.filename}`);continue}const r=await fetch(s).catch(e=>(console.error(e),null));if(!r||!r.ok){console.error(`Failed to download (${null==r?void 0:r.status} | ${null==r?void 0:r.statusText}): ${n.filename}`);continue}const c=await r.arrayBuffer().catch(e=>(console.error(e),null));if(!c)return{error:`Failed to read downloaded file: ${n.filename}`};o.push({filename:n.filename,data:c})}var i;return{files:o}}({baseUrl:e.baseUrl,authToken:e.authToken,org:e.org,identifier:e.identifier,content_format:e.content_format});if("error"in t)return n.fail(t.error),{error:t.error};const o=[];for(const i of t.files){n.text=`Downloading ${i.filename}`,a(e.outDir)||p(e.outDir,{recursive:!0});let s=i.filename;if(e.filename){const n=i.filename.substring(i.filename.lastIndexOf("."));if(1===t.files.length)s=e.filename.includes(".")?e.filename:e.filename+n;else{const n=i.filename.substring(i.filename.lastIndexOf(".")),t=i.filename.substring(0,i.filename.lastIndexOf("."));s=e.filename+"-"+t+n}}const r=e.outDir+"/"+s,c=r.split("/").slice(0,-1).join("/");a(c)||p(c,{recursive:!0}),e.verbose&&console.log(`Writing ${i.filename} (${(i.data.byteLength/1024).toFixed(2)} KB) to "${r}"`),u(r,Buffer.from(i.data)),o.push(r)}return n.succeed(`Downloaded ${o.length} ${1===o.length?"file":"files"}: ${o.join(", ")}`),e.verbose&&console.log("Downloaded files:\n",o),{success:!0,paths:o}}async function ea(e){const n=new URL((e.endpoint||"https://cloud-staging.needle.tools/api")+Z.get.deployments);n.searchParams.append("offset",e.offset.toString()),n.searchParams.append("limit",e.limit.toString()),e.names&&n.searchParams.append("name",e.names.map(e=>e.trim()).join(","));const t=await fetch(n,{method:"GET",headers:{...X({authToken:e.authToken,org:e.org})}});return t.ok?await t.json():{status:t.status,error:await t.text()}}const na=["#e06c75","#d19a66","#e5c07b","#98c379","#7ec8a4","#56b6c2","#61afef","#528bff","#c678dd","#e88de4","#be5046","#d4976c","#b5cea8","#4ec9b0","#9cdcfe","#c8ae9d"];function ta(e){let n=0;for(let t=0;t<e.length;t++)n=(n<<5)-n+e.charCodeAt(t)|0;const[t,o,i]=function(e){const n=parseInt(e.slice(1),16);return[n>>16&255,n>>8&255,255&n]}(na[Math.abs(n)%na.length]);return`[38;2;${t};${o};${i}m${e}[0m`}function oa(e){return`[2m${e}[0m`}const ia=8424,aa="http://localhost:8424";var sa;const ra={appId:"2stnsoa6a1b0gwc7lra55",appSecret:"seV1T6iKBKLlttjdk25I2px43ZCEHnPJ",endpoint:"https://auth.needle.tools",resources:["https://cloud-staging.needle.tools/api"],scopes:["openid","profile","email","roles","urn:logto:scope:organizations","urn:logto:scope:organization_roles","identities","custom_data","all","read","write","delete","upload","download","invite","editor"]},ca={getAccessToken:!0,fetchUserInfo:!0,resource:null==(sa=ra.resources)?void 0:sa[0],resources:ra.resources||[],scopes:ra.scopes||[]};function la(e="default"){return null==e?`${aa}/?signed-out=1`:"too-many-logins"===e?`${aa}/?too-many-logins=1`:"error"===e?`${aa}/?error=1`:`${aa}/?signed-out=1`}var pa;function ua(){ma.clear(),i.existsSync(ga)&&i.rmSync(ga,{recursive:!0})}const da=process.argv.includes("--debug-auth"),ma=new Map;let fa=null==(pa=ra.resources)?void 0:pa[0];if(fa)try{fa=new URL(fa).hostname}catch(e){da&&console.error("Invalid resource URL",fa)}let ha=fa||"-";ha=ha.replace(/[^a-zA-Z0-9\.\-]/g,"");const ga=`${$()}/Needle/Cloud/.auth/${ha}`,va={accessToken:`${ga}/accessToken`,refreshToken:`${ga}/refreshToken`,idToken:`${ga}/idToken`,signInSession:`${ga}/signInSession`};function xa(e){return va[e]||`${ga}/${e}`}const ba=new class{constructor(){this.basePath=ga}async setItem(e,n){da&&console.debug("\n- SET ITEM",e,n),i.existsSync(this.basePath)||i.mkdirSync(this.basePath,{recursive:!0});const t=xa(e);t&&i.writeFileSync(t,n),ma.set(e,n)}async getItem(e){da&&console.debug("\n- GET ITEM",e);const n=ma.get(e);if(void 0===n){const n=xa(e);if(n){if(i.existsSync(n)){const t=i.readFileSync(n,"utf8");return ma.set(e,t),t}}else console.error(`Unknown token name: ${e}`);return null}return String(n)}async removeItem(e){da&&console.debug("\n- REMOVE ITEM",e),ma.delete(e);const n=xa(e);n&&i.existsSync(n)&&i.rmSync(n)}};let ya=null;function wa(){return ya||(ya=new W(ra,{storage:ba,navigate:()=>{}})),ya}function _a(){ya=null}let ka=null;function ja(e,n){return ka?ka.then(()=>e.getContext(n),()=>e.getContext(n)):(ka=e.getContext(n).finally(()=>{ka=null}),ka)}function Sa(){return ja(e=wa(),ca).then(n=>{const t=n;return t.client=e,t}).catch(async e=>{const n=e instanceof Error?e.message:String(e);return"oidc.invalid_token"==e.code||"oidc.invalid_grant"==e.code?(Vi(`OIDC: ${e.code} – token refresh failed, clearing stale tokens`),ua(),ya=null,console.error("Session expired – please log in again: npx needle-cloud login")):e.code?(console.error(e.code),Vi(`OIDC: ${e.code} – ${n}`)):Vi(`OIDC: getContext failed – ${n}`),null});var e}let Ta=null;function $a(e){var n;const t=null==(n=e.userInfo)?void 0:n.custom_data;if(!t)return[];const o=t.machines;return o?o.map(e=>e.name):[]}let Ea=Date.now();async function Ca(e){var n;const t=Date.now();t-Ea>3e4&&"client"in e&&(Ea=t,await e.client.fetchUserInfo().catch(console.error));const o=null==(n=e.userInfo)?void 0:n.custom_data;if(!o)return!1;if(Ta||await Oa(),!Ta)return console.error("Failed to get machine id"),!0;const i=o.machines;if(!i)return!1;const a=i.some(e=>e.id===Ta);return a}async function Oa(){return Ta||await import("node-machine-id").then(async e=>{const n=await e.default.machineId(!1);Ta=n}),Ta}function Ra(){return T.userInfo().username+"@"+T.hostname()}async function za(e,n={signout:!1}){if(e.accessToken){const o={machine_id:await Oa(),machine_name:Ra(),platform:T.platform(),arch:T.arch()},i=await fetch("https://cloud-staging.needle.tools/api"+Z.account.post_machine,{method:"POST",headers:{Authorization:"Bearer "+e.accessToken,"Content-Type":"application/json"},body:JSON.stringify(o)}).catch(e=>{var n,t;const o=(null==e||null==(n=e.cause)?void 0:n.code)||(null==e||null==(t=e.cause)?void 0:t.message)||(null==e?void 0:e.message)||"connection refused";return console.error(`Failed to validate login: ${o} - Make sure https://cloud-staging.needle.tools/api is reachable`),Vi(`Failed to validate login: "${o}" - Make sure https://cloud-staging.needle.tools/api is reachable.`),{status:502,error:`Failed to validate login at 'https://cloud-staging.needle.tools/api' (${o}) - make sure this URL is reachable.`}});if(!i)return!1;if("error"in i)return i;let a=!0;if(403===i.status){const e=await i.text();if(e.trimStart().startsWith("{")){const n=JSON.parse(e);n.logins&&(a=!1,Vi("Too many logins from different machines"),A().fail("You have reached the maximum number of allowed logins\n"),A().warn(`Please logout from one of the following machines:\n- ${n.logins.join("\n- ")}\n`))}}var t;return!!a||(n.signout&&(ua(),"client"in e&&(null==(t=e.client)||t.signOut(la("too-many-logins")))),!1)}return!0}const Na=e=>{const n=G();return n.use("/:action",async(n,t,o)=>{const{action:i}=n.params,a=(s={navigate:e=>{t.redirect(e)}},new W(ra,{storage:ba,navigate:e=>{if(null==s.navigate)throw new Error("Can not navigate");s.navigate(e)}}));var s;switch(i){case"sign-in":e.invalid_login=!1,e.invalid_login_type=null,e.error=void 0,Vi("Sign in..."),await a.clearAllTokens(),_a(),await a.signIn(`${aa}/auth-callback`);break;case"sign-out":{var r,c;const n=await Sa(),t=(null==n||null==(r=n.userInfo)?void 0:r.sub)||(null==n||null==(c=n.claims)?void 0:c.sub),o=null==n?void 0:n.accessToken;Vi(`Sign out... (${t})`),t&&o&&await async function(e){return!e.accessToken||import("node-machine-id").then(async n=>{const t=await Oa();return Ta=t,await fetch("https://cloud-staging.needle.tools/api"+Z.account.post_machine,{method:"POST",headers:{Authorization:"Bearer "+e.accessToken,"Content-Type":"application/json"},body:JSON.stringify({action:"logout",machine_id:t,machine_name:Ra()})}).catch(e=>{Vi(`Failed to validate logout: ${e.message} - Make sure https://cloud-staging.needle.tools/api is reachable`),console.error(`Failed to validate logout: ${e.message} - Make sure https://cloud-staging.needle.tools/api is reachable`)}),!0})}({userId:t,accessToken:o}).catch(e=>{console.error(e),Vi(`Failed to validate logout: ${e}`)}),e.invalid_login=!1,e.invalid_login_type=null,e.error=void 0,console.log("User signed out"+(t?`: ${t}`:"")),await a.signOut(la()),_a();break}case"auth-callback":if(n.url){const o=await a.handleSignInCallback(`${aa}${n.originalUrl}`).catch(e=>({error:e}));if(_a(),o&&"error"in o){Vi(`Error during sign in: ${o.error}`);const e=o.error instanceof Error?o.error.message:String(o.error);t.redirect(aa+"?cancelled&message="+encodeURIComponent(e))}else{var l,p,u,d;const n=await Sa();if(null!=n&&n.isAuthenticated){var m,f;e.invalid_login=!1,e.user_email=(null==(m=n.claims)?void 0:m.email)||(null==(f=n.userInfo)?void 0:f.email)||null,e.logged_in_machine_names=[...$a(n)];const o=await za(n,{signout:!0});if(!o)return e.invalid_login=!0,e.invalid_login_type="too-many-logins",t.redirect(la("too-many-logins"));if("object"==typeof o&&"error"in o)return e.invalid_login=!0,e.invalid_login_type="error",e.error=o.error,t.redirect(la("error"))}console.log(`User logged in: ${(null==n||null==(l=n.userInfo)?void 0:l.sub)||(null==n||null==(p=n.claims)?void 0:p.sub)}`),Vi(`User logged in: ${(null==n||null==(u=n.userInfo)?void 0:u.sub)||(null==n||null==(d=n.claims)?void 0:d.sub)}`),t.redirect(aa)}}break;default:o()}}),n};function Aa(e){var n,t,o,i;if(!e)return"";let a=(null==(n=e.claims)?void 0:n.name)||(null==(t=e.userInfo)?void 0:t.name)||(null==(o=e.claims)?void 0:o.username)||"";var s,r;return(!a||a.length<=0)&&null!=(i=e.claims)&&i.email?(r=null==(s=e.claims)?void 0:s.email)?(r=(r=(r=(r=r.split("@")[0]).replace(/[^a-zA-Z0-9]/g," ")).replace(/\s+/g," ")).split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" "),r):r:a}async function Fa(e,n=null){var t,o;if(!e)return{status:500,error:"User is not provided"};if(!e.isAuthenticated)return{status:403,error:"User is not authenticated"};const i=(null==(t=e.claims)?void 0:t.sub)||(null==(o=e.userInfo)?void 0:o.sub);n===i&&(n=null);let a=null;if(null==n)a=e.accessToken;else if(null!=n){var s;let t=null==e||null==(s=e.userInfo)||null==(s=s.organization_data)?void 0:s.find(e=>e.id===n);if(!t){var r;const o=n.toLowerCase();t=null==e||null==(r=e.userInfo)||null==(r=r.organization_data)?void 0:r.find(e=>e.name.toLowerCase()===o)}if(!t)return{status:403,error:`User is not part of team "${n}"`};n=t.id,a=await e.client.getOrganizationToken(t.id).catch(e=>{var o;return console.error(`Error getting organization token for "${null==(o=t)?void 0:o.name}" (${n}): ${e.message}`),null})}return a?{authToken:a,org:n}:{status:403,error:"No access token found"}}const La=function(){return async(e,n,t)=>{const o=await Sa();Object.defineProperty(e,"user",{enumerable:!0,get:()=>o}),t()}},Ua=process.env.NEEDLE_SEARCH_ENDPOINT||"https://search.needle.tools",Ia=process.env.NEEDLE_SEARCH_API_KEY||"da5737c00d6822c32a1b9e3b5dab094bfc17e205aef2f7f3e1a0fd4ebc77b79f",qa=[{name:"needle_cloud_me",description:"Get current Needle Cloud user information",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},{name:"needle_search",description:"Search Needle Engine documentation, forum posts, and community discussions. Returns relevant content ranked by semantic similarity. Use this to find information about Needle Engine features, APIs, components, workflows, and troubleshooting.\n\nIMPORTANT: If search results seem irrelevant or low-quality (scores below 0.6, or results don't match the topic), retry with different search terms — up to 3 total attempts. Try varying your query: use specific class/method names, try shorter keyword-based queries, or rephrase the question. Do NOT guess or fabricate answers based on poor search results.",inputSchema:{type:"object",properties:{query:{type:"string",description:'What to search for, e.g. "how to add physics components" or "WebXR hand tracking" or "deploy to vercel"'},limit:{type:"number",description:"Maximum number of results to return (1-20, default 5)"}},additionalProperties:!1,required:["query"]}}],Pa={needle_cloud_me:async function(e){try{const e=await Sa(),n=null==e?void 0:e.userInfo;return n?JSON.stringify({id:n.sub,name:n.name||n.preferred_username,email:n.email,profile_picture:n.picture}):"No user is currently logged in."}catch(e){return"Error retrieving user: "+(e instanceof Error?e.message:String(e))}},needle_search:async function(n){const t=n.query;if(!t||"string"!=typeof t)return{content:[{type:"text",text:"Error: query parameter is required."}]};const o=Math.min(Math.max(Number(n.limit)||5,1),20),i=`${Ua}/api/semantic-search?q=${encodeURIComponent(t)}&limit=${o}`,a={Accept:"application/json"};Ia&&(a.Authorization=`Bearer ${Ia}`);try{const n=await e(i,{headers:a,signal:AbortSignal.timeout(15e3)});if(!n.ok){const e=await n.text().catch(()=>"");return{content:[{type:"text",text:`Search API error (${n.status}): ${e}`}]}}const o=await n.json();if(!o.results||0===o.results.length)return{content:[{type:"text",text:`No results found for: "${t}"`}]};const s=o.results.map((e,n)=>`## [${n+1}] ${e.title} (score: ${e.score})\nSource: ${e.source}${e.url?` — ${e.url}`:""}\n\n`+e.content+(e.truncated?`\n\n> Content truncated (${e.content.length} of ${e.contentLength} chars shown).${e.url?` Full content: ${e.url}`:""}`:"")).join("\n\n---\n\n");return{content:[{type:"text",text:`Found ${o.results.length} results for "${t}" (${o.durationMs}ms):\n\n${s}`}]}}catch(e){return{content:[{type:"text",text:`Search failed: ${e instanceof Error?e.message:String(e)}`}]}}}},Ba=new Map;function Da(e,n){const t=qa.findIndex(n=>n.name===e);-1!==t&&(qa.splice(t,1),delete Pa[e],n())}function Ma(e,n,t,o){const i=qa.findIndex(n=>n.name===e.name);if(-1!==i&&qa.splice(i,1),qa.push(e),Pa[e.name]=n,Wa.delete(e.name),null!=t&&t.source){const n=Ba.get(t.source)||new Set;n.add(e.name),Ba.set(t.source,n)}o()}const Wa=new Map;async function Ga(e,n){const t=Pa[e];if(!t){const n=Wa.get(e);if(n)return{isError:!0,content:[{type:"text",text:`This tool is currently unavailable because "${n}" disconnected. Please reconnect (e.g. reopen the browser tab) and try again. You should also call tools/list to refresh your available tools.`}]};throw new Error(`Tool "${e}" is not registered.`)}const o=await t(n);if("string"==typeof o)return{content:[{type:"text",text:o}]};if("object"==typeof o)return Array.isArray(o.content)?o:{content:[{type:"text",text:JSON.stringify(o)}]};throw new Error(`Invalid tool result type for tool "${e}".`)}let Ha=null;function Ja(){if(Ha)return Ha;{const e=Ya();return Ha=e,e}}const Ka="projects.json";function Va(){const e=process.env.HOME||process.env.USERPROFILE||process.cwd(),n=b(e,".needle");return a(n)||p(n,{recursive:!0}),b(n,Ka)}function Ya(){const e=Va();if(!a(e))return{entries:[]};const n=r(e,"utf-8");try{const e=JSON.parse(n);return Ha=e,e}catch(e){return console.error("Failed to parse project info file:",e),{entries:[]}}}function Qa(e={}){Ma({name:"get_editor_logpath",description:"Get the filepath to the editor log file (this may be Unity or Blender)",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},t=Ja();if(t){const e=null==t?void 0:t.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];if(null!=e&&e.log_location)n.content.push({type:"text",text:e.log_location});else{let t="No recent project with known log location known.";e&&(t+=" Recent project is "+(null==e?void 0:e.project_location)),n.content.push({type:"text",text:t})}}return n},{source:"cli"},()=>{}),Ma({name:"get_editor_project_path",description:"Get the filepath to the currently opened project in the editor (this may be Unity or Blender)",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},t=Ja();if(t){const e=null==t?void 0:t.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];n.content.push(null!=e&&e.project_location?{type:"text",text:e.project_location}:{type:"text",text:"No recent project with known project location known."})}return n},{source:"cli"},()=>{}),Ma({name:"get_editor_scene_path",description:"Get the filepath to the currently opened scene in the editor (Unity or Blender). Use this to find out which scene the user is working on.",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},t=Ja();if(t){const e=null==t?void 0:t.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];n.content.push(null!=e&&e.scene_location?{type:"text",text:e.scene_location}:{type:"text",text:"No recent project with known scene location known."})}return n},{source:"cli"},()=>{}),Ma({name:"get_web_project_path",description:"Get the filepath to the web project directory (the Needle Engine web frontend project).",inputSchema:{type:"object",properties:{},additionalProperties:!1,required:[]}},async e=>{const n={content:[]},t=Ja();if(t){const e=null==t?void 0:t.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0];n.content.push(null!=e&&e.web_location?{type:"text",text:e.web_location}:{type:"text",text:"No recent project with known web project location known."})}return n},{source:"cli"},()=>{}),Ma({name:"local_read_file",description:"Read a file from the user's local project (editor project or web project). The path must be relative to the project root or an absolute path inside the project. Returns the file contents (or a portion if offset/limit are specified). Use 'filter' to search for specific terms within the file.",inputSchema:{type:"object",properties:{path:{type:"string",description:"File path (relative to project root, or absolute within the project)"},offset:{type:"number",description:"Line number to start reading from (1-based, default: 1). In filter mode: number of matches to skip."},limit:{type:"number",description:"Maximum number of lines to return (default: 200, max: 1000). In filter mode: max matches to return."},filter:{type:"string",description:"Search term to grep for in the file (case-insensitive). Returns matching lines with line numbers instead of sequential content."}},additionalProperties:!1,required:["path"]}},async e=>{const n=ns(e.path);if(!n)return{content:[{type:"text",text:"Error: path is outside the project directory."}]};try{const t=s(n.resolved).mtime.toISOString(),o=r(n.resolved,"utf-8").split("\n");if(e.filter){const i=e.filter.toLowerCase(),a=[];for(let e=0;e<o.length;e++)o[e].toLowerCase().includes(i)&&a.push(`${e+1}: ${o[e]}`);const s=a.length,r=Math.max(0,e.offset||0),c=Math.min(Math.max(e.limit||200,1),1e3),l=a.slice(r,r+c);return{content:[{type:"text",text:`File: ${n.resolved} (modified: ${t}) — filter="${e.filter}" → ${s} matches (showing ${r+1}-${r+l.length}) in ${o.length} lines\n`+l.join("\n")}]}}const i=Math.max(1,e.offset||1),a=Math.min(e.limit||200,1e3),c=o.slice(i-1,i-1+a),l=c.map((e,n)=>`${i+n}: ${e}`).join("\n");return{content:[{type:"text",text:`File: ${n.resolved} (${o.length} lines, modified: ${t}, showing ${i}-${i+c.length-1})\n`+l}]}}catch(e){return{content:[{type:"text",text:`Error reading file: ${e.message}`}]}}},{source:"cli"},()=>{}),Ma({name:"local_grep",description:"Search for a pattern in the user's local project files (editor project and web project) using grep. Returns matching lines with file paths and line numbers.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Search pattern (regular expression)"},glob:{type:"string",description:"File glob filter, e.g. '*.ts' or '*.cs' (optional)"},max_results:{type:"number",description:"Maximum number of matching lines to return (default: 50)"}},additionalProperties:!1,required:["pattern"]}},async e=>{const n=es();if(0===n.length)return{content:[{type:"text",text:"Error: no active project found."}]};const t=Math.min(e.max_results||50,200),o=[];for(const i of n)try{const n=`grep -rn ${e.glob?`--include="${e.glob}"`:""} --max-count=${t} -E ${JSON.stringify(e.pattern)} ${JSON.stringify(i)} 2>/dev/null || true`,a=J(n,{encoding:"utf-8",maxBuffer:1048576,timeout:1e4});if(a.trim()){const e=a.trim().split("\n").map(e=>e.startsWith(i)?e.substring(i.length+1):e);o.push(...e)}}catch{}if(0===o.length){const t=n.length>0?`\nSearched in:\n${n.join("\n")}`:"\nNo project directories available to search.";return{content:[{type:"text",text:`No matches found for pattern: ${e.pattern}${t}`}]}}const i=o.slice(0,t);return{content:[{type:"text",text:`Found ${o.length} matches${o.length>t?` (showing first ${t})`:""}:\n`+i.join("\n")}]}},{source:"cli"},()=>{}),Ma({name:"local_list_files",description:"List files in the user's local project directories matching an optional glob pattern. By default searches both the editor project (Unity/Blender) and the web project. Use the 'project' parameter to target a specific one. Results are prefixed with <web_project>/..., <unity>/..., or <blender>/... so you know which root each file belongs to.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Subdirectory to list (relative to the selected project root, default: root)"},pattern:{type:"string",description:"Glob pattern to filter files, e.g. '*.ts' or '*.glb'. Supports multiple patterns separated by '|', e.g. '*.gltf|*.glb' (optional)"},recursive:{type:"boolean",description:"Whether to list files recursively (default: false)"},project:{type:"string",enum:["web","editor"],description:"Which project root to search: 'web' for the Needle Engine web project (use this for exported assets, source files, node_modules), 'editor' for the Unity/Blender project. Omit to search both."}},additionalProperties:!1,required:[]}},async e=>{const n=Za();if(!n)return{content:[{type:"text",text:"Error: no active project found."}]};const t="blender"===n.editor?"<blender>":"unity"===n.editor?"<unity>":"<editor_project>",o=[];if(e.project&&"editor"!==e.project||!n.project_location||o.push({root:x(n.project_location),label:t}),e.project&&"web"!==e.project||!n.web_location||o.push({root:x(n.web_location),label:"<web_project>"}),0===o.length)return{content:[{type:"text",text:"Error: no active project found."}]};const i=[];for(const{root:n,label:t}of o){const o=e.path?Xa(e.path,n):n;if(o)try{var a;const s=os(o,n,null!=(a=e.recursive)&&a,e.pattern,0);i.push(...s.map(e=>({file:e,root:n,label:t})))}catch{}}if(0===i.length)return{content:[{type:"text",text:"No files found."+(o.length>0?`\nSearched in:\n${o.map(e=>`${e.label} → ${e.root}`).join("\n")}`:"\nNo project directories available to search.")}]};const s=i.slice(0,500).map(e=>`${e.label}/${y(e.root,e.file)}`);return{content:[{type:"text",text:`Found ${i.length} files${i.length>500?" (showing first 500)":""}:\n`+s.join("\n")}]}},{source:"cli"},()=>{}),Ma({name:"local_read_editor_log",description:"Read or search the Unity or Blender editor log file. By default reads the last N lines. Use the 'filter' parameter to search for specific terms (e.g. error messages, warnings, component names) across the entire log.",inputSchema:{type:"object",properties:{lines:{type:"number",description:"Number of lines to read from the end of the log (default: 100, max: 500). Ignored when filter is set."},filter:{type:"string",description:"Search term to grep for in the log (case-insensitive). Returns all matching lines from the entire log instead of just the tail."},offset:{type:"number",description:"Number of matching results to skip from the start (default: 0). Only used with filter."},limit:{type:"number",description:"Maximum number of matching results to return (default: 200, max: 500). Only used with filter."}},additionalProperties:!1,required:[]}},async e=>{const n=Za();var t;if(null==n||!n.log_location)return Vi(`read_editor_log: no editor log file known (project: ${null!=(t=null==n?void 0:n.project_location)?t:"none"})`),{content:[{type:"text",text:"Error: no editor log file known. Is a Unity or Blender project open?"}]};try{const t=r(n.log_location,"utf-8").split("\n");let o,i;if(e.filter){const n=e.filter.toLowerCase();o=[];for(let e=0;e<t.length;e++)t[e].toLowerCase().includes(n)&&o.push(`L${e+1}: ${t[e]}`);const a=o.length,s=Math.max(0,e.offset||0),r=Math.min(Math.max(e.limit||200,1),500);o=o.slice(s,s+r),i=`filter="${e.filter}" → ${a} matches (showing ${s+1}-${s+o.length}) in ${t.length} total lines`}else{const n=Math.min(Math.max(e.lines||100,1),500);o=t.slice(-n),i=`last ${n} of ${t.length} lines`}const a="unity"===n.editor?function(e){const n=[],t=new Map;let o=!1,i=0;for(const a of e){if(/^\s+at\s/.test(a)||/^\s*(UnityEngine\.|System\.|Unity\.)/.test(a)||/^\s+\w+[\w.<>]+\s*\(/.test(a)){o||(o=!0,i=0),i++,i<=3?n.push(a):4===i&&n.push(" ... (stack trace truncated)");continue}if(o=!1,i=0,!a.trim())continue;const e=t.get(a)||0;if(t.set(a,e+1),0===e)n.push(a);else if(1===e)n.push(` [repeated ${e+1}x] ${a}`);else{const t=n.length-1;t>=0&&n[t].startsWith(" [repeated")&&(n[t]=` [repeated ${e+1}x] ${a}`)}}return n}(o):o,s=5e4;let c=a.join("\n"),l="";if(c.length>s){c=c.substring(c.length-s);const e=c.indexOf("\n");e>0&&(c=c.substring(e+1)),l=" (output truncated to last ~50KB)"}return{content:[{type:"text",text:`Editor log: ${n.log_location} (${i}, ${a.length} after processing, editor: ${n.editor})${l}:\n`+c}]}}catch(e){return{content:[{type:"text",text:`Error reading log: ${e.message}`}]}}},{source:"cli"},()=>{}),Ma({name:"local_read_gltf",description:"Read and summarize a glTF or GLB file from the user's local project. Without a query, returns a structured summary including nodes, meshes, materials, animations, extensions, and compression/optimization hints. Use 'query' to drill into specific parts using JSON pointer paths. Use '*' as a wildcard for array indices or object keys. For GLB files, extracts the JSON chunk and skips binary data.",inputSchema:{type:"object",properties:{path:{type:"string",description:"File path to a .gltf or .glb file (relative to project root, or absolute path)"},query:{type:"string",description:"JSON pointer path to extract a specific part of the glTF, e.g. '/nodes/0', '/materials', '/extensions/NEEDLE_progressive', '/materials/*/extensions'. Use '*' as a wildcard for array indices or object keys."}},additionalProperties:!1,required:["path"]}},async e=>{let n=ns(e.path);if(!n){const t=x(e.path);if(!a(t))return{content:[{type:"text",text:`Error: file not found: ${t}`}]};n={resolved:t,root:t}}if(!a(n.resolved))return{content:[{type:"text",text:`Error: file not found: ${n.resolved}`}]};try{const t=function(e){const n=e.toLowerCase();if(n.endsWith(".gltf")){const n=r(e,"utf-8");return JSON.parse(n)}if(n.endsWith(".glb")){const n=r(e);if(n.length<20)return null;if(1179937895!==n.readUInt32LE(0))return null;const t=n.readUInt32LE(12);if(1313821514!==n.readUInt32LE(16))return null;const o=n.toString("utf-8",20,20+t);return JSON.parse(o)}return null}(n.resolved);if(!t)return{content:[{type:"text",text:"Error: could not parse glTF/GLB file."}]};const o=5e4;if(e.query){const i=ts(t,e.query.replace(/^\//,"").split("/"));if(void 0===i)return{content:[{type:"text",text:`No data found at pointer: ${e.query}`}]};let a=JSON.stringify(i),s=!1;return a.length>o&&(a=a.substring(0,o),s=!0),{content:[{type:"text",text:`${e.query} in ${n.resolved}`+(s?` (truncated to ${o} chars)`:"")+"\n"+a}]}}let i=function(e,n){var t,o,i,a,s,r,c,l,p,u,d,m,f;const h=[`glTF: ${n}`];if(e.asset){const n=[];e.asset.version&&n.push(`v${e.asset.version}`),e.asset.generator&&n.push(e.asset.generator),h.push(`Asset: ${n.join(", ")}`)}if(null!=(t=e.extensionsUsed)&&t.length&&h.push(`Extensions used: ${e.extensionsUsed.join(", ")}`),null!=(o=e.extensionsRequired)&&o.length&&h.push(`Extensions required: ${e.extensionsRequired.join(", ")}`),null!=(i=e.scenes)&&i.length&&h.push(`Scenes: ${e.scenes.length}${void 0!==e.scene?` (default: ${e.scene})`:""}`),null!=(a=e.nodes)&&a.length){var g,v,x;h.push(`\nNodes (${e.nodes.length}):`);const n=null!=(g=null==(v=e.scenes)||null==(v=v[null!=(x=e.scene)?x:0])?void 0:v.nodes)?g:[],t=new Set,o=(n,i)=>{if(i>6||t.has(n))return;t.add(n);const a=e.nodes[n];if(!a)return;const s=" ".repeat(i),r=[];if(void 0!==a.mesh&&r.push(`mesh:${a.mesh}`),void 0!==a.camera&&r.push(`camera:${a.camera}`),void 0!==a.skin&&r.push(`skin:${a.skin}`),a.extensions&&r.push(`ext:[${Object.keys(a.extensions).join(",")}]`),h.push(`${s}- ${a.name||`node_${n}`}${r.length?` (${r.join(", ")})`:""}`),a.children)for(const e of a.children)o(e,i+1)};for(const e of n)o(e,1);t.size<e.nodes.length&&t.size>0&&h.push(` ... and ${e.nodes.length-t.size} more nodes`)}if(null!=(s=e.meshes)&&s.length){h.push(`\nMeshes (${e.meshes.length}):`);for(const n of e.meshes.slice(0,30)){var b,y;const e=null!=(b=null==(y=n.primitives)?void 0:y.length)?b:0;h.push(` - ${n.name||"(unnamed)"} (${e} primitive${1!==e?"s":""})`)}e.meshes.length>30&&h.push(` ... and ${e.meshes.length-30} more`)}if(null!=(r=e.materials)&&r.length){h.push(`\nMaterials (${e.materials.length}):`);for(const n of e.materials.slice(0,30)){const e=n.name||"(unnamed)",t=[];n.pbrMetallicRoughness&&t.push("PBR"),n.alphaMode&&"OPAQUE"!==n.alphaMode&&t.push(n.alphaMode),n.doubleSided&&t.push("doubleSided"),n.extensions&&t.push(`ext:[${Object.keys(n.extensions).join(",")}]`),h.push(` - ${e}${t.length?` (${t.join(", ")})`:""}`)}e.materials.length>30&&h.push(` ... and ${e.materials.length-30} more`)}if(null!=(c=e.textures)&&c.length&&h.push(`Textures: ${e.textures.length}`),null!=(l=e.images)&&l.length&&h.push(`Images: ${e.images.length}`),null!=(p=e.animations)&&p.length){h.push(`\nAnimations (${e.animations.length}):`);for(const n of e.animations.slice(0,20)){var w,_;const e=null!=(w=null==(_=n.channels)?void 0:_.length)?w:0;h.push(` - ${n.name||"(unnamed)"} (${e} channel${1!==e?"s":""})`)}e.animations.length>20&&h.push(` ... and ${e.animations.length-20} more`)}if(null!=(u=e.skins)&&u.length){h.push(`\nSkins (${e.skins.length}):`);for(const n of e.skins.slice(0,10)){var k,j;h.push(` - ${n.name||"(unnamed)"} (${null!=(k=null==(j=n.joints)?void 0:j.length)?k:0} joints)`)}}if(null!=(d=e.cameras)&&d.length){h.push(`\nCameras (${e.cameras.length}):`);for(const n of e.cameras)h.push(` - ${n.name||"(unnamed)"} (${n.type})`)}if(null!=(m=e.buffers)&&m.length){const n=e.buffers.reduce((e,n)=>e+(n.byteLength||0),0);h.push(`\nBuffers: ${e.buffers.length} (${(n/1024/1024).toFixed(1)} MB total)`)}return null!=(f=e.accessors)&&f.length&&h.push(`Accessors: ${e.accessors.length}`),h.join("\n")}(t,n.resolved);return i.length>o&&(i=i.substring(0,o)+"\n... (truncated)"),{content:[{type:"text",text:i}]}}catch(e){return{content:[{type:"text",text:`Error reading glTF: ${e.message}`}]}}},{source:"cli"},()=>{}),Ma(Pi.schema,async e=>{const n=await Pi.execute(e);return"error"in n?{content:[{type:"text",text:n.error}]}:{content:[{type:"text",text:n.content}]}},{source:"cli"},()=>{}),null!=e&&e.logToolCount&&Vi(`[MCP] registered ${qa.length} built-in tools: ${qa.map(e=>e.name).join(", ")}`)}function Za(){var e;const n=Ja();return null!=n&&null!=(e=n.entries)&&e.length?n.entries.sort((e,n)=>n.last_accessed-e.last_accessed)[0]:null}function Xa(e,n){const t=x(n,e),o=x(n);return t.startsWith(o+"/")||t===o?t:null}function es(){const e=Za();if(!e)return[];const n=[];return e.project_location&&n.push(x(e.project_location)),e.web_location&&n.push(x(e.web_location)),n}function ns(e){const n=es();for(const t of n){const n=Xa(e,t);if(n&&a(n))return{resolved:n,root:t}}for(const t of n){const n=Xa(e,t);if(n)return{resolved:n,root:t}}const t=x(e);for(const e of n)if(t.startsWith(e+"/")||t===e)return{resolved:t,root:e};return null}function ts(e,n){if(0===n.length||null==e)return e;const[t,...o]=n;if("*"!==t)return ts(e[/^\d+$/.test(t)?Number(t):t],o);if(Array.isArray(e)){const n=e.map(e=>ts(e,o)).filter(e=>void 0!==e);return n.length>0?n:void 0}if("object"==typeof e){const n={};for(const t of Object.keys(e)){const i=ts(e[t],o);void 0!==i&&(n[t]=i)}return Object.keys(n).length>0?n:void 0}}function os(e,n,t,o,i){if(i>10)return[];const a=[],s=c(e,{withFileTypes:!0}),r="node_modules"===(e.split("/").pop()||e.split("\\").pop()||"");for(const c of s){if(r){if(".needle"!==c.name&&".vite"!==c.name)continue}else{if("Library"===c.name)continue;if(c.name.startsWith(".")||"node_modules"===c.name){if(!t)continue;if(c.name.startsWith("."))continue}}const s=b(e,c.name);if(c.isDirectory())t&&a.push(...os(s,n,!0,o,i+1));else{if(o&&!o.split("|").map(e=>(e=e.trim()).startsWith(".")&&!e.startsWith("*.")?"*"+e:e).filter(Boolean).some(e=>K(c.name,e,{nocase:!0})))continue;a.push(s)}}return a}const is=`${aa}/mcp`,as="2025-06-18",ss={name:"Needle Cloud MCP",version:"1.0.0"};function rs(e){return{jsonrpc:"2.0",id:e,result:{protocolVersion:as,capabilities:{tools:{listChanged:!0}},serverInfo:ss}}}async function cs(e,n){const t=!0===(null==n?void 0:n.proxy),{method:o,params:i,id:a}=e;if("initialize"===o)return rs(null!=a?a:0);if("ping"===o)return{jsonrpc:"2.0",id:a,result:{}};if("notifications/initialized"===o||"notifications/cancelled"===o)return null;if("tools/list"===o){try{Qa()}catch{}let e=qa;if(t){const n=await async function(){try{var e,n;const t=await fetch(is,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"}),signal:AbortSignal.timeout(2e3)});return t.ok&&null!=(e=null==(n=(await t.json()).result)?void 0:n.tools)?e:[]}catch{return[]}}();if(n.length>0){const t=new Set(qa.map(e=>e.name));e=[...qa,...n.filter(e=>!t.has(e.name))]}}return{jsonrpc:"2.0",id:a,result:{tools:e}}}if("tools/call"===o){const e=null==i?void 0:i.name;try{Qa()}catch{}try{return{jsonrpc:"2.0",id:a,result:await Ga(e,(null==i?void 0:i.arguments)||{})}}catch(n){if(t)try{const n=await async function(e,n){const t=await fetch(is,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/call",params:{name:e,arguments:n}}),signal:AbortSignal.timeout(35e3)}),o=await t.json();if(o.error)throw new Error(o.error.message);return o.result}(e,(null==i?void 0:i.arguments)||{});return{jsonrpc:"2.0",id:a,result:n}}catch{}return{jsonrpc:"2.0",id:a,error:{code:-32603,message:`Tool execution failed: ${n.message}`}}}}return{jsonrpc:"2.0",id:null!=a?a:null,error:{code:-32601,message:`Method '${o}' not found`}}}function ls(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}let ps=!1;const us=G(),ds=new Set,ms=new Map;let fs=0;function hs(){const e=[];for(const[n,{connectedAt:t,userAgent:o}]of ms)e.push({id:n,connectedAt:t,userAgent:o});return e}function gs(e,n,t){if((n.headers.accept||"").includes("text/event-stream")){t.setHeader("Content-Type","text/event-stream"),t.setHeader("Cache-Control","no-cache"),t.setHeader("Connection","keep-alive"),t.setHeader("Access-Control-Allow-Origin","*"),t.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id"),t.flushHeaders(),t.write(": connected\n\n");const o=n.headers["user-agent"]||"";return ms.set(e,{id:e,client:t,connectedAt:Date.now(),userAgent:o}),console.log(`[MCP] SSE client connected (ID: ${e}) ${o}. Total clients: ${ms.size}`),Vi(`MCP SSE client connected (ID: ${e}) ${o}. Total clients: ${ms.size}`),n.on("close",()=>{console.log(`[MCP] SSE client disconnected (ID: ${e}): ${o}`),Vi(`MCP SSE client disconnected (ID: ${e}): ${o}`),ms.delete(e)}),!0}return!1}function vs(e){if(!Array.isArray(e))return console.error("Invalid input: paths should be an array of strings."),null;for(const n of e)if(!1!==a(n))try{const e=bs(n);if(e)return e}catch(e){}}us.get("/mcp",async(e,n)=>{if(gs(fs++,e,n))return;const t=function(e){const n=[...qa].sort((e,n)=>e.name.localeCompare(n.name)),t=n.map(e=>`\n <div class="tool">\n <span class="tool-name">${ls(e.name)}</span>\n <span class="tool-desc">${ls(function(e){const n=e.indexOf("\n");return-1===n?e:e.slice(0,n)}(e.description))}</span>\n </div>`).join("\n");return`<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <title>Needle MCP Server</title>\n <style>\n * { box-sizing: border-box; }\n body {\n background: #f0f4ef;\n font-family: system-ui, -apple-system, sans-serif;\n line-height: 1.6;\n padding: 20px 24px;\n max-width: 960px;\n margin: 0 auto;\n color: #1a1a1a;\n }\n header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n }\n h2 {\n margin-top: 1.2em;\n margin-bottom: 0.4em;\n }\n a { color: inherit; }\n img.logo {\n height: 2em;\n width: auto;\n }\n .badge {\n font-size: 0.75em;\n background: #d0d4cf;\n padding: 2px 8px;\n border-radius: 10px;\n vertical-align: middle;\n font-weight: normal;\n }\n .tools-info {\n color: #555;\n font-size: 0.9rem;\n margin-top: 0;\n margin-bottom: 10px;\n }\n\n /* Tool items */\n .tool {\n background: #fff;\n border: 1px solid #d8dcd7;\n border-radius: 6px;\n margin-bottom: 6px;\n padding: 10px 14px;\n display: flex;\n align-items: baseline;\n gap: 10px;\n }\n .tool-name {\n font-weight: 600;\n white-space: nowrap;\n }\n .tool-desc {\n color: #555;\n font-size: 0.9rem;\n }\n</style>\n</head>\n<body>\n <header>\n <img class="logo" src="https://cdn.needle.tools/static/branding/logo_needle.png" alt="Needle Logo" />\n <strong>Needle MCP Server</strong>\n </header>\n\n <p>The Needle MCP server is alive and running.</p>\n\n <h2>Usage</h2>\n <p><a href="https://fwd.needle.tools/mcp">Open Documentation</a></p>\n\n <h2>Available Tools <span class="badge">${n.length}</span></h2>\n <p class="tools-info">These tools are available to AI agents connected via the Model Context Protocol (MCP).</p>\n ${t}\n</body>\n</html>`}();n.status(200).header("Content-Type","text/html; charset=utf-8").send(t)}),us.post("/mcp",async(e,n)=>{const t=e.headers.accept||"",o=e.headers["user-agent"]||"",{method:i,id:a}=e.body;console.log(`[MCP] Received request from ${o} (${i}) (ID: ${a})`),n.setHeader("Content-Type","application/json"),n.setHeader("Access-Control-Allow-Origin","*"),n.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization, Mcp-Session-Id"),n.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id");try{if("initialize"===i&&t.includes("text/event-stream")){const t=void 0!==a?a:fs++;if(gs(t,e,n)){ps=!0;const e=rs(t);return void n.write(`data: ${JSON.stringify(e)}\n\n`)}}const r=await cs(e.body);if("initialize"===i){ps=!0;const e=R();ds.add(e),n.setHeader("Mcp-Session-Id",e),console.log(`[MCP] New session created: ${e} for ${o}`),Vi(`MCP New session: ${e} for ${o}`)}if(null===r)return n.status(204).end();if(Vi(`MCP Request: ${i}`),"tools/list"===i){var s;const e=(null==(s=r.result)||null==(s=s.tools)?void 0:s.map(e=>e.name))||[];console.log(`[MCP] Sending tools/list: ${e.length} tools [${e.join(", ")}]`)}else{const e=JSON.stringify(r);console.log(`[MCP] Sending response for ${i}:`,e.length>500?e.substring(0,500)+" [...]":e)}n.json(r)}catch(e){console.error("[MCP] Error processing request:",e);const t={jsonrpc:"2.0",error:{code:-32603,message:"Internal server error",data:"development"===process.env.NODE_ENV?e.stack:void 0},id:a||null};n.json(t)}}),us.options("/mcp",(e,n)=>{n.setHeader("Access-Control-Allow-Origin","*"),n.setHeader("Access-Control-Allow-Methods","GET, POST, OPTIONS, DELETE"),n.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization, Mcp-Session-Id"),n.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id"),n.status(204).end()});const xs=new RegExp(/\[remote*\s\"(?<name>.+?)\".+?url\s*=\s*(?<url>.+?)\n/gms);function bs(e){const n=b(e,".git");if(a(n)){const e=b(n,"config");if(a(e)){const n=r(e,"utf-8"),t=[];for(;;){const e=xs.exec(n);if(!e)break;if(e.groups){const n=e.groups.url;n.length&&t.push({name:e.groups.name,url:n})}}const o=t.find(e=>"origin"===e.name)||t.find(e=>"upstream"===e.name)||t[0];if(o)return o.url}}const t=b(e,".plastic");if(a(t)){const e=b(t,"replicas.db");if(a(e)){const n=r(e,"utf-8").split("\n");for(const e of n){const n=e.split("=");if(2===n.length&&"repo"===n[0].trim()){const e=n[1].trim();if(e.length)return e}}}}const o=b(e,"..");return o===e?null:bs(o)}let ys=!1;function ws(e,n={}){ys&&process.stdout.write(JSON.stringify({jsonrpc:"2.0",method:e,params:n})+"\n")}var _s={__proto__:null,sendStdioNotification:ws,startStdio:function(){ys=!0,process.stdin.resume();const e=Q({input:process.stdin,terminal:!1});e.on("line",async e=>{const n=e.trim();if(!n)return;let t;try{t=JSON.parse(n)}catch{return void process.stdout.write(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}})+"\n")}const o=await cs(t,{proxy:!0});null!==o&&process.stdout.write(JSON.stringify(o)+"\n")}),e.on("close",()=>{ys=!1,process.exit(0)})}};let ks=null;function js(){ks&&clearTimeout(ks),ks=setTimeout(()=>{!function(e,n={}){if(0===ms.size)return;const t=`data: ${JSON.stringify({jsonrpc:"2.0",method:"notifications/tools/list_changed",params:n})}\n\n`;for(const[e,{client:n}]of ms)try{n.write(t)}catch(n){console.error(`[MCP] Error sending notification to client (${e}):`,n),ms.delete(e)}}(),ws("notifications/tools/list_changed")},10)}const Ss="[MCP]",Ts=new Array,$s=JSON.parse(r(new URL("../package.json",import.meta.url),"utf-8"));function Es(){return $s.version}const Cs=2e3,Os=6e4,Rs=25e3,zs=1e4;let Ns=null,As=null,Fs=null,Ls=null,Us=Cs,Is=!1;async function qs(){let e=await async function(){try{var e;return null!=(e=(await ja(wa(),{getAccessToken:!0,fetchUserInfo:!1,resource:ca.resource})).accessToken)?e:null}catch(e){return Vi(`Token refresh failed: ${e instanceof Error?e.message:e}`),e&&"object"==typeof e&&"oidc.invalid_grant"===e.code&&(ua(),ya=null),null}}();if(e||(e=function(){const e=xa("accessToken");if(i.existsSync(e)){const n=i.readFileSync(e,"utf8");if(n){const e=JSON.parse(n),t=null==e?void 0:e["@https://cloud-staging.needle.tools/api"];return null==t?void 0:t.token}}return null}(),e&&Vi("Needle Cloud connection: using cached token (refresh failed)")),!e)return Vi("Needle Cloud connection: skipped (not logged in)"),void Bs();const n="https://cloud-staging.needle.tools/api".replace(/^http/,"ws")+"/v1/cli/ws?token="+encodeURIComponent(e);Vi("Needle Cloud connection: connecting..."),Ns=new V(n),Ns.on("open",()=>{Us=Cs,Vi("Needle Cloud connection: established"),function(){var e,n,t,o,i;if(!Ns||Ns.readyState!==V.OPEN)return;const a=Ja(),s=null==a||null==(e=a.entries)||null==(e=e.sort((e,n)=>n.last_accessed-e.last_accessed))?void 0:e[0],r={type:"presence",editor:null!=(n=null==s?void 0:s.editor)?n:"unknown",project:null!=(t=null==s?void 0:s.project_location)?t:null,scene:null!=(o=null==s?void 0:s.scene_location)?o:null,web_project:null!=(i=null==s?void 0:s.web_location)?i:null,cli_version:Es()};Ns.send(JSON.stringify(r))}(),function(){if(!Ns||Ns.readyState!==V.OPEN)return;try{Qa()}catch(e){Vi(`Needle Cloud connection: registerServerTools failed: ${e}`)}const e=qa.map(e=>e.name);Vi(`Needle Cloud connection: sending ${e.length} tools: ${e.join(", ")}`),Ns.send(JSON.stringify({type:"tools",tools:qa.map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema}))}))}(),Ps(),Fs=setInterval(()=>{Ns&&Ns.readyState===V.OPEN&&(Ns.ping(),Ls=setTimeout(()=>{Vi("Needle Cloud connection: pong timeout, terminating"),Ns&&Ns.terminate()},zs))},Rs)}),Ns.on("pong",()=>{Ls&&(clearTimeout(Ls),Ls=null)}),Ns.on("message",e=>{try{const t=JSON.parse(e.toString());var n;"execute_tool"===t.type&&t.requestId&&t.toolName&&async function(e,n,t){Vi(`Cloud tool request: ${n}(${Object.keys(t).length>0?" "+Object.entries(t).map(([e,n])=>`${e}=${JSON.stringify(n)}`).join(", "):""}) [${e}]`);const o=Date.now();try{var i,a;const s=await Ga(n,t);Vi(`Cloud tool result: ${n} → ${null!=(i=null==s||null==(a=s.content)?void 0:a.reduce((e,n)=>{var t;return e+((null==(t=n.text)?void 0:t.length)||0)},0))?i:0} chars in ${Date.now()-o}ms [${e}]`),Ns&&Ns.readyState===V.OPEN&&Ns.send(JSON.stringify({type:"tool_result",requestId:e,result:s}))}catch(t){const i=t instanceof Error?t.message:String(t);Vi(`Cloud tool error: ${n} → ${i} in ${Date.now()-o}ms [${e}]`),Ns&&Ns.readyState===V.OPEN&&Ns.send(JSON.stringify({type:"tool_result",requestId:e,error:i}))}}(t.requestId,t.toolName,null!=(n=t.args)?n:{})}catch{}}),Ns.on("close",(e,n)=>{const t=(null==n?void 0:n.toString())||"";Vi(`Needle Cloud connection: closed (code=${e}${t?" "+t:""})`),Ps(),Ns=null,Is||Bs()}),Ns.on("error",e=>{Vi(`Needle Cloud connection: error - ${e.message||"connection refused"} (is https://cloud-staging.needle.tools/api reachable?)`)})}function Ps(){Fs&&(clearInterval(Fs),Fs=null),Ls&&(clearTimeout(Ls),Ls=null)}function Bs(){Is||As||(Vi(`Needle Cloud connection: reconnecting in ${Us/1e3}s`),As=setTimeout(()=>{As=null,qs()},Us),Us=Math.min(2*Us,Os))}const{json:Ds}=H;function Ms(e){const n=null==e?void 0:e.cause;return null!=n&&n.code?`${n.code}${n.address?` (${n.address}:${n.port})`:""}`:null!=n&&n.message?n.message:null!=e&&e.code?e.code:null!=e&&e.message&&"fetch failed"!==e.message?e.message:"connection refused or network unreachable"}async function Ws(n={restart:!1}){const t=await e(aa).catch(e=>({ok:!1})),o="/sign-in",i="/api/authenticated",s="/api/projects",r="/api/content",c={baseUrl:aa,port:ia,isHost:!1,auth_endpoints:{"sign-in":`${aa}${o}`,"sign-out":`${aa}/sign-out`,"is-authenticated":`${aa}${i}`}};let l=t.ok;if(l&&!0===(null==n?void 0:n.restart)){Vi("Restarting auth server...");const m=`${aa}/restart`;n.ora&&(n.ora.text="Sending restart request to server");const f=new AbortController;setTimeout(()=>f.abort(),1e4);const h=await e(m,{method:"post",signal:f.signal}).catch(e=>({ok:!1,status:400,error:e}));if(h.ok)return await Ei(300),Ws({restart:!1});console.error("Failed to restart server",h.status),Vi(`Failed to restart server: ${h.status}`)}if(!l){process.title="Needle CLI server";const g=await import("express").catch(e=>{throw console.error("Error starting the auth server (express not found)",e),Vi("Error starting the auth server"),new Error("Failed to load express module")});if(!g)throw Vi("Error loading auth server module"),new Error("Failed to load express module");Vi(`Starting Needle CLI server ${Es()}... (Using api at https://cloud-staging.needle.tools/api)`,{emptyLineBefore:!0}),c.isHost=!0;let v=null;const x={invalid_login:!1,invalid_login_type:null,user_email:null,logged_in_machine_names:[]};let b=g.default();b.use(Ds({limit:"10mb"})),b.use(Na(x)),n.ora?(n.ora.start("Starting MCP server..."),n.ora.succeed(`MCP server available at ${aa}/mcp`)):console.log(`\nMCP server available at ${aa}/mcp .`),b.use(us);const y="\n <title>Needle Cloud</title>\n <link rel=\"icon\" href=\"https://cdn.needle.tools/static/branding/favicon.ico\" type=\"image/x-icon\">\n <style>\n body { \n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n font-size: 18px;\n padding: 2rem;\n background: #f0f4ef;\n }\n a {\n color: rgb(120, 76, 223);\n }\n .main_panel {\n display: flex;\n flex-direction: column;\n gap: .5rem;\n justify-content: flex-start;\n align-items: center;\n width: min(80ch, 90vw);\n margin: 0 auto;\n\n height: 100%;\n\n & img.logo {\n height: 3rem;\n margin-bottom: 1rem;\n }\n }\n .secondary {\n color: rgba(0, 0, 0, .5);\n }\n .error-details {\n font-size: 12px;\n color: rgba(0, 0, 0, .5);\n }\n .error-details a {\n color: inherit;\n }\n </style>",w=`<div class="main_panel"><img class="logo" src="https://cdn.needle.tools/static/branding/logo_needle.png" alt="Needle Logo" title="Needle Logo (${Es()})"/>`,_="</div>";let k="";b.get("/",La(),async(e,n)=>{var t;if(n.set({"Content-Type":"text/html; charset=utf-8"}),n.write(y),null!=e.query.cancelled)return n.end("Login cancelled. You can close this window now."),void Vi("Login cancelled by user");if(null!=e.query["too-many-logins"]&&x.logged_in_machine_names.length){var i;const e=Bi();let t="<div>";return t+="<strong>You have reached the maximum number of allowed device logins!</strong><br/><br/>",t+=(null==(i=x.logged_in_machine_names)?void 0:i.map(e=>`• ${e}`).join("<br/>"))+"<br/><br/>",t+=`1) Go to <a href="${e}#device-logins" target="_blank">Needle Cloud device logins</a> and logout one of your devices.<br/>\n 2) Then <a href="${o}">sign-in on this machine</a>.<br/><br/>`,t+="</div>",n.status(406),n.end(w+t+_),void Vi(`Login failed: Too many logins from different machines: [${x.logged_in_machine_names.join(", ")}]`)}if(null!=e.query.error)return n.status(500),void n.end(`${w}\n <div>\n <strong>An error occurred</strong>: Please make sure <i>https://cloud-staging.needle.tools/api</i> and <i>https://auth.needle.tools</i> are reachable and not blocked by your firewall or network. After that please try to <a href="${o}">sign-in</a> again.\n <br/><span class="error-details">If the issue persists, please contact support and include the log file: <a title="Link to local log file. Please copy this url and open it in your file explorer or terminal" href="file://${Ki()}" target="_blank">${Ki()}</a></span>\n </div>\n ${_}`);if(null!=(t=e.user)&&t.isAuthenticated){var a;if(!await Ca(e.user)){if(x.invalid_login=!0,x.logged_in_machine_names=[...$a(e.user)],ua(),Vi("Cleared stored auth data"),"client"in e.user){const n=e.user;await n.client.clearAccessToken(),await n.client.clearAllTokens(),Vi("Cleared all tokens")}return n.end(`${w}<div>You have been logged out from this machine. You can close this window now or try to <a href="${o}">sign in</a> again</div>${_}`)}x.invalid_login=!1,n.end(`${w}\n <div>\n Hi ${Aa(e.user)} — you logged in successfully. You can close this window now.\n </div>\n ${_}`);const t=`Logged in successfully as ${Aa(e.user)} (${null==(a=e.user.userInfo)?void 0:a.sub})`;return void(k!==t&&(k=t,Vi(k)))}let s=`<span><a href="${o}">Sign in</a> to your Needle account</span>`;"1"===e.query["signed-out"]&&(s=`<span class="secondary">You have been signed out successfully.</span>${s}`),n.write(w+s+_),n.end()}),b.post("/restart",(e,t)=>{var o;n.ora&&(n.ora.text="Received restart event. This instance will close"),null==(o=v)||o.close(e=>{e&&console.error(e)}),setTimeout(()=>{process.exit(0)},100),t.status(200).end("Server is restarting"),Vi("Server is restarting\n")}),b.get("/api/logs",async(e,n)=>{const t=Ki();a(t)?d(t,"utf-8",(e,o)=>{if(e)return console.error(e),void n.status(500).end("Failed to read log file");n.set({"Content-Type":"text/plain; charset=utf-8"});const i=o.split("\n").filter(e=>e.length>0).reverse().join("\n");let a=`--- Needle CLI Log File (newest first) ---\n${t}\n\n`;a+=i,n.status(200).end(a)}):n.status(404).end("Log file not found")}),b.get(i,La(),async(e,n)=>{var t;if(!0===x.invalid_login){const e=Gs(x);return n.status(e.status).json(e)}x.invalid_login=!1,n.status(null!=(t=e.user)&&t.isAuthenticated?200:400).send()}),b.get("/api/user",La(),async(e,n)=>{var t;const o=e.user;if(null==o||!o.isAuthenticated){if(!0===x.invalid_login){const e=Gs(x);return n.status(e.status).json(e)}return n.status(401).json({error:"Not authenticated"})}if(x.invalid_login=!1,!await Ca(o))return ua(),n.status(403).json({error:"You have been logged out from this machine"});if(null==o||!o.claims)return n.status(400).json({error:"User claims not found"});if(null==o||!o.userInfo)return n.status(400).json({error:"User info not found"});const i=null==o||null==(t=o.claims)?void 0:t.organization_roles,a=null==o?void 0:o.userInfo.custom_data,s={authenticated:o.isAuthenticated,id:o.userInfo.sub,name:Aa(o),email:o.claims.email||o.userInfo.email||"",profile_picture:o.userInfo.picture||"",default_org_id:(null==a?void 0:a.default_org)||"none",orgs:[]},r=["manage","owner","member","developer"];o.userInfo.organization_data&&(s.orgs=o.userInfo.organization_data.map(e=>{var n;const t={id:e.id,name:e.name,roles:(null==i?void 0:i.filter(n=>n.startsWith(e.id)).map(e=>e.split(":")[1]))||[],canWrite:!1};return t.canWrite=null==(n=t.roles)?void 0:n.some(e=>r.includes(e)),t}).sort((e,n)=>e.id===s.default_org_id?-1:n.id===s.default_org_id?1:e.name.localeCompare(n.name))),n.json(s)}),b.get("/api/license",La(),async(n,t)=>{var o,i,a;const s=null==(o=n.query.token)?void 0:o.toString(),r=null==(i=n.query.org)?void 0:i.toString();let c=null;if(s)c={authToken:s};else{const e=await Sa();if(!e||!e.isAuthenticated)return t.status(401).json({error:"Not authenticated",code:"not_authenticated"});if(!await Ca(e))return ua(),t.status(403).json({error:"Invalid login"});c=await Fa(e,r||null).catch(e=>({status:500,error:e.message}))}if(!c)return t.status(500).json({error:"Failed to fetch licenses (Missing auth)"});if("error"in c)return t.status(c.status).json({error:c.error});const l=X(c),p=null==(a=n.query.integration)?void 0:a.toLocaleString(),u={...l,"x-needle":"cli","x-needle-integration":null!=p&&p.length?p:"unknown"},d=await e(`https://cloud-staging.needle.tools/api${Z.account.get_licenses}`,{method:"GET",headers:u}).catch(e=>{const n=Ms(e);return console.error("Failed to fetch licenses:",n),Vi(`Failed to fetch licenses: "${n}" - is https://cloud-staging.needle.tools/api reachable?`),null});if(!d)return t.status(502).json({error:"Failed to fetch licenses: upstream API unreachable"});if(d.ok){const e=await d.json();return void 0===e.can_use_editor&&(e.can_use_editor=!0),t.json(e)}return t.status(d.status).json({error:d.statusText})}),b.get("/api/deployments",La(),async(e,n)=>{var t;const o=await Sa();if(!o||!o.isAuthenticated)return n.status(401).json({error:"Not authenticated"});const i=null==(t=e.query.org)?void 0:t.toString(),a=await Fa(o,i).catch(e=>({status:500,error:e.message}));if("error"in a)return n.status(a.status).json({error:a.error});if(i&&!a.org)return n.status(400).json({error:"Organization not found"});const s=await ea({endpoint:"https://cloud-staging.needle.tools/api",authToken:a.authToken,org:a.org||void 0,limit:20,offset:0,names:void 0}).catch(e=>(console.error("List Deployments error: "+e.message),{status:502,error:"Failed to list deployments: upstream API unreachable"}));if("error"in s)return n.status(s.status).json({error:s.error});for(const e of s.deployments)e.editUrl=`${Di()}/${e.id}`;const r={...s};return n.json(r)}),b.get(r,La(),async(e,n)=>{var t,o,i,a,s,r,c,l;const p=await Sa();if(!p||!p.isAuthenticated)return n.status(401).json({error:"Not authenticated"});const u=(null==(t=e.query.org)?void 0:t.toString())||(null==(o=p.userInfo)||null==(o=o.custom_data)?void 0:o.default_org)||void 0,d=await Fa(p,u).catch(e=>({status:500,error:e.message}));if("error"in d)return n.status(d.status).json({error:d.error});const m={content_type:(null==(i=e.query.content_type)?void 0:i.toString())||void 0,content_format:(null==(a=e.query.content_format)?void 0:a.toString())||void 0,search:(null==(s=e.query.search)?void 0:s.toString())||void 0,tags:(null==(r=e.query.tags)?void 0:r.toString())||void 0,types:(null==(c=e.query.types)?void 0:c.toString())||void 0,trash:"true"===e.query.trash||void 0,collection_id:(null==(l=e.query.collection_id)?void 0:l.toString())||void 0,limit:e.query.limit?parseInt(e.query.limit.toString()):void 0,page:e.query.page?parseInt(e.query.page.toString()):void 0,offset:e.query.offset?parseInt(e.query.offset.toString()):void 0},f=await qi({baseUrl:"https://cloud-staging.needle.tools/api",authToken:d.authToken,org:d.org||void 0},m).catch(e=>(console.error("List content error: "+e.message),{status:502,error:"Failed to list content: upstream API unreachable"}));return"error"in f?n.status(f.status).json({error:f.error}):n.json(f)}),b.get(r+"/:identifier",La(),async(e,n)=>{var t,o;const i=await Sa();if(!i||!i.isAuthenticated)return n.status(401).json({error:"Not authenticated"});const a=(null==(t=e.query.org)?void 0:t.toString())||(null==(o=i.userInfo)||null==(o=o.custom_data)?void 0:o.default_org)||void 0,s=await Fa(i,a).catch(e=>({status:500,error:e.message}));if("error"in s)return n.status(s.status).json({error:s.error});const r=await async function(e,n){const t=`${e.baseUrl}${Z.content.root}/${n}`,o=X(e),i=await fetch(t,{...ee,method:"GET",headers:o});if(!i.ok){const e=await i.text();throw new Error(`Failed to get content (${i.status}): ${e}`)}return await i.json()}({baseUrl:"https://cloud-staging.needle.tools/api",authToken:s.authToken,org:s.org||void 0},e.params.identifier).catch(e=>(console.error("Get content error: "+e.message),{status:502,error:"Failed to get content: upstream API unreachable"}));return"error"in r?n.status(r.status).json({error:r.error}):n.json(r)}),b.get(s,La(),async(n,t)=>{const o=await Sa();if(!o||!o.isAuthenticated)return t.status(401).json({error:"Not authenticated"});const i=`https://cloud-staging.needle.tools/api${Z.local_projects.get.user}`,a=await e(i,{method:"GET",headers:{Authorization:`Bearer ${o.accessToken}`}}).catch(e=>(console.error("Failed to fetch projects:",Ms(e)),null));if(!a)return t.status(502).json({error:"Failed to fetch projects: upstream API unreachable"});if(!a.ok)return t.status(a.status).json({error:a.statusText});const s=await a.json().catch(e=>console.error(e));return t.json(s)}),b.get(s+"/:id",La(),async(n,t)=>{var o;const i=await Sa();if(!i||!i.isAuthenticated)return t.status(401).json({error:"Not authenticated"});let a=null==(o=n.query.org)?void 0:o.toString();const s=await Fa(i,a).catch(e=>({status:500,error:e.message}));if(!s)return t.status(500).json({error:"Failed to fetch projects"});if("error"in s)return t.status(s.status).json({error:s.error});const r=X(s),c=`https://cloud-staging.needle.tools/api${Z.local_projects.get.by_id}${encodeURIComponent(n.params.id)}`,l=await e(c,{method:"GET",headers:{...r}}).catch(e=>(console.error("Failed to fetch project:",Ms(e)),null));if(!l)return t.status(502).json({error:"Failed to fetch project: upstream API unreachable. Please try again later or contact hi@needle.tools"});if(!l.ok)return t.status(l.status).json({error:l.statusText});const p=await l.json().catch(e=>(console.error(e),null));return p?t.json(p):t.status(500).json({error:"Failed to parse data. Please try again later or contact hi@needle.tools"})}),b.post("/api/projects",La(),async(n,t)=>{const o=await Sa();if(!o||!o.isAuthenticated)return t.status(401).json({error:"Not authenticated"});const i="string"==typeof n.body?JSON.parse(n.body):n.body,a={machine_id:await Oa(),project_id:i.project_id,project_name:i.project_name,scene_name:i.scene_name,web_project_path:i.web_project_path,editor_name:i.editor_name,editor_version:i.editor_version};if(!a.project_id||!a.project_name)return t.status(400).json({error:"Invalid request"});const s=`https://cloud-staging.needle.tools/api${Z.local_projects.post}`,r=await e(s,{method:"POST",headers:{Authorization:`Bearer ${o.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify(a)}).catch(e=>(console.error("Failed to upsert project:",Ms(e)),null));return r?r.ok?t.send("OK"):t.status(r.status).json({error:r.statusText}):t.status(502).json({error:"Failed to upsert project: upstream API unreachable"})}),b.get("/api/public_key",La(),async(n,t)=>{var o,i;const a=await Sa();if(!a||!a.isAuthenticated)return t.status(401).json({error:"Not authenticated"});const s=null==(o=n.query.org)?void 0:o.toString(),r=await Fa(a,s).catch(e=>({error:e.message,status:500}));if(!r)return t.status(500).json({error:"Failed to fetch public key"});if("error"in r)return t.status(r.status).json({error:r.error});const c={project_id:(null==(i=n.query.project_id)?void 0:i.toString())||void 0,machine_id:await Oa()},l=await e(`https://cloud-staging.needle.tools/api${Z.account.public_key}`,{method:"POST",headers:{...X(r),"Content-Type":"application/json"},body:JSON.stringify(c)}).catch(e=>(console.error("Failed to fetch public key:",Ms(e)),null));if(!l)return t.status(502).json({error:"Failed to fetch public key: upstream API unreachable"});if(l.ok){const e=await l.json().catch(console.error);return null!=e&&e.public_key?t.json(e):t.status(500).json({error:"Failed to fetch public key"})}return t.status(l.status).json({error:l.statusText})}),b.get("/api/local_project_id",async(e,n)=>{const t=e.query.paths;if(!t)return n.status(400).json({error:"Missing paths"});let o=[];"string"==typeof t?o=t.split(",").map(e=>e.trim()).filter(e=>e.length>0):Array.isArray(t)&&(o=t.map(e=>e.toString().trim()).filter(e=>e.length>0));const i=vs(o);return i?n.json({project_id:i}):n.status(404).json({error:"Project ID not found"})}),b.post("/api/project/info",La(),async(e,n)=>{(function(e){try{!function(e){var n,t,o,i;const a={last_accessed:Date.now(),editor:null!=(n=e.scene_path)&&n.endsWith(".unity")?"unity":null!=(t=e.scene_path)&&t.endsWith(".blend")?"blender":"unknown",editor_version:e.editor_version,editor_installation_path:e.editor_installation_path,log_location:e.editor_log_path,project_location:e.unity_project_path||e.blender_project_path||e.scene_path,scene_location:e.scene_path,web_location:e.web_project_path,needle_engine_integration_location:e.needle_sourcecode_location},s=Va();let r=Ya();const c=r.entries.findIndex(e=>e.project_location===a.project_location),l=null==(o=r.entries[0])?void 0:o.project_location;-1!==c?r.entries[c]=a:r.entries.push(a),r.entries.sort((e,n)=>n.last_accessed-e.last_accessed),r.entries.length>30&&(r.entries=r.entries.slice(0,30));const p=null==(i=r.entries[0])?void 0:i.project_location;p&&p!==l&&Vi(`Active project changed: ${l||"(none)"} → ${p}`);try{Ha=r;const e=JSON.stringify(r);u(s,e,"utf-8")}catch(e){console.error("Failed to save project info:",e)}}(e)}catch(e){Vi("Error saving project info: "+e)}})("string"==typeof e.body?JSON.parse(e.body):e.body),n.send("OK")});let j=null;const S=new Promise(e=>j=e);function p(){Vi("Cleaning up auth server...")}v=b.listen(ia,()=>{null==j||j()}),v.on("close",p),process.on("exit",p),process.on("SIGINT",()=>{p(),process.exit(0)}),await S.catch(e=>{console.error(e),Vi(`Error starting the auth server (promise failed): ${e.message}`)}),function(e){const n=new Y({server:e,path:"/mcp/ws"});Vi("MCP websocket server created.");let t=0,o=new Map;n.on("connection",e=>{const n=++t;Ts.push(e),console.log(`${Ss} client connected (#${n})`),Vi(`${Ss} client connected (#${n})`),e.on("close",()=>{const t=Ts.indexOf(e);-1!==t&&Ts.splice(t,1);const i=o.get(n);if(i){for(const e of i)Da(e,js);o.delete(n)}console.log(`${Ss} client disconnected (#${n})`),Vi(`${Ss} client disconnected (#${n})`)});const i=new Map;e.on("message",t=>{try{const a=t.toString(),s=JSON.parse(a);switch(s.command){default:console.log(`${Ss} Unknown command: ${s.command}`),Vi(`Unknown MCP websocket command received: ${s.command}`);break;case"get_connected_clients":console.log(`${Ss} Sending connected clients information to client (${n})`),function(t,o){console.log(`${Ss} Sending connected clients information to client (${n})`);const i={...o,command:"mcp_server_response",messageId:"messageId"in t?t.messageId:void 0};e.send(JSON.stringify(i))}(s,{clients:[...hs()]});break;case"register_tools":{const t=s.tools,a=s.source;a&&function(e,n){const t=Ba.get(e);if(t&&t.size>0){console.log(`[MCP] Removing ${t.size} tools registered from ${e}`);let o=!1;for(const n of t){const t=qa.findIndex(e=>e.name===n);-1!==t&&(qa.splice(t,1),delete Pa[n],Wa.set(n,e),o=!0)}Ba.delete(e),o&&n()}}(a,js);const r=a||"unknown";console.log(`${Ss} ${r} registered ${t.length} tool${1===t.length?"":"s"}`),Vi(`${Ss} ${r} registered ${t.length} tool${1===t.length?"":"s"}`);const c=o.get(n)||new Set;o.set(n,c);for(const n of t)c.add(n.name),Ma(n,async t=>{console.log(`Tool ${n.name} executed via WebSocket with args:`,t);const o=`${n.name}-${Date.now()}-${Math.random()}`;return await new Promise((a,s)=>{const r=setTimeout(()=>{i.has(o)&&(console.error(`${Ss} Tool execution timed out for tool: ${n.name}`),i.delete(o),s(new Error(`Tool execution timed out for tool: ${n.name}`)))},3e4);i.set(o,{resolve:e=>{a(e),clearTimeout(r)},reject:s}),e.send(JSON.stringify({command:"execute_tool",toolName:n.name,args:t,requestId:o}))})},{source:a},js);break}case"tool_result":{const e=s.requestId,n=s.result;if(console.log(`${Ss} Received tool result for requestId: ${e}`,n),i.has(e)){const t=i.get(e);null==t||t.resolve(n),i.delete(e)}else console.error(`${Ss} No pending tool execution found for requestId: ${e}`);break}}}catch(e){console.error(`${Ss} Error processing WebSocket message:`,e)}})})}(v),Qa({logToolCount:!0}),Ns||(Is=!1,qs()),process.on("exit",()=>(Is=!0,Ps(),As&&(clearTimeout(As),As=null),void(Ns&&(Ns.close(1e3,"shutdown"),Ns=null))))}return c}function Gs(e){let n="";return n=e.error?e.error:e.logged_in_machine_names.length>0?`You're already authenticated on ${e.logged_in_machine_names.length} other machine(s)${e.user_email?` with ${e.user_email}`:""}. Please logout from other machines first on ${Bi()}. You're currently logged in on: ${e.logged_in_machine_names.join(", ")}`:"An unknown error occured.",{status:403,error:n}}async function Hs(e={headless:!1,silent:!1,clearAuthData:!1}){return!0===e.clearAuthData&&await ua(),Ks("sign-in",{...e})}function Js(e={}){return Ks("sign-out",{...e})}function Ks(n,t){return new Promise(async(o,i)=>{let a=!1;if("sign-in"==n){const e=await Sa();if(null!=e&&e.isAuthenticated)return await za(e)?(a=!0,t.ora&&(t.ora.text=`Authorized as ${Aa(e)}`),"gotoAccountPage"in t&&!0===t.gotoAccountPage&&(t.ora&&(t.ora.text="Opening account page in the browser"),Mi(Bi()),await new Promise(e=>setTimeout(e,2e3))),o(e)):o(null);if(!0===t.headless)return o(null)}else if("sign-out"==n&&!0===t.headless){a=!0,ua();const n=await Ws(),t=await e(n.auth_endpoints["sign-out"],{follow:2});return o(t.ok)}const s=await Ws();switch(t.timeout||(t.timeout=6e5),"number"==typeof t.timeout&&t.timeout>0&&setTimeout(()=>{a||(t.ora&&t.ora.fail('Timeout "'+n+'"'),o(null))},t.timeout),n){case"sign-in":const e=s.auth_endpoints["sign-in"];setTimeout(()=>Mi(e),300),t.ora&&(t.ora.text=`Please authenticate in the browser: ${e}`),setTimeout(l,2e3);break;case"sign-out":ua(),Mi(s.auth_endpoints["sign-out"]),setTimeout(l,2e3)}let r=0;const c=10;function l(){e(s.auth_endpoints["is-authenticated"]).then(async e=>{if(200===e.status||400===e.status||403===e.status)switch(n){case"sign-in":if(200===e.status){const e=await Sa();return e&&!await za(e)?o(null):(a=!0,t.ora&&e&&(t.ora.text="User is authenticated"),o(e))}if(403===e.status){t.ora&&t.ora.fail("Authentication failed");const n=await e.text();if(n.startsWith("{")){const e=JSON.parse(n);if("logged_in_machine_names"in e&&Array.isArray(e.logged_in_machine_names)){const n=e.logged_in_machine_names;A().fail(`You're already authenticated on ${n.length} other machine(s). Please logout from other machines first. You're currently logged in on: ${n.join(", ")}`)}}return o(null)}break;case"sign-out":if(400===e.status)return a=!0,ua(),t.ora&&(t.ora.text="User is signed-out"),o(!0)}else if(r++,r>c)return t.ora?t.ora.fail(`Failed to complete auth flow. Please try again. Make sure that port ${s.port} is not blocked`):t.silent||console.error(`Failed to complete auth flow. Please try again. Make sure that port ${s.port} is not blocked`),o(null);setTimeout(l,1e3)}).catch(e=>{r>=10&&console.debug("Error polling auth status: "+e.message)})}})}globalThis.fetch||(globalThis.fetch=e),globalThis.File||(globalThis.File=n),globalThis.crypto||(globalThis.crypto=t.webcrypto);const Vs=process.argv.includes("--silent"),Ys=JSON.parse(r(new URL("../package.json",import.meta.url),"utf-8"));!Vs&&process.argv.includes("version")&&console.log(`☁ Needle CLI — ${Ys.version}, Node ${process.version}`);const Qs="The access token to use. Use the login command or get a token from https://cloud-staging.needle.tools. You can pass the access token with your command or set the environment variable NEEDLE_CLOUD_TOKEN";async function Zs(e,n=null,t=!0){let o,i=null==e?void 0:e.toString();var a;if(i||(M.config(),process.env.NEEDLE_CLOUD_TOKEN&&(i=process.env.NEEDLE_CLOUD_TOKEN,null!=(a=i)&&a.length&&console.log("Using NEEDLE_CLOUD_TOKEN token from env"))),""===i||"true"===i){const e=(await import("node:readline")).createInterface({input:process.stdin}),n=10;let t,i="",a=!1;return new Promise(s=>{const r="Paste your https://cloud-staging.needle.tools/team#token access token here:",c=A({text:r,interval:200,spinner:"moon"}).start();process.stdin.setRawMode(!0),process.stdin.on("data",l=>{const p=l.toString();""===p&&process.exit();const u="\n"===p||"\r"===p;if(!u&&"\n"!==p&&"\r"!==p){""===p||"\b"===p?i=i.slice(0,-1):i+=p;const e=i.replace(/./g,"*");c.text=`${r} ${e}`}clearTimeout(t),t=setTimeout(()=>{if(!a&&(u||i.trim().length>n)){process.stdin.setRawMode(!1),e.close(),a=!0;const n=i.trim();if(n.length>0){const e=n.slice(3,-3).replace(/./g,"*");c.succeed("Access token received: "+e)}else c.fail("No access token provided");s({accessToken:n,org_id:o})}},150)})})}if(!i){let e;await async function(){const e=await Sa();return null==e?void 0:e.isAuthenticated}()||(e=Vs?void 0:A("No access token found. Please sign in to authenticate...").start()),Vi("No access token provided, attempting login. Org: "+n);const a=Hs({headless:!t,ora:e,timeout:12e4}),d=await a;var s;if(d&&!Ca(d)?(null==(s=e)||s.warn("You are not logged in from this machine. Please login again."),await Js({headless:!0})):e&&(Vi("User logged in via getAccessToken "+(null==d?void 0:d.isAuthenticated)),d?e.succeed("Logged in"):e.fail("Login failed")),null!=d&&d.isAuthenticated){var r;if(null==n){const e=await async function(e){var n;if(!e)return{status:401,error:"Not authenticated"};const t=null==(n=e.userInfo)?void 0:n.custom_data;return t?t.default_org?t.default_org:(console.warn("WARN: You do not have a default organization set. Please visit your Needle Cloud account settings and then try again."),Vi("WARN: You do not have a default organization set. Please visit your Needle Cloud account settings and then try again."),null):null}(d);"string"==typeof e&&(n=e)}else n===(null==(r=d.userInfo)?void 0:r.sub)&&(n=null);if(n){var c,l,p;if(o=null==(c=d.userInfo)||null==(c=c.organization_data)||null==(c=c.find(e=>e.id===n))?void 0:c.id,o||(n=null==(l=n.toString())?void 0:l.toLowerCase(),null!=o||(o=null==(p=d.userInfo)||null==(p=p.organization_data)||null==(p=p.find(e=>e.name.toLowerCase()===n))?void 0:p.id)),!o)throw new Error(`ERR: You (${Aa(d)}) are not a member of the organization "${n}"`);i=await(null==d?void 0:d.client.getOrganizationToken(o)),Vi("Getting access token for org "+o+", "+i.substring(0,8)+"...")}else{var u;Vi("Getting access token for user "+(null==(u=d.userInfo)?void 0:u.sub)),i=null==d?void 0:d.accessToken}}}return i||(console.error("ERR: Missing NEEDLE_CLOUD_TOKEN token. Please provide the access token argument or set the environment variable NEEDLE_CLOUD_TOKEN. Get an access token for your team at https://cloud.needle.tools/team"),Vi("ERR: Missing NEEDLE_CLOUD_TOKEN token. Org: "+o),process.exit(403)),{accessToken:i,org_id:o}}const Xs=o.program;async function er(){const{spawn:e}=await import("node:child_process");e(process.execPath,[process.argv[1],"start","--integration","cli-login"],{stdio:"inherit",env:{...process.env,NEEDLE_CLOUD_TOKEN:process.env.NEEDLE_CLOUD_TOKEN||""}}),await new Promise(e=>setTimeout(e,1e3))}Xs.version(Ys.version).description("Command-line interface (CLI) for Needle Cloud"),Xs.command("start","Starts the Needle Auth server").alias("start-server").configure({visible:!1,strictOptions:!1}).help("Start the local server for Needle Cloud. This is required to authenticate with Needle Cloud and access your account and data.").option("--restart <restart>","Restarts the server",{required:!1,validator:Xs.BOOLEAN,default:!1}).option("--integration <integration>","Hint for the process which integration triggered this command",{required:!1,validator:Xs.STRING}).action(async({options:e})=>{const n=e.integration,t=Vs?void 0:A("Starting Needle License server "+(n?`(from ${n})`:"")).start();Ws({ora:t,restart:e.restart}).catch(e=>{console.error("Failed to start server:",e),null==t||t.fail("Failed to start server: "+e.message),process.exit(1)}).then(e=>{null!=e&&e.baseUrl&&e.isHost?null==t||t.succeed(`Server started on ${e.baseUrl}`):!1===(null==e?void 0:e.isHost)?(n||null==t||t.warn(`Server is running on ${e.baseUrl||e.port}`),process.exit(0)):(null==t||t.fail("Failed to start server"),process.exit(1))})}),Xs.command("mcp","Start MCP server for AI agents (stdio transport)").help('Start the Needle Cloud MCP server using stdio transport.\nThis is the standard way to connect AI agents (Claude Desktop, Cursor, VS Code, etc.).\n\nAdd to your MCP client config:\n{\n "mcpServers": {\n "needle": {\n "command": "npx",\n "args": ["-y", "needle-cloud", "mcp"]\n }\n }\n}').action(async()=>{const{startStdio:e}=await Promise.resolve().then(function(){return _s});e()}),Xs.command("get-project-id","Gets the project id for a local project").configure({visible:!1,strictOptions:!1}).argument("<paths...>","The path to the local project (web project directory)").action(async({args:e})=>{const n=vs(e.paths);n?console.log(`Found project ID: "${n}"`):console.log("No project ID found.")}),Xs.command("login","Login to Needle Cloud").help("Login to Needle Cloud. If you are already logged in, this will refresh the access token.").option("--headless <headless>","The headless process will not open a browser window to login. If the user is not authorized then no auth flow can be started. Use this if you only want to **check** if the user is authenticated",{required:!1,validator:Xs.BOOLEAN,default:!1}).option("--clear <clear>","Refresh the access token",{required:!1,validator:Xs.BOOLEAN,default:!1}).action(async({options:e})=>{await er();const n=e.headless.valueOf()||!1,t=e.clear.valueOf()||!1,o=Vs?void 0:A("Login").start();await Hs({headless:n,silent:Vs,clearAuthData:t,ora:o}).then(async e=>{null!=e&&e.isAuthenticated?null==o||o.succeed("Successfully logged in as "+Aa(e)):0==n?null!=e&&e.claims||null!=e&&e.userInfo?null==o||o.warn(`You (${Aa(e)}) are not authenticated...`):null==o||o.fail("Login failed"):Vs||null==o||o.warn("Not logged in"),process.exit(null!=e&&e.isAuthenticated?0:1)})}),Xs.command("logout","Logout of Needle Cloud").help("Logout of Needle Cloud (if you have logged in before).").option("--headless <headless>","Headless will not open a browser window to logout",{required:!1,validator:Xs.BOOLEAN,default:!1}).action(async({options:e})=>{await er();const n=e.headless.valueOf()||!1;await Js({headless:n}).then(e=>{e?A("Logged out").succeed():A("Logout failed").fail(),process.exit(e?0:1)})}),Xs.command("me","Prints your user information").help("Prints basic informaton about the logged in Needle Cloud account (your account)").action(async({})=>{const e=Vs?void 0:A("Query user data").start(),n=await Sa();if(null!=n&&n.isAuthenticated&&await Ca(n)){const a=n.userInfo||n.claims;var t,o,i;a?(null==e||e.succeed(`You are logged in as ${Aa(n)}`),console.log(`- Name: ${Aa(n)}`),console.log(`- ID: ${a.sub}`),a.email&&console.log(`- Email: ${a.email}`),a.phone_number&&console.log(`- Phone: ${a.phone_number}`),null!=(t=n.userInfo)&&t.organization_data&&console.log(`- Teams [${null==(o=n.userInfo)?void 0:o.organization_data.length}]: ${null==(i=n.userInfo)?void 0:i.organization_data.sort((e,n)=>e.name.localeCompare(n.name)).map(e=>e.name).join(", ")}`)):null==e||e.fail("Failed to get user data")}else null==e||e.warn("You are not logged in")}),Xs.command("get-pro","Start license flow for Needle Engine PRO").configure({visible:!1,strictArgsCount:!1,strictOptions:!1}).option("--org <org>","The team to purchase the license for",{validator:Xs.STRING}).action(async({options:e})=>{var n;let t=(null==(n=e.org)?void 0:n.toString())||null;const o=A().start("Start Needle Engine PRO purchase flow"),i=function(e){e=e||{};const n="undefined"!=typeof window?window.location:null;"current_page"===e.baseUrl&&(e.baseUrl=null==n?void 0:n.href);let t=e.pathname||(null==n?void 0:n.pathname),o=e.baseUrl||(null==n?void 0:n.href);if(!t||!o)return null;const i=new URL(t,o);return n&&(i.search=n.search),e.license||(e.license="needle-engine:pro"),i.searchParams.set("purchase_intent",e.license),e.account_id&&i.searchParams.set("account_id",e.account_id),e.return_url&&i.searchParams.set("return_url",e.return_url),e.checkout_if_possible&&i.searchParams.set("checkout_if_possible","true"),e.show_all_cards&&i.searchParams.set("show_all_cards","true"),e.affiliate_id&&i.searchParams.set("affiliate_id",e.affiliate_id),e.tracking_id&&i.searchParams.set("tracking_id",e.tracking_id),i}({baseUrl:"https://cloud-staging.needle.tools",pathname:t?`/team/${t}`:"/account",account_id:t,license:"needle-engine:pro",return_url:null});if(!i)return void o.fail("Failed to get purchase url - please visit https://cloud-staging.needle.tools");const a=i.toString();o.succeed(`Started Needle Engine PRO purchase flow: opening browser at ${a}`),Mi(a)});const nr={account:{url:Bi}},tr=`"${Object.keys(nr).join('", "')}"`;Xs.command("open",`Open a page in the default browser. Options are: ${tr}`).argument("<page>",`The page to open. Options are: ${tr}`,{validator:Xs.STRING}).configure({strictOptions:!1,strictArgsCount:!1,visible:!1}).help("").action(async({args:e,logger:n})=>{const t=e.page.toString(),o=nr[t];o?"url"in o?Mi(o.url()):n.error(`Unknown argument: ${t}`):n.error(`Unknown argument: ${t}. Options are: ${tr}`)}),Xs.command("list-deployments","Get a list of deployed websites").configure({visible:!1}).help("").option("--token <token>",Qs,{validator:Xs.STRING}).option("--org <org>","The organization name or id to authenticate for",{required:!1,validator:Xs.STRING}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Xs.STRING}).option("--limit <limit>","Limit the number of deployments to show (min: 0, max: 100)",{validator:Xs.NUMBER,default:10}).option("--offset <offset>","The offset for deployments (default: 0, min: 0)",{validator:Xs.NUMBER,default:0}).option("--format <format>","The output format. Options: cli (default), json",{validator:Xs.STRING,default:"cli",hidden:!0}).option("--name","Filter by one or multiple deployment names (separated by ;)",{validator:Xs.STRING}).action(async({options:e,logger:n})=>{var t,o,i;const{accessToken:a,org_id:s}=await Zs(e.token,e.org),r=(null==(t=e.endpoint)?void 0:t.toString())||"https://cloud-staging.needle.tools/api",c=e.limit.valueOf(),l=e.offset.valueOf(),p=(null==(o=e.format)?void 0:o.toString())||"cli",u=(null==(i=e.name)?void 0:i.toString())||void 0;if(c<0)return void n.error("The limit can not be negative");if(c>100)return void n.error("The limit can not be higher than 100");const d=A("Query deployments").start(),m=await ea({endpoint:r,authToken:a,org:s,limit:c,offset:l,names:null==u?void 0:u.split(";")}).catch(e=>{n.error(e)});if(m&&"error"in m)d.fail(m.error+" (status: "+m.status+")");else if(m){if("json"===p){d.succeed(`Found ${m.deployments.length} deployments`);const e=JSON.stringify(m.deployments);return void console.log(e)}m.deployments.length>0?(d.succeed(`Found ${m.deployments.length} deployments`),m.deployments.forEach((e,t)=>{n.info(`${t+c*l}: ${e.name} – ${e.url}`)})):d.warn("No deployments found"),process.exit(0)}else d.fail("Failed to query deployments"),process.exit(1)}),Xs.command("list-content","List content items (textures, materials, uploads, etc.)").help('List content items stored in Needle Cloud.\n\nUse --type to filter by content type (e.g. "material", "upload", "deployment").\nUse --format to filter by output format (e.g. "glb", "textures").').option("--token <token>",Qs,{validator:Xs.STRING}).option("--org <org>","The organization name or id to authenticate for",{required:!1,validator:Xs.STRING}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Xs.STRING}).option("--type <type>","Filter by content type (e.g. material, upload, deployment)",{required:!1,validator:Xs.STRING}).option("--format <format>","Filter by output format (e.g. glb, textures)",{required:!1,validator:Xs.STRING}).option("--search <search>","Search by name, title or description",{required:!1,validator:Xs.STRING}).option("--limit <limit>","Max number of items to show (default: 20, max: 100)",{validator:Xs.NUMBER,default:20}).option("--offset <offset>","Offset for pagination (default: 0)",{validator:Xs.NUMBER,default:0}).option("--output <output>","Output style: cli (default), json",{validator:Xs.STRING,default:"cli"}).action(async({options:e,logger:n})=>{var t,o,i,a,s,r,c,l,p;const{accessToken:u,org_id:d}=await Zs(e.token,e.org),m=(null==(t=e.endpoint)?void 0:t.toString())||"https://cloud-staging.needle.tools/api",f=Math.min(null!=(o=null==(i=e.limit)?void 0:i.valueOf())?o:20,100),h=null!=(a=null==(s=e.offset)?void 0:s.valueOf())?a:0,g=(null==(r=e.output)?void 0:r.toString())||"cli",v=(null==(c=e.type)?void 0:c.toString())||void 0,x=(null==(l=e.format)?void 0:l.toString())||void 0,b=(null==(p=e.search)?void 0:p.toString())||void 0,y=A("Querying content...").start();try{const e=await qi({baseUrl:m,authToken:u,org:d},{content_type:v,content_format:x,search:b,limit:f,offset:h});if("json"===g)return y.succeed(`Found ${e.items.length} of ${e.total} items`),void console.log(JSON.stringify(e.items,null,2));0===e.items.length&&(y.warn("No content found"+(v?` (type: ${v})`:"")+(x?` (format: ${x})`:"")),process.exit(0)),y.succeed(`Found ${e.items.length} of ${e.total} items`);const t=e.items.map(e=>{var n;return{id:e.identifier,type:e.content_type||"?",formats:null!=(n=e.output_formats)&&n.length?e.output_formats.join(", "):"",name:(e.name||"(untitled)").length>20?(e.name||"(untitled)").slice(0,17)+"...":e.name||"(untitled)",size:e.total_size?Ti(e.total_size):"",date:e.created_at?Ci(new Date(e.created_at),new Date,{allowSimple:!0,limitInDays:2}):""}}),o={id:Math.max(2,...t.map(e=>e.id.length)),type:Math.max(4,...t.map(e=>e.type.length)),formats:Math.max(7,...t.map(e=>e.formats.length)),name:Math.max(4,...t.map(e=>e.name.length)),size:Math.max(4,...t.map(e=>e.size.length))},i=oa(` ${"ID".padEnd(o.id)} ${"TYPE".padEnd(o.type)} ${"FORMATS".padEnd(o.formats)} ${"NAME".padEnd(o.name)} ${"SIZE".padStart(o.size)} AGE`);n.info(i);for(const e of t){const t=ta(e.type).padEnd(o.type+11),i=(e.formats?e.formats.split(", "):[]).map(e=>ta(e)).join(", ")+" ".repeat(Math.max(0,o.formats-e.formats.length));n.info(` ${oa(e.id.padEnd(o.id))} ${t} ${i} ${e.name.padEnd(o.name)} ${e.size.padStart(o.size)} ${oa(e.date)}`)}e.total>h+f&&n.info(` ... ${e.total-h-f} more (use --offset ${h+f})`),process.exit(0)}catch(e){y.fail(e.message),process.exit(1)}}),Xs.command("download","Download a content item by identifier or name").help('Download files from a content item. Resolves by identifier first, then by name (case-insensitive).\n\nUse --format to select which output format to download (e.g. "glb", "textures").\n\nUsage:\n needle-cloud download <identifier> [directory]\n needle-cloud download banana --format glb').argument("<identifier>","Content item identifier or name",{validator:Xs.STRING}).argument("[directory]","Output directory (default: current directory)",{default:"."}).option("--token <token>",Qs,{validator:Xs.STRING}).option("--org <org>","The organization name or id to authenticate for",{required:!1,validator:Xs.STRING}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Xs.STRING}).option("--format <format>","Output format to download (e.g. glb, textures)",{required:!1,validator:Xs.STRING}).option("--name <name>","Output filename (without extension)",{required:!1,validator:Xs.STRING}).option("--verbose","Show detailed download info",{required:!1,validator:Xs.BOOLEAN,default:!1}).action(async({args:e,options:n,logger:t})=>{var o,i,a,s,r,c;const{accessToken:l,org_id:p}=await Zs(n.token,n.org),u=(null==(o=n.endpoint)?void 0:o.toString())||"https://cloud-staging.needle.tools/api",d=e.identifier.toString(),m=(null==(i=e.directory)?void 0:i.toString())||".",f=(null==(a=n.name)?void 0:a.toString())||void 0,h=null!=(s=null==(r=n.verbose)?void 0:r.valueOf())&&s,g=(null==(c=n.format)?void 0:c.toString())||void 0,v=A("Looking up content...").start();try{const e=await qi({baseUrl:u,authToken:l,org:p},{content_format:g,search:d,limit:10}),n=e.items.find(e=>e.identifier===d)||e.items.find(e=>{var n;return(null==(n=e.name)?void 0:n.toLowerCase())===d.toLowerCase()});if(!n)return void v.fail(`No content found matching "${d}"`);if(!n.job_id)return void v.fail(`Content "${n.name}" has no downloadable files`+(g?` (format: ${g})`:""));v.text=`Downloading "${n.name}"${g?` (format: ${g})`:""}...`,v.stop();const o=await Xi({baseUrl:u,authToken:l,org:p,identifier:n.job_id,outDir:m,filename:f,verbose:h,content_format:g});"error"in o&&t.error(o.error)}catch(e){v.fail(e.message)}}),Xs.command("deploy","Deploy a website to Needle").help("").argument("<directory>","The directory to deploy",{validator:Xs.STRING}).option("--token <token>",Qs,{validator:Xs.STRING}).option("--team <team>","The team name or id to deploy to (not needed when using token/accesstoken)",{required:!1,validator:Xs.STRING}).option("--org <org>","The organization name or id to deloy to (not needed when using token/accesstoken)",{required:!1,validator:Xs.STRING,hidden:!0}).option("--name <name>","The project name. This name will also be used in your website URL",{required:!1,validator:Xs.STRING}).option("--entrypoint <entrypoint>",'The entrypoint file to use (e.g. "index.html"). This is useful if you want to deploy a folder with multiple HTML files and you want to configure which file to load initially or if you have multiple model files in one folder',{required:!1,validator:Xs.STRING,hidden:!0}).option("--endpoint <endpoint>","The needle cloud endpoint to use - e.g. https://cloud-staging.needle.tools/api",{required:!1,validator:Xs.STRING,hidden:!0}).option("--open","Open the deployment in the default browser",{default:!0,validator:Xs.BOOLEAN}).option("--verbose <verbose>","Enables verbose output logs",{required:!1,validator:Xs.BOOLEAN,default:!1,hidden:!0}).option("--experimental","Use the experimental upload API. Mostly used for debugging (default: false)",{required:!1,validator:Xs.BOOLEAN,default:!1,hidden:!0}).option("--raw","Use raw to disallow modifications like gzip compression on upload",{required:!1,validator:Xs.BOOLEAN,default:!1,hidden:!0}).action(async({args:e,options:n,logger:t})=>{var o,i,a;const s=n.open,{accessToken:r,org_id:c}=await Zs(n.token,n.team||n.org),l=n.verbose.valueOf(),p=n.experimental.valueOf()||!1,u=n.raw.valueOf()||!1;await Qi({logger:t,endpoint:(null==(o=n.endpoint)?void 0:o.toString())||void 0,token:r,org_id:c,directory:e.directory.toString(),name:(null==(i=n.name)?void 0:i.toString())||void 0,entrypoint:(null==(a=n.entrypoint)?void 0:a.toString())||void 0,open:s,verbose:l||!1,experimental:p||!1,raw:u||!1})}),Xs.command("optimize","Optimize glTF, GLB, VRM, FBX, USD files").help("").option("--token <token>",Qs,{validator:Xs.STRING}).option("--team <team>","The team name or id to upload the file to",{required:!1,validator:Xs.STRING}).option("--org <org>","The organization name or id to upload the file to",{required:!1,validator:Xs.STRING,hidden:!0}).argument("<path>","The full path to a file or directory that should be optimized",{validator:Xs.STRING}).option("--outdir <outdir>","The output directory for the optimized file(s). If set your optimized asset files will automatically be downloaded to this directory.",{required:!1,validator:Xs.STRING}).option("--name <name>","The optimization project name / unique identifier. This can also be the view id of previous uploads.",{required:!1,validator:Xs.STRING}).option("--verbose <verbose>","Enables verbose output logs",{required:!1,validator:Xs.BOOLEAN,default:!1}).option("--progressive","Use Needle progressive loading",{required:!1,validator:Xs.BOOLEAN,default:!0}).action(async({args:e,options:n,logger:t})=>{var o,i,r;const c=n.verbose.valueOf(),{accessToken:l,org_id:p}=await Zs(n.token,n.team||n.org);if(l!=n.token){const e=await Sa();null!=e&&e.isAuthenticated?p||(A("Please provide an organization id to optimize files...").fail(),process.exit(1)):(A("Please login to optimize files...").fail(),process.exit(1));const n=await async function(e,n){const t=e.baseUrl+Z.account.get_licenses,o={...{...n},...X(e)},i=await fetch(t,{...ee,method:"GET",headers:o}).catch(e=>(console.error(e),null));return i?i.ok?(await i.json()).licenses:(console.error(i.statusText,await i.text()),[]):[]}({baseUrl:"https://cloud-staging.needle.tools/api",authToken:l,org:p},{type:"org",org_id:p});(!n||n.length<=0||!n.find(e=>"Needle Engine"===e.type&&("pro"===e.license||"enterprise"===e.license)))&&(A("Update to Needle PRO or Enterprise required to optimize files via CLI. Visit https://cloud-staging.needle.tools/get-pro").fail(),process.exit(1))}const u=(null==(o=n.progressive)?void 0:o.valueOf())||!0,d=await async function(e){if(e.outDir){var n;if((null==(n=e.outDir)?void 0:n.length)<=0){const e="Output Directory is invalid";return A().fail(e),{error:e}}if(a(e.outDir)&&s(e.outDir).isFile()){const e="The output directory is a file - it must be a directory";return A().fail(e),{error:e}}}const t=e.fileOrDirectory;if(!a(t))return A().fail(`File not found: ${t}`),{error:"File not found"};if(!e.token||e.token.length<=1||"string"!=typeof e.token||"true"===e.token)return{error:`Missing access token. Create a token at ${Bi()}`};if(void 0!==e.name&&e.name&&(e.name.length<=0||"true"===e.name||"false"===e.name))return{error:`Name is not valid: "${e.name}". Please provide a valid name`};e.fileOrDirectory=x(e.fileOrDirectory);const o=A(`Gathering files ${e.fileOrDirectory}`).start();let i=null;try{i=Gi("optimization",e.fileOrDirectory)}catch(n){return A().fail(`${n.message||`Failed to collect files in ${e.fileOrDirectory}`}`),{error:"Failed to collect files"}}o.text=`Uploading ${i.files.length} files for optimization:\n- ${i.files.map(e=>e.path||e.name).join("\n -")}`;const r="https://cloud-staging.needle.tools/api";e.verbose&&console.log("Using endpoint:",r);const c=await Li({baseUrl:r,authToken:e.token,org:e.org_id},{triggered_by:"cli",files:i.files,entrypoint:i.entrypoint},{type:"upload",name:e.name,loglevel:e.verbose?"debug":"none",progress:e=>{o.text=`Uploading ${e.fileName} - finished in approx. ${e.estimatedTimeLeftDisplay}, ${100*e.progress01}%`}});if(0==c.success){const e=`${c.error||"Unknown error: could not start upload"}`;return o.fail(e),{error:e,noprint:!0}}if(c.success){const n=`${Di()}/${c.content_id}?select_team=1`;o.succeed(c.uploadSkipped?`Files have already been uploaded to ${n}`:`Uploaded ${i.files.length} files for optimization to ${n}`);const t=await async function(e,n={progressive:!0}){const t=e.baseUrl+Z.jobs.create,o={...X(e),"content-type":"application/json"},i={type:"optimization",job_id:e.id,triggered_by:e.trigger_type,parameters:{...n}},a=await fetch(t,{...ee,method:"POST",headers:o,body:JSON.stringify(i)});if(!a.ok){const e=await a.text();return console.error(`Failed to request optimization (${a.status}): ${e} `),null}return await a.json().catch(e=>(console.error(e),null))}({baseUrl:r,authToken:e.token,org:e.org_id,id:c.id,trigger_type:"cli"},{progressive:e.progressive,pipeline_version:"latest"});if(!t)return{error:"Failed to send optimization request"};if("error"in t){const e=`Failed to optimize: ${t.error}`;return console.error(e),{error:e}}{const n=t.job,o=A(`Optimization requested for ${n.name||n.identifier}`).start();let i=!1;for(o.color="gray";;){if("completed"===t.job.status){var l;i=!0,o.succeed(`${null!=(l=t.message)?l:"Optimization completed"}`);break}let a=2e3;const s=await li(n.identifier,{baseUrl:r,authToken:e.token,org:t.job.org});if("new"!==(null==s?void 0:s.status)&&"pending"!==(null==s?void 0:s.status)||(o.text="Your asset is queued - waiting for optimization to start",o.color="yellow",a=2e3),"running"===(null==s?void 0:s.status))o.text=`Your asset is being optimized: ${s.progress?`${s.progress}%`:""} ${s.status_message?`— ${s.status_message}`:""}`,o.color="cyan",a=1e3;else if("stalled"===(null==s?void 0:s.status))a=2500;else{if("completed"===(null==s?void 0:s.status)){i=!0,o.succeed(`Your asset has finished optimizing: ${s.status_message}`);break}if("canceled"===(null==s?void 0:s.status))return o.fail(`Optimization cancelled: ${s.error}`),{error:s.error||"Optimization cancelled"};if("failed"===(null==s?void 0:s.status))return o.fail(`Optimization failed: ${s.error}`),console.error(`Optimization failed: ${s.error}`),{error:s.error||"Optimization failed"}}await Ei(a)}if(i){if(e.outDir){const t=await Xi({baseUrl:r,authToken:e.token,org:e.org_id,identifier:n.identifier,outDir:e.outDir,verbose:e.verbose});if("error"in t)return{error:t.error}}else A().succeed(`Asset successfully optimized: https://cloud-staging.needle.tools/edit/${n.content_id} (To download optimized files, use the --outdir option)`);return{success:!0}}}}return{error:"Unknown error"}}({logger:t,token:l,org_id:p,fileOrDirectory:e.path.toString(),name:(null==(i=n.name)?void 0:i.toString())||void 0,progressive:u,outDir:(null==(r=n.outdir)?void 0:r.toString())||void 0,verbose:c||!1}).catch(e=>{console.error(e),process.exit(1)});Array.isArray(d)?process.exit(0):"error"in d&&(d.noprint||console.error(d.error),process.exit(1))}),Xs.command("generate-material","Generate a PBR material from a text prompt").help("").argument("<prompt>","The text prompt describing the material to generate",{validator:Xs.STRING}).option("--token <token>",Qs,{validator:Xs.STRING}).option("--team <team>","The team name or id",{required:!1,validator:Xs.STRING}).option("--org <org>","The organization name or id",{required:!1,validator:Xs.STRING,hidden:!0}).option("--resolution <resolution>","The material texture resolution (256, 512, 1k, 2k, 4k)",{default:"512",required:!1,validator:Xs.STRING}).option("--name <name>","Output filename",{required:!1,validator:Xs.STRING}).option("--outdir <outdir>","Output directory to download the generated file(s) to",{required:!1,validator:Xs.STRING}).action(async({args:e,options:n,logger:t})=>{var o,i,a;const{accessToken:s,org_id:r}=await Zs(n.token,n.team||n.org),c=e.prompt.toString(),l=null==(o=n.resolution)?void 0:o.toString(),p=null==(i=n.outdir)?void 0:i.toString(),u=null==(a=n.name)?void 0:a.toString(),d=await async function(e){if(!e.token||e.token.length<=1||"string"!=typeof e.token||"true"===e.token)return{error:`Missing access token. Create a token at ${Bi()}`};if(!e.prompt||e.prompt.length<=0)return{error:"A prompt is required"};const n="https://cloud-staging.needle.tools/api",t=A("Requesting material generation...").start(),o=await async function(e,n){const t=e.baseUrl+Z.jobs.create,o={...X(e),"content-type":"application/json"},i={type:"ai-material",triggered_by:e.trigger_type,parameters:{...n}},a=await fetch(t,{...ee,method:"POST",headers:o,body:JSON.stringify(i)});if(!a.ok){const e=await a.text();return console.error(`Failed to request texture generation (${a.status}): ${e}`),{error:e||`Request failed (${a.status})`}}return await a.json().catch(e=>(console.error(e),null))}({baseUrl:n,authToken:e.token,org:e.org_id,trigger_type:"cli"},{prompt:e.prompt,resolution:e.resolution||512}).catch(e=>({error:e.message||"Request failed"}));if("error"in o)return t.fail(o.error),{error:o.error};const i=o.job;if("canceled"===i.status)return t.fail(i.status_message||"Material generation was canceled (quota exceeded)"),{error:i.status_message||"Quota exceeded"};t.succeed(`Material generation requested: ${i.identifier}`);const a=A("Waiting for material generation...").start();for(a.color="gray";;){if("completed"===i.status){a.succeed("Material generation completed");break}let t=2e3;const o=await li(i.identifier,{baseUrl:n,authToken:e.token,org:i.org});if("new"===(null==o?void 0:o.status)||"pending"===(null==o?void 0:o.status))a.text="Your material is queued - waiting for generation to start",a.color="yellow",t=2e3;else if("running"===(null==o?void 0:o.status))a.text=`Generating material: ${o.progress?`${o.progress}%`:""} ${o.status_message?`— ${o.status_message}`:""}`,a.color="cyan",t=1e3;else{if("completed"===(null==o?void 0:o.status)){a.succeed(`Material generation completed: ${o.status_message||""}`);break}if("canceled"===(null==o?void 0:o.status))return a.fail(`Material generation canceled: ${o.error||""}`),{error:o.error||"Material generation canceled"};if("failed"===(null==o?void 0:o.status))return a.fail(`Material generation failed: ${o.error||""}`),{error:o.error||"Material generation failed"}}await Ei(t)}if(e.outDir||(e.outDir="."),e.outDir){const t=await Xi({baseUrl:n,authToken:e.token,org:e.org_id,identifier:i.identifier,outDir:e.outDir,filename:e.outputName});if("error"in t)return{error:t.error}}return{success:!0}}({logger:t,token:s,org_id:r,prompt:c,resolution:l,outputName:u,outDir:p});"error"in d&&(d.error&&t.error(d.error),process.exit(1)),process.exit(0)});export{Xs as program};
|