"use strict"; const path$1 = require("path"); const electron = require("electron"); const require$$1 = require("util"); const stream = require("stream"); const require$$3 = require("http"); const require$$4 = require("https"); const require$$0$1 = require("url"); const require$$6 = require("fs"); const require$$4$1 = require("assert"); const require$$1$1 = require("tty"); const os = require("os"); const zlib = require("zlib"); const events$1 = require("events"); const child_process = require("child_process"); function bind(fn, thisArg) { return function wrap2() { return fn.apply(thisArg, arguments); }; } const { toString } = Object.prototype; const { getPrototypeOf } = Object; const kindOf = /* @__PURE__ */ ((cache) => (thing) => { const str = toString.call(thing); return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); })(/* @__PURE__ */ Object.create(null)); const kindOfTest = (type) => { type = type.toLowerCase(); return (thing) => kindOf(thing) === type; }; const typeOfTest = (type) => (thing) => typeof thing === type; const { isArray } = Array; const isUndefined = typeOfTest("undefined"); function isBuffer$1(val) { return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val); } const isArrayBuffer = kindOfTest("ArrayBuffer"); function isArrayBufferView(val) { let result; if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { result = ArrayBuffer.isView(val); } else { result = val && val.buffer && isArrayBuffer(val.buffer); } return result; } const isString$1 = typeOfTest("string"); const isFunction$1 = typeOfTest("function"); const isNumber = typeOfTest("number"); const isObject = (thing) => thing !== null && typeof thing === "object"; const isBoolean = (thing) => thing === true || thing === false; const isPlainObject = (val) => { if (kindOf(val) !== "object") { return false; } const prototype2 = getPrototypeOf(val); return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); }; const isDate = kindOfTest("Date"); const isFile = kindOfTest("File"); const isBlob = kindOfTest("Blob"); const isFileList = kindOfTest("FileList"); const isStream = (val) => isObject(val) && isFunction$1(val.pipe); const isFormData = (thing) => { let kind; return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction$1(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance kind === "object" && isFunction$1(thing.toString) && thing.toString() === "[object FormData]")); }; const isURLSearchParams = kindOfTest("URLSearchParams"); const trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); function forEach(obj, fn, { allOwnKeys = false } = {}) { if (obj === null || typeof obj === "undefined") { return; } let i; let l; if (typeof obj !== "object") { obj = [obj]; } if (isArray(obj)) { for (i = 0, l = obj.length; i < l; i++) { fn.call(null, obj[i], i, obj); } } else { const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); const len = keys.length; let key; for (i = 0; i < len; i++) { key = keys[i]; fn.call(null, obj[key], key, obj); } } } function findKey(obj, key) { key = key.toLowerCase(); const keys = Object.keys(obj); let i = keys.length; let _key; while (i-- > 0) { _key = keys[i]; if (key === _key.toLowerCase()) { return _key; } } return null; } const _global = (() => { if (typeof globalThis !== "undefined") return globalThis; return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; })(); const isContextDefined = (context) => !isUndefined(context) && context !== _global; function merge() { const { caseless } = isContextDefined(this) && this || {}; const result = {}; const assignValue = (val, key) => { const targetKey = caseless && findKey(result, key) || key; if (isPlainObject(result[targetKey]) && isPlainObject(val)) { result[targetKey] = merge(result[targetKey], val); } else if (isPlainObject(val)) { result[targetKey] = merge({}, val); } else if (isArray(val)) { result[targetKey] = val.slice(); } else { result[targetKey] = val; } }; for (let i = 0, l = arguments.length; i < l; i++) { arguments[i] && forEach(arguments[i], assignValue); } return result; } const extend = (a, b, thisArg, { allOwnKeys } = {}) => { forEach(b, (val, key) => { if (thisArg && isFunction$1(val)) { a[key] = bind(val, thisArg); } else { a[key] = val; } }, { allOwnKeys }); return a; }; const stripBOM = (content) => { if (content.charCodeAt(0) === 65279) { content = content.slice(1); } return content; }; const inherits = (constructor, superConstructor, props, descriptors2) => { constructor.prototype = Object.create(superConstructor.prototype, descriptors2); constructor.prototype.constructor = constructor; Object.defineProperty(constructor, "super", { value: superConstructor.prototype }); props && Object.assign(constructor.prototype, props); }; const toFlatObject = (sourceObj, destObj, filter2, propFilter) => { let props; let i; let prop; const merged = {}; destObj = destObj || {}; if (sourceObj == null) return destObj; do { props = Object.getOwnPropertyNames(sourceObj); i = props.length; while (i-- > 0) { prop = props[i]; if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { destObj[prop] = sourceObj[prop]; merged[prop] = true; } } sourceObj = filter2 !== false && getPrototypeOf(sourceObj); } while (sourceObj && (!filter2 || filter2(sourceObj, destObj)) && sourceObj !== Object.prototype); return destObj; }; const endsWith = (str, searchString, position) => { str = String(str); if (position === void 0 || position > str.length) { position = str.length; } position -= searchString.length; const lastIndex = str.indexOf(searchString, position); return lastIndex !== -1 && lastIndex === position; }; const toArray = (thing) => { if (!thing) return null; if (isArray(thing)) return thing; let i = thing.length; if (!isNumber(i)) return null; const arr = new Array(i); while (i-- > 0) { arr[i] = thing[i]; } return arr; }; const isTypedArray = /* @__PURE__ */ ((TypedArray) => { return (thing) => { return TypedArray && thing instanceof TypedArray; }; })(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); const forEachEntry = (obj, fn) => { const generator = obj && obj[Symbol.iterator]; const iterator = generator.call(obj); let result; while ((result = iterator.next()) && !result.done) { const pair = result.value; fn.call(obj, pair[0], pair[1]); } }; const matchAll = (regExp, str) => { let matches; const arr = []; while ((matches = regExp.exec(str)) !== null) { arr.push(matches); } return arr; }; const isHTMLForm = kindOfTest("HTMLFormElement"); const toCamelCase = (str) => { return str.toLowerCase().replace( /[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { return p1.toUpperCase() + p2; } ); }; const hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype); const isRegExp = kindOfTest("RegExp"); const reduceDescriptors = (obj, reducer) => { const descriptors2 = Object.getOwnPropertyDescriptors(obj); const reducedDescriptors = {}; forEach(descriptors2, (descriptor, name) => { let ret; if ((ret = reducer(descriptor, name, obj)) !== false) { reducedDescriptors[name] = ret || descriptor; } }); Object.defineProperties(obj, reducedDescriptors); }; const freezeMethods = (obj) => { reduceDescriptors(obj, (descriptor, name) => { if (isFunction$1(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) { return false; } const value = obj[name]; if (!isFunction$1(value)) return; descriptor.enumerable = false; if ("writable" in descriptor) { descriptor.writable = false; return; } if (!descriptor.set) { descriptor.set = () => { throw Error("Can not rewrite read-only method '" + name + "'"); }; } }); }; const toObjectSet = (arrayOrString, delimiter) => { const obj = {}; const define = (arr) => { arr.forEach((value) => { obj[value] = true; }); }; isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); return obj; }; const noop$1 = () => { }; const toFiniteNumber = (value, defaultValue) => { value = +value; return Number.isFinite(value) ? value : defaultValue; }; const ALPHA = "abcdefghijklmnopqrstuvwxyz"; const DIGIT = "0123456789"; const ALPHABET = { DIGIT, ALPHA, ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT }; const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { let str = ""; const { length } = alphabet; while (size--) { str += alphabet[Math.random() * length | 0]; } return str; }; function isSpecCompliantForm(thing) { return !!(thing && isFunction$1(thing.append) && thing[Symbol.toStringTag] === "FormData" && thing[Symbol.iterator]); } const toJSONObject = (obj) => { const stack = new Array(10); const visit = (source, i) => { if (isObject(source)) { if (stack.indexOf(source) >= 0) { return; } if (!("toJSON" in source)) { stack[i] = source; const target = isArray(source) ? [] : {}; forEach(source, (value, key) => { const reducedValue = visit(value, i + 1); !isUndefined(reducedValue) && (target[key] = reducedValue); }); stack[i] = void 0; return target; } } return source; }; return visit(obj, 0); }; const isAsyncFn = kindOfTest("AsyncFunction"); const isThenable = (thing) => thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch); const utils$1 = { isArray, isArrayBuffer, isBuffer: isBuffer$1, isFormData, isArrayBufferView, isString: isString$1, isNumber, isBoolean, isObject, isPlainObject, isUndefined, isDate, isFile, isBlob, isRegExp, isFunction: isFunction$1, isStream, isURLSearchParams, isTypedArray, isFileList, forEach, merge, extend, trim, stripBOM, inherits, toFlatObject, kindOf, kindOfTest, endsWith, toArray, forEachEntry, matchAll, isHTMLForm, hasOwnProperty, hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection reduceDescriptors, freezeMethods, toObjectSet, toCamelCase, noop: noop$1, toFiniteNumber, findKey, global: _global, isContextDefined, ALPHABET, generateString, isSpecCompliantForm, toJSONObject, isAsyncFn, isThenable }; function AxiosError(message, code, config, request, response) { Error.call(this); if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } else { this.stack = new Error().stack; } this.message = message; this.name = "AxiosError"; code && (this.code = code); config && (this.config = config); request && (this.request = request); response && (this.response = response); } utils$1.inherits(AxiosError, Error, { toJSON: function toJSON() { return { // Standard message: this.message, name: this.name, // Microsoft description: this.description, number: this.number, // Mozilla fileName: this.fileName, lineNumber: this.lineNumber, columnNumber: this.columnNumber, stack: this.stack, // Axios config: utils$1.toJSONObject(this.config), code: this.code, status: this.response && this.response.status ? this.response.status : null }; } }); const prototype$1 = AxiosError.prototype; const descriptors = {}; [ "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" // eslint-disable-next-line func-names ].forEach((code) => { descriptors[code] = { value: code }; }); Object.defineProperties(AxiosError, descriptors); Object.defineProperty(prototype$1, "isAxiosError", { value: true }); AxiosError.from = (error, code, config, request, response, customProps) => { const axiosError = Object.create(prototype$1); utils$1.toFlatObject(error, axiosError, function filter2(obj) { return obj !== Error.prototype; }, (prop) => { return prop !== "isAxiosError"; }); AxiosError.call(axiosError, error.message, code, config, request, response); axiosError.cause = error; axiosError.name = error.name; customProps && Object.assign(axiosError, customProps); return axiosError; }; function getDefaultExportFromCjs(x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; } var Stream$2 = stream.Stream; var util$2 = require$$1; var delayed_stream = DelayedStream$1; function DelayedStream$1() { this.source = null; this.dataSize = 0; this.maxDataSize = 1024 * 1024; this.pauseStream = true; this._maxDataSizeExceeded = false; this._released = false; this._bufferedEvents = []; } util$2.inherits(DelayedStream$1, Stream$2); DelayedStream$1.create = function(source, options) { var delayedStream = new this(); options = options || {}; for (var option in options) { delayedStream[option] = options[option]; } delayedStream.source = source; var realEmit = source.emit; source.emit = function() { delayedStream._handleEmit(arguments); return realEmit.apply(source, arguments); }; source.on("error", function() { }); if (delayedStream.pauseStream) { source.pause(); } return delayedStream; }; Object.defineProperty(DelayedStream$1.prototype, "readable", { configurable: true, enumerable: true, get: function() { return this.source.readable; } }); DelayedStream$1.prototype.setEncoding = function() { return this.source.setEncoding.apply(this.source, arguments); }; DelayedStream$1.prototype.resume = function() { if (!this._released) { this.release(); } this.source.resume(); }; DelayedStream$1.prototype.pause = function() { this.source.pause(); }; DelayedStream$1.prototype.release = function() { this._released = true; this._bufferedEvents.forEach((function(args) { this.emit.apply(this, args); }).bind(this)); this._bufferedEvents = []; }; DelayedStream$1.prototype.pipe = function() { var r = Stream$2.prototype.pipe.apply(this, arguments); this.resume(); return r; }; DelayedStream$1.prototype._handleEmit = function(args) { if (this._released) { this.emit.apply(this, args); return; } if (args[0] === "data") { this.dataSize += args[1].length; this._checkIfMaxDataSizeExceeded(); } this._bufferedEvents.push(args); }; DelayedStream$1.prototype._checkIfMaxDataSizeExceeded = function() { if (this._maxDataSizeExceeded) { return; } if (this.dataSize <= this.maxDataSize) { return; } this._maxDataSizeExceeded = true; var message = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded."; this.emit("error", new Error(message)); }; var util$1 = require$$1; var Stream$1 = stream.Stream; var DelayedStream = delayed_stream; var combined_stream = CombinedStream$1; function CombinedStream$1() { this.writable = false; this.readable = true; this.dataSize = 0; this.maxDataSize = 2 * 1024 * 1024; this.pauseStreams = true; this._released = false; this._streams = []; this._currentStream = null; this._insideLoop = false; this._pendingNext = false; } util$1.inherits(CombinedStream$1, Stream$1); CombinedStream$1.create = function(options) { var combinedStream = new this(); options = options || {}; for (var option in options) { combinedStream[option] = options[option]; } return combinedStream; }; CombinedStream$1.isStreamLike = function(stream2) { return typeof stream2 !== "function" && typeof stream2 !== "string" && typeof stream2 !== "boolean" && typeof stream2 !== "number" && !Buffer.isBuffer(stream2); }; CombinedStream$1.prototype.append = function(stream2) { var isStreamLike = CombinedStream$1.isStreamLike(stream2); if (isStreamLike) { if (!(stream2 instanceof DelayedStream)) { var newStream = DelayedStream.create(stream2, { maxDataSize: Infinity, pauseStream: this.pauseStreams }); stream2.on("data", this._checkDataSize.bind(this)); stream2 = newStream; } this._handleErrors(stream2); if (this.pauseStreams) { stream2.pause(); } } this._streams.push(stream2); return this; }; CombinedStream$1.prototype.pipe = function(dest, options) { Stream$1.prototype.pipe.call(this, dest, options); this.resume(); return dest; }; CombinedStream$1.prototype._getNext = function() { this._currentStream = null; if (this._insideLoop) { this._pendingNext = true; return; } this._insideLoop = true; try { do { this._pendingNext = false; this._realGetNext(); } while (this._pendingNext); } finally { this._insideLoop = false; } }; CombinedStream$1.prototype._realGetNext = function() { var stream2 = this._streams.shift(); if (typeof stream2 == "undefined") { this.end(); return; } if (typeof stream2 !== "function") { this._pipeNext(stream2); return; } var getStream = stream2; getStream((function(stream3) { var isStreamLike = CombinedStream$1.isStreamLike(stream3); if (isStreamLike) { stream3.on("data", this._checkDataSize.bind(this)); this._handleErrors(stream3); } this._pipeNext(stream3); }).bind(this)); }; CombinedStream$1.prototype._pipeNext = function(stream2) { this._currentStream = stream2; var isStreamLike = CombinedStream$1.isStreamLike(stream2); if (isStreamLike) { stream2.on("end", this._getNext.bind(this)); stream2.pipe(this, { end: false }); return; } var value = stream2; this.write(value); this._getNext(); }; CombinedStream$1.prototype._handleErrors = function(stream2) { var self2 = this; stream2.on("error", function(err) { self2._emitError(err); }); }; CombinedStream$1.prototype.write = function(data) { this.emit("data", data); }; CombinedStream$1.prototype.pause = function() { if (!this.pauseStreams) { return; } if (this.pauseStreams && this._currentStream && typeof this._currentStream.pause == "function") this._currentStream.pause(); this.emit("pause"); }; CombinedStream$1.prototype.resume = function() { if (!this._released) { this._released = true; this.writable = true; this._getNext(); } if (this.pauseStreams && this._currentStream && typeof this._currentStream.resume == "function") this._currentStream.resume(); this.emit("resume"); }; CombinedStream$1.prototype.end = function() { this._reset(); this.emit("end"); }; CombinedStream$1.prototype.destroy = function() { this._reset(); this.emit("close"); }; CombinedStream$1.prototype._reset = function() { this.writable = false; this._streams = []; this._currentStream = null; }; CombinedStream$1.prototype._checkDataSize = function() { this._updateDataSize(); if (this.dataSize <= this.maxDataSize) { return; } var message = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded."; this._emitError(new Error(message)); }; CombinedStream$1.prototype._updateDataSize = function() { this.dataSize = 0; var self2 = this; this._streams.forEach(function(stream2) { if (!stream2.dataSize) { return; } self2.dataSize += stream2.dataSize; }); if (this._currentStream && this._currentStream.dataSize) { this.dataSize += this._currentStream.dataSize; } }; CombinedStream$1.prototype._emitError = function(err) { this._reset(); this.emit("error", err); }; var mimeTypes = {}; const require$$0 = { "application/1d-interleaved-parityfec": { source: "iana" }, "application/3gpdash-qoe-report+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/3gpp-ims+xml": { source: "iana", compressible: true }, "application/3gpphal+json": { source: "iana", compressible: true }, "application/3gpphalforms+json": { source: "iana", compressible: true }, "application/a2l": { source: "iana" }, "application/ace+cbor": { source: "iana" }, "application/activemessage": { source: "iana" }, "application/activity+json": { source: "iana", compressible: true }, "application/alto-costmap+json": { source: "iana", compressible: true }, "application/alto-costmapfilter+json": { source: "iana", compressible: true }, "application/alto-directory+json": { source: "iana", compressible: true }, "application/alto-endpointcost+json": { source: "iana", compressible: true }, "application/alto-endpointcostparams+json": { source: "iana", compressible: true }, "application/alto-endpointprop+json": { source: "iana", compressible: true }, "application/alto-endpointpropparams+json": { source: "iana", compressible: true }, "application/alto-error+json": { source: "iana", compressible: true }, "application/alto-networkmap+json": { source: "iana", compressible: true }, "application/alto-networkmapfilter+json": { source: "iana", compressible: true }, "application/alto-updatestreamcontrol+json": { source: "iana", compressible: true }, "application/alto-updatestreamparams+json": { source: "iana", compressible: true }, "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: true, extensions: [ "atom" ] }, "application/atomcat+xml": { source: "iana", compressible: true, extensions: [ "atomcat" ] }, "application/atomdeleted+xml": { source: "iana", compressible: true, extensions: [ "atomdeleted" ] }, "application/atomicmail": { source: "iana" }, "application/atomsvc+xml": { source: "iana", compressible: true, extensions: [ "atomsvc" ] }, "application/atsc-dwd+xml": { source: "iana", compressible: true, extensions: [ "dwd" ] }, "application/atsc-dynamic-event-message": { source: "iana" }, "application/atsc-held+xml": { source: "iana", compressible: true, extensions: [ "held" ] }, "application/atsc-rdt+json": { source: "iana", compressible: true }, "application/atsc-rsat+xml": { source: "iana", compressible: true, extensions: [ "rsat" ] }, "application/atxml": { source: "iana" }, "application/auth-policy+xml": { source: "iana", compressible: true }, "application/bacnet-xdd+zip": { source: "iana", compressible: false }, "application/batch-smtp": { source: "iana" }, "application/bdoc": { compressible: false, extensions: [ "bdoc" ] }, "application/beep+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/calendar+json": { source: "iana", compressible: true }, "application/calendar+xml": { source: "iana", compressible: true, extensions: [ "xcs" ] }, "application/call-completion": { source: "iana" }, "application/cals-1840": { source: "iana" }, "application/captive+json": { source: "iana", compressible: true }, "application/cbor": { source: "iana" }, "application/cbor-seq": { source: "iana" }, "application/cccex": { source: "iana" }, "application/ccmp+xml": { source: "iana", compressible: true }, "application/ccxml+xml": { source: "iana", compressible: true, extensions: [ "ccxml" ] }, "application/cdfx+xml": { source: "iana", compressible: true, 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: true }, "application/cellml+xml": { source: "iana", compressible: true }, "application/cfw": { source: "iana" }, "application/city+json": { source: "iana", compressible: true }, "application/clr": { source: "iana" }, "application/clue+xml": { source: "iana", compressible: true }, "application/clue_info+xml": { source: "iana", compressible: true }, "application/cms": { source: "iana" }, "application/cnrp+xml": { source: "iana", compressible: true }, "application/coap-group+json": { source: "iana", compressible: true }, "application/coap-payload": { source: "iana" }, "application/commonground": { source: "iana" }, "application/conference-info+xml": { source: "iana", compressible: true }, "application/cose": { source: "iana" }, "application/cose-key": { source: "iana" }, "application/cose-key-set": { source: "iana" }, "application/cpl+xml": { source: "iana", compressible: true, extensions: [ "cpl" ] }, "application/csrattrs": { source: "iana" }, "application/csta+xml": { source: "iana", compressible: true }, "application/cstadata+xml": { source: "iana", compressible: true }, "application/csvm+json": { source: "iana", compressible: true }, "application/cu-seeme": { source: "apache", extensions: [ "cu" ] }, "application/cwt": { source: "iana" }, "application/cybercash": { source: "iana" }, "application/dart": { compressible: true }, "application/dash+xml": { source: "iana", compressible: true, extensions: [ "mpd" ] }, "application/dash-patch+xml": { source: "iana", compressible: true, extensions: [ "mpp" ] }, "application/dashdelta": { source: "iana" }, "application/davmount+xml": { source: "iana", compressible: true, extensions: [ "davmount" ] }, "application/dca-rft": { source: "iana" }, "application/dcd": { source: "iana" }, "application/dec-dx": { source: "iana" }, "application/dialog-info+xml": { source: "iana", compressible: true }, "application/dicom": { source: "iana" }, "application/dicom+json": { source: "iana", compressible: true }, "application/dicom+xml": { source: "iana", compressible: true }, "application/dii": { source: "iana" }, "application/dit": { source: "iana" }, "application/dns": { source: "iana" }, "application/dns+json": { source: "iana", compressible: true }, "application/dns-message": { source: "iana" }, "application/docbook+xml": { source: "apache", compressible: true, extensions: [ "dbk" ] }, "application/dots+cbor": { source: "iana" }, "application/dskpp+xml": { source: "iana", compressible: true }, "application/dssc+der": { source: "iana", extensions: [ "dssc" ] }, "application/dssc+xml": { source: "iana", compressible: true, extensions: [ "xdssc" ] }, "application/dvcs": { source: "iana" }, "application/ecmascript": { source: "iana", compressible: true, extensions: [ "es", "ecma" ] }, "application/edi-consent": { source: "iana" }, "application/edi-x12": { source: "iana", compressible: false }, "application/edifact": { source: "iana", compressible: false }, "application/efi": { source: "iana" }, "application/elm+json": { source: "iana", charset: "UTF-8", compressible: true }, "application/elm+xml": { source: "iana", compressible: true }, "application/emergencycalldata.cap+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/emergencycalldata.comment+xml": { source: "iana", compressible: true }, "application/emergencycalldata.control+xml": { source: "iana", compressible: true }, "application/emergencycalldata.deviceinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.ecall.msd": { source: "iana" }, "application/emergencycalldata.providerinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.serviceinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.subscriberinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.veds+xml": { source: "iana", compressible: true }, "application/emma+xml": { source: "iana", compressible: true, extensions: [ "emma" ] }, "application/emotionml+xml": { source: "iana", compressible: true, extensions: [ "emotionml" ] }, "application/encaprtp": { source: "iana" }, "application/epp+xml": { source: "iana", compressible: true }, "application/epub+zip": { source: "iana", compressible: false, extensions: [ "epub" ] }, "application/eshop": { source: "iana" }, "application/exi": { source: "iana", extensions: [ "exi" ] }, "application/expect-ct-report+json": { source: "iana", compressible: true }, "application/express": { source: "iana", extensions: [ "exp" ] }, "application/fastinfoset": { source: "iana" }, "application/fastsoap": { source: "iana" }, "application/fdt+xml": { source: "iana", compressible: true, extensions: [ "fdt" ] }, "application/fhir+json": { source: "iana", charset: "UTF-8", compressible: true }, "application/fhir+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/fido.trusted-apps+json": { compressible: true }, "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: false }, "application/framework-attributes+xml": { source: "iana", compressible: true }, "application/geo+json": { source: "iana", compressible: true, extensions: [ "geojson" ] }, "application/geo+json-seq": { source: "iana" }, "application/geopackage+sqlite3": { source: "iana" }, "application/geoxacml+xml": { source: "iana", compressible: true }, "application/gltf-buffer": { source: "iana" }, "application/gml+xml": { source: "iana", compressible: true, extensions: [ "gml" ] }, "application/gpx+xml": { source: "apache", compressible: true, extensions: [ "gpx" ] }, "application/gxf": { source: "apache", extensions: [ "gxf" ] }, "application/gzip": { source: "iana", compressible: false, extensions: [ "gz" ] }, "application/h224": { source: "iana" }, "application/held+xml": { source: "iana", compressible: true }, "application/hjson": { extensions: [ "hjson" ] }, "application/http": { source: "iana" }, "application/hyperstudio": { source: "iana", extensions: [ "stk" ] }, "application/ibe-key-request+xml": { source: "iana", compressible: true }, "application/ibe-pkg-reply+xml": { source: "iana", compressible: true }, "application/ibe-pp-data": { source: "iana" }, "application/iges": { source: "iana" }, "application/im-iscomposing+xml": { source: "iana", charset: "UTF-8", compressible: true }, "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: true, 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: true, extensions: [ "its" ] }, "application/java-archive": { source: "apache", compressible: false, extensions: [ "jar", "war", "ear" ] }, "application/java-serialized-object": { source: "apache", compressible: false, extensions: [ "ser" ] }, "application/java-vm": { source: "apache", compressible: false, extensions: [ "class" ] }, "application/javascript": { source: "iana", charset: "UTF-8", compressible: true, extensions: [ "js", "mjs" ] }, "application/jf2feed+json": { source: "iana", compressible: true }, "application/jose": { source: "iana" }, "application/jose+json": { source: "iana", compressible: true }, "application/jrd+json": { source: "iana", compressible: true }, "application/jscalendar+json": { source: "iana", compressible: true }, "application/json": { source: "iana", charset: "UTF-8", compressible: true, extensions: [ "json", "map" ] }, "application/json-patch+json": { source: "iana", compressible: true }, "application/json-seq": { source: "iana" }, "application/json5": { extensions: [ "json5" ] }, "application/jsonml+json": { source: "apache", compressible: true, extensions: [ "jsonml" ] }, "application/jwk+json": { source: "iana", compressible: true }, "application/jwk-set+json": { source: "iana", compressible: true }, "application/jwt": { source: "iana" }, "application/kpml-request+xml": { source: "iana", compressible: true }, "application/kpml-response+xml": { source: "iana", compressible: true }, "application/ld+json": { source: "iana", compressible: true, extensions: [ "jsonld" ] }, "application/lgr+xml": { source: "iana", compressible: true, extensions: [ "lgr" ] }, "application/link-format": { source: "iana" }, "application/load-control+xml": { source: "iana", compressible: true }, "application/lost+xml": { source: "iana", compressible: true, extensions: [ "lostxml" ] }, "application/lostsync+xml": { source: "iana", compressible: true }, "application/lpf+zip": { source: "iana", compressible: false }, "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: true, extensions: [ "mads" ] }, "application/manifest+json": { source: "iana", charset: "UTF-8", compressible: true, extensions: [ "webmanifest" ] }, "application/marc": { source: "iana", extensions: [ "mrc" ] }, "application/marcxml+xml": { source: "iana", compressible: true, extensions: [ "mrcx" ] }, "application/mathematica": { source: "iana", extensions: [ "ma", "nb", "mb" ] }, "application/mathml+xml": { source: "iana", compressible: true, extensions: [ "mathml" ] }, "application/mathml-content+xml": { source: "iana", compressible: true }, "application/mathml-presentation+xml": { source: "iana", compressible: true }, "application/mbms-associated-procedure-description+xml": { source: "iana", compressible: true }, "application/mbms-deregister+xml": { source: "iana", compressible: true }, "application/mbms-envelope+xml": { source: "iana", compressible: true }, "application/mbms-msk+xml": { source: "iana", compressible: true }, "application/mbms-msk-response+xml": { source: "iana", compressible: true }, "application/mbms-protection-description+xml": { source: "iana", compressible: true }, "application/mbms-reception-report+xml": { source: "iana", compressible: true }, "application/mbms-register+xml": { source: "iana", compressible: true }, "application/mbms-register-response+xml": { source: "iana", compressible: true }, "application/mbms-schedule+xml": { source: "iana", compressible: true }, "application/mbms-user-service-description+xml": { source: "iana", compressible: true }, "application/mbox": { source: "iana", extensions: [ "mbox" ] }, "application/media-policy-dataset+xml": { source: "iana", compressible: true, extensions: [ "mpf" ] }, "application/media_control+xml": { source: "iana", compressible: true }, "application/mediaservercontrol+xml": { source: "iana", compressible: true, extensions: [ "mscml" ] }, "application/merge-patch+json": { source: "iana", compressible: true }, "application/metalink+xml": { source: "apache", compressible: true, extensions: [ "metalink" ] }, "application/metalink4+xml": { source: "iana", compressible: true, extensions: [ "meta4" ] }, "application/mets+xml": { source: "iana", compressible: true, 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: true, extensions: [ "maei" ] }, "application/mmt-usd+xml": { source: "iana", compressible: true, extensions: [ "musd" ] }, "application/mods+xml": { source: "iana", compressible: true, 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: true }, "application/mrb-publish+xml": { source: "iana", compressible: true }, "application/msc-ivr+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/msc-mixer+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/msword": { source: "iana", compressible: false, extensions: [ "doc", "dot" ] }, "application/mud+json": { source: "iana", compressible: true }, "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: true }, "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: false, 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: true }, "application/odx": { source: "iana" }, "application/oebps-package+xml": { source: "iana", compressible: true, extensions: [ "opf" ] }, "application/ogg": { source: "iana", compressible: false, extensions: [ "ogx" ] }, "application/omdoc+xml": { source: "apache", compressible: true, extensions: [ "omdoc" ] }, "application/onenote": { source: "apache", extensions: [ "onetoc", "onetoc2", "onetmp", "onepkg" ] }, "application/opc-nodeset+xml": { source: "iana", compressible: true }, "application/oscore": { source: "iana" }, "application/oxps": { source: "iana", extensions: [ "oxps" ] }, "application/p21": { source: "iana" }, "application/p21+zip": { source: "iana", compressible: false }, "application/p2p-overlay+xml": { source: "iana", compressible: true, extensions: [ "relo" ] }, "application/parityfec": { source: "iana" }, "application/passport": { source: "iana" }, "application/patch-ops-error+xml": { source: "iana", compressible: true, extensions: [ "xer" ] }, "application/pdf": { source: "iana", compressible: false, extensions: [ "pdf" ] }, "application/pdx": { source: "iana" }, "application/pem-certificate-chain": { source: "iana" }, "application/pgp-encrypted": { source: "iana", compressible: false, 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: true }, "application/pidf-diff+xml": { source: "iana", charset: "UTF-8", compressible: true }, "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: true, extensions: [ "pls" ] }, "application/poc-settings+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/postscript": { source: "iana", compressible: true, extensions: [ "ai", "eps", "ps" ] }, "application/ppsp-tracker+json": { source: "iana", compressible: true }, "application/problem+json": { source: "iana", compressible: true }, "application/problem+xml": { source: "iana", compressible: true }, "application/provenance+xml": { source: "iana", compressible: true, 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: false }, "application/prs.nprend": { source: "iana" }, "application/prs.plucker": { source: "iana" }, "application/prs.rdf-xml-crypt": { source: "iana" }, "application/prs.xsf+xml": { source: "iana", compressible: true }, "application/pskc+xml": { source: "iana", compressible: true, extensions: [ "pskcxml" ] }, "application/pvd+json": { source: "iana", compressible: true }, "application/qsig": { source: "iana" }, "application/raml+yaml": { compressible: true, extensions: [ "raml" ] }, "application/raptorfec": { source: "iana" }, "application/rdap+json": { source: "iana", compressible: true }, "application/rdf+xml": { source: "iana", compressible: true, extensions: [ "rdf", "owl" ] }, "application/reginfo+xml": { source: "iana", compressible: true, extensions: [ "rif" ] }, "application/relax-ng-compact-syntax": { source: "iana", extensions: [ "rnc" ] }, "application/remote-printing": { source: "iana" }, "application/reputon+json": { source: "iana", compressible: true }, "application/resource-lists+xml": { source: "iana", compressible: true, extensions: [ "rl" ] }, "application/resource-lists-diff+xml": { source: "iana", compressible: true, extensions: [ "rld" ] }, "application/rfc+xml": { source: "iana", compressible: true }, "application/riscos": { source: "iana" }, "application/rlmi+xml": { source: "iana", compressible: true }, "application/rls-services+xml": { source: "iana", compressible: true, extensions: [ "rs" ] }, "application/route-apd+xml": { source: "iana", compressible: true, extensions: [ "rapd" ] }, "application/route-s-tsid+xml": { source: "iana", compressible: true, extensions: [ "sls" ] }, "application/route-usd+xml": { source: "iana", compressible: true, 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: true, extensions: [ "rsd" ] }, "application/rss+xml": { source: "apache", compressible: true, extensions: [ "rss" ] }, "application/rtf": { source: "iana", compressible: true, extensions: [ "rtf" ] }, "application/rtploopback": { source: "iana" }, "application/rtx": { source: "iana" }, "application/samlassertion+xml": { source: "iana", compressible: true }, "application/samlmetadata+xml": { source: "iana", compressible: true }, "application/sarif+json": { source: "iana", compressible: true }, "application/sarif-external-properties+json": { source: "iana", compressible: true }, "application/sbe": { source: "iana" }, "application/sbml+xml": { source: "iana", compressible: true, extensions: [ "sbml" ] }, "application/scaip+xml": { source: "iana", compressible: true }, "application/scim+json": { source: "iana", compressible: true }, "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: true }, "application/senml+xml": { source: "iana", compressible: true, extensions: [ "senmlx" ] }, "application/senml-etch+cbor": { source: "iana" }, "application/senml-etch+json": { source: "iana", compressible: true }, "application/senml-exi": { source: "iana" }, "application/sensml+cbor": { source: "iana" }, "application/sensml+json": { source: "iana", compressible: true }, "application/sensml+xml": { source: "iana", compressible: true, extensions: [ "sensmlx" ] }, "application/sensml-exi": { source: "iana" }, "application/sep+xml": { source: "iana", compressible: true }, "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: true, extensions: [ "shf" ] }, "application/sieve": { source: "iana", extensions: [ "siv", "sieve" ] }, "application/simple-filter+xml": { source: "iana", compressible: true }, "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: true, extensions: [ "smi", "smil" ] }, "application/smpte336m": { source: "iana" }, "application/soap+fastinfoset": { source: "iana" }, "application/soap+xml": { source: "iana", compressible: true }, "application/sparql-query": { source: "iana", extensions: [ "rq" ] }, "application/sparql-results+xml": { source: "iana", compressible: true, extensions: [ "srx" ] }, "application/spdx+json": { source: "iana", compressible: true }, "application/spirits-event+xml": { source: "iana", compressible: true }, "application/sql": { source: "iana" }, "application/srgs": { source: "iana", extensions: [ "gram" ] }, "application/srgs+xml": { source: "iana", compressible: true, extensions: [ "grxml" ] }, "application/sru+xml": { source: "iana", compressible: true, extensions: [ "sru" ] }, "application/ssdl+xml": { source: "apache", compressible: true, extensions: [ "ssdl" ] }, "application/ssml+xml": { source: "iana", compressible: true, extensions: [ "ssml" ] }, "application/stix+json": { source: "iana", compressible: true }, "application/swid+xml": { source: "iana", compressible: true, 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: true }, "application/taxii+json": { source: "iana", compressible: true }, "application/td+json": { source: "iana", compressible: true }, "application/tei+xml": { source: "iana", compressible: true, extensions: [ "tei", "teicorpus" ] }, "application/tetra_isi": { source: "iana" }, "application/thraud+xml": { source: "iana", compressible: true, 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: true }, "application/tnauthlist": { source: "iana" }, "application/token-introspection+jwt": { source: "iana" }, "application/toml": { compressible: true, extensions: [ "toml" ] }, "application/trickle-ice-sdpfrag": { source: "iana" }, "application/trig": { source: "iana", extensions: [ "trig" ] }, "application/ttml+xml": { source: "iana", compressible: true, extensions: [ "ttml" ] }, "application/tve-trigger": { source: "iana" }, "application/tzif": { source: "iana" }, "application/tzif-leap": { source: "iana" }, "application/ubjson": { compressible: false, extensions: [ "ubj" ] }, "application/ulpfec": { source: "iana" }, "application/urc-grpsheet+xml": { source: "iana", compressible: true }, "application/urc-ressheet+xml": { source: "iana", compressible: true, extensions: [ "rsheet" ] }, "application/urc-targetdesc+xml": { source: "iana", compressible: true, extensions: [ "td" ] }, "application/urc-uisocketdesc+xml": { source: "iana", compressible: true }, "application/vcard+json": { source: "iana", compressible: true }, "application/vcard+xml": { source: "iana", compressible: true }, "application/vemmi": { source: "iana" }, "application/vividence.scriptfile": { source: "apache" }, "application/vnd.1000minds.decision-model+xml": { source: "iana", compressible: true, extensions: [ "1km" ] }, "application/vnd.3gpp-prose+xml": { source: "iana", compressible: true }, "application/vnd.3gpp-prose-pc3ch+xml": { source: "iana", compressible: true }, "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: true }, "application/vnd.3gpp.bsf+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.gmop+xml": { source: "iana", compressible: true }, "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: true }, "application/vnd.3gpp.mcdata-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-payload": { source: "iana" }, "application/vnd.3gpp.mcdata-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-signalling": { source: "iana" }, "application/vnd.3gpp.mcdata-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-floor-request+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-location-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-signed+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-ue-init-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-affiliation-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-location-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-transmission-request+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mid-call+xml": { source: "iana", compressible: true }, "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: true }, "application/vnd.3gpp.srvcc-ext+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.srvcc-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.state-and-event-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.ussd+xml": { source: "iana", compressible: true }, "application/vnd.3gpp2.bcmcsinfo+xml": { source: "iana", compressible: true }, "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: false, 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: true, 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: true }, "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: true }, "application/vnd.android.ota": { source: "iana" }, "application/vnd.android.package-archive": { source: "apache", compressible: false, 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: true }, "application/vnd.aplextor.warrp+json": { source: "iana", compressible: true }, "application/vnd.apothekende.reservation+json": { source: "iana", compressible: true }, "application/vnd.apple.installer+xml": { source: "iana", compressible: true, 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: false, extensions: [ "pkpass" ] }, "application/vnd.arastra.swi": { source: "iana" }, "application/vnd.aristanetworks.swi": { source: "iana", extensions: [ "swi" ] }, "application/vnd.artisan+json": { source: "iana", compressible: true }, "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: true }, "application/vnd.avistar+xml": { source: "iana", compressible: true }, "application/vnd.balsamiq.bmml+xml": { source: "iana", compressible: true, 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: true }, "application/vnd.bekitzur-stech+json": { source: "iana", compressible: true }, "application/vnd.bint.med-content": { source: "iana" }, "application/vnd.biopax.rdf+xml": { source: "iana", compressible: true }, "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: true }, "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: true }, "application/vnd.cendio.thinlinc.clientconf": { source: "iana" }, "application/vnd.century-systems.tcp_stream": { source: "iana" }, "application/vnd.chemdraw+xml": { source: "iana", compressible: true, 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: true, 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: true }, "application/vnd.collection.doc+json": { source: "iana", compressible: true }, "application/vnd.collection.next+json": { source: "iana", compressible: true }, "application/vnd.comicbook+zip": { source: "iana", compressible: false }, "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: true }, "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: true, extensions: [ "wbs" ] }, "application/vnd.cryptii.pipe+json": { source: "iana", compressible: true }, "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: true }, "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: true }, "application/vnd.cybank": { source: "iana" }, "application/vnd.cyclonedx+json": { source: "iana", compressible: true }, "application/vnd.cyclonedx+xml": { source: "iana", compressible: true }, "application/vnd.d2l.coursepackage1p0+zip": { source: "iana", compressible: false }, "application/vnd.d3m-dataset": { source: "iana" }, "application/vnd.d3m-problem": { source: "iana" }, "application/vnd.dart": { source: "iana", compressible: true, extensions: [ "dart" ] }, "application/vnd.data-vision.rdz": { source: "iana", extensions: [ "rdz" ] }, "application/vnd.datapackage+json": { source: "iana", compressible: true }, "application/vnd.dataresource+json": { source: "iana", compressible: true }, "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: true, 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: true }, "application/vnd.dna": { source: "iana", extensions: [ "dna" ] }, "application/vnd.document+json": { source: "iana", compressible: true }, "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: true }, "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: true }, "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: true }, "application/vnd.dvb.notif-container+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-generic+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-msglist+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-registration-request+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-registration-response+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-init+xml": { source: "iana", compressible: true }, "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: true }, "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: true }, "application/vnd.enliven": { source: "iana", extensions: [ "nml" ] }, "application/vnd.enphase.envoy": { source: "iana" }, "application/vnd.eprints.data+xml": { source: "iana", compressible: true }, "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: false }, "application/vnd.eszigno3+xml": { source: "iana", compressible: true, extensions: [ "es3", "et3" ] }, "application/vnd.etsi.aoc+xml": { source: "iana", compressible: true }, "application/vnd.etsi.asic-e+zip": { source: "iana", compressible: false }, "application/vnd.etsi.asic-s+zip": { source: "iana", compressible: false }, "application/vnd.etsi.cug+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvcommand+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvdiscovery+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvprofile+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-bc+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-cod+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-npvr+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvservice+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsync+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvueprofile+xml": { source: "iana", compressible: true }, "application/vnd.etsi.mcid+xml": { source: "iana", compressible: true }, "application/vnd.etsi.mheg5": { source: "iana" }, "application/vnd.etsi.overload-control-policy-dataset+xml": { source: "iana", compressible: true }, "application/vnd.etsi.pstn+xml": { source: "iana", compressible: true }, "application/vnd.etsi.sci+xml": { source: "iana", compressible: true }, "application/vnd.etsi.simservs+xml": { source: "iana", compressible: true }, "application/vnd.etsi.timestamp-token": { source: "iana" }, "application/vnd.etsi.tsl+xml": { source: "iana", compressible: true }, "application/vnd.etsi.tsl.der": { source: "iana" }, "application/vnd.eu.kasparian.car+json": { source: "iana", compressible: true }, "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: false }, "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: false }, "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: false }, "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: true }, "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: true }, "application/vnd.fuzzysheet": { source: "iana", extensions: [ "fzs" ] }, "application/vnd.genomatix.tuxedo": { source: "iana", extensions: [ "txd" ] }, "application/vnd.gentics.grd+json": { source: "iana", compressible: true }, "application/vnd.geo+json": { source: "iana", compressible: true }, "application/vnd.geocube+xml": { source: "iana", compressible: true }, "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: false, extensions: [ "gdoc" ] }, "application/vnd.google-apps.presentation": { compressible: false, extensions: [ "gslides" ] }, "application/vnd.google-apps.spreadsheet": { compressible: false, extensions: [ "gsheet" ] }, "application/vnd.google-earth.kml+xml": { source: "iana", compressible: true, extensions: [ "kml" ] }, "application/vnd.google-earth.kmz": { source: "iana", compressible: false, extensions: [ "kmz" ] }, "application/vnd.gov.sk.e-form+xml": { source: "iana", compressible: true }, "application/vnd.gov.sk.e-form+zip": { source: "iana", compressible: false }, "application/vnd.gov.sk.xmldatacontainer+xml": { source: "iana", compressible: true }, "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: true }, "application/vnd.hal+xml": { source: "iana", compressible: true, extensions: [ "hal" ] }, "application/vnd.handheld-entertainment+xml": { source: "iana", compressible: true, extensions: [ "zmm" ] }, "application/vnd.hbci": { source: "iana", extensions: [ "hbci" ] }, "application/vnd.hc+json": { source: "iana", compressible: true }, "application/vnd.hcl-bireports": { source: "iana" }, "application/vnd.hdt": { source: "iana" }, "application/vnd.heroku+json": { source: "iana", compressible: true }, "application/vnd.hhe.lesson-player": { source: "iana", extensions: [ "les" ] }, "application/vnd.hl7cda+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.hl7v2+xml": { source: "iana", charset: "UTF-8", compressible: true }, "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: true }, "application/vnd.hyper-item+json": { source: "iana", compressible: true }, "application/vnd.hyperdrive+json": { source: "iana", compressible: true }, "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: false }, "application/vnd.imagemeter.image+zip": { source: "iana", compressible: false }, "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: true }, "application/vnd.ims.lti.v2.toolconsumerprofile+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolproxy+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolproxy.id+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolsettings+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolsettings.simple+json": { source: "iana", compressible: true }, "application/vnd.informedcontrol.rms+xml": { source: "iana", compressible: true }, "application/vnd.informix-visionary": { source: "iana" }, "application/vnd.infotech.project": { source: "iana" }, "application/vnd.infotech.project+xml": { source: "iana", compressible: true }, "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: true }, "application/vnd.iptc.g2.conceptitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.knowledgeitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.newsitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.newsmessage+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.packageitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.planningitem+xml": { source: "iana", compressible: true }, "application/vnd.ipunplugged.rcprofile": { source: "iana", extensions: [ "rcprofile" ] }, "application/vnd.irepository.package+xml": { source: "iana", compressible: true, 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: false }, "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: true }, "application/vnd.las.las+xml": { source: "iana", compressible: true, extensions: [ "lasxml" ] }, "application/vnd.laszip": { source: "iana" }, "application/vnd.leap+json": { source: "iana", compressible: true }, "application/vnd.liberty-request+xml": { source: "iana", compressible: true }, "application/vnd.llamagraphics.life-balance.desktop": { source: "iana", extensions: [ "lbd" ] }, "application/vnd.llamagraphics.life-balance.exchange+xml": { source: "iana", compressible: true, extensions: [ "lbe" ] }, "application/vnd.logipipe.circuit+zip": { source: "iana", compressible: false }, "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: true }, "application/vnd.marlin.drm.conftoken+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.license+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.mdcf": { source: "iana" }, "application/vnd.mason+json": { source: "iana", compressible: true }, "application/vnd.maxar.archive.3tz+zip": { source: "iana", compressible: false }, "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: true }, "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: true }, "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: true, 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: false, 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: true, 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: true }, "application/vnd.ms-officetheme": { source: "iana", extensions: [ "thmx" ] }, "application/vnd.ms-opentype": { source: "apache", compressible: true }, "application/vnd.ms-outlook": { compressible: false, 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: true }, "application/vnd.ms-powerpoint": { source: "iana", compressible: false, 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: true }, "application/vnd.ms-printing.printticket+xml": { source: "apache", compressible: true }, "application/vnd.ms-printschematicket+xml": { source: "iana", compressible: true }, "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: false, 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: true }, "application/vnd.ncd.control": { source: "iana" }, "application/vnd.ncd.reference": { source: "iana" }, "application/vnd.nearst.inv+json": { source: "iana", compressible: true }, "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: true }, "application/vnd.nokia.iptv.config+xml": { source: "iana", compressible: true }, "application/vnd.nokia.isds-radio-presets": { source: "iana" }, "application/vnd.nokia.landmark+wbxml": { source: "iana" }, "application/vnd.nokia.landmark+xml": { source: "iana", compressible: true }, "application/vnd.nokia.landmarkcollection+xml": { source: "iana", compressible: true }, "application/vnd.nokia.n-gage.ac+xml": { source: "iana", compressible: true, 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: true }, "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: false, 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: false, extensions: [ "odp" ] }, "application/vnd.oasis.opendocument.presentation-template": { source: "iana", extensions: [ "otp" ] }, "application/vnd.oasis.opendocument.spreadsheet": { source: "iana", compressible: false, extensions: [ "ods" ] }, "application/vnd.oasis.opendocument.spreadsheet-template": { source: "iana", extensions: [ "ots" ] }, "application/vnd.oasis.opendocument.text": { source: "iana", compressible: false, 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: true }, "application/vnd.oftn.l10n+json": { source: "iana", compressible: true }, "application/vnd.oipf.contentaccessdownload+xml": { source: "iana", compressible: true }, "application/vnd.oipf.contentaccessstreaming+xml": { source: "iana", compressible: true }, "application/vnd.oipf.cspg-hexbinary": { source: "iana" }, "application/vnd.oipf.dae.svg+xml": { source: "iana", compressible: true }, "application/vnd.oipf.dae.xhtml+xml": { source: "iana", compressible: true }, "application/vnd.oipf.mippvcontrolmessage+xml": { source: "iana", compressible: true }, "application/vnd.oipf.pae.gem": { source: "iana" }, "application/vnd.oipf.spdiscovery+xml": { source: "iana", compressible: true }, "application/vnd.oipf.spdlist+xml": { source: "iana", compressible: true }, "application/vnd.oipf.ueprofile+xml": { source: "iana", compressible: true }, "application/vnd.oipf.userprofile+xml": { source: "iana", compressible: true }, "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: true }, "application/vnd.oma.bcast.drm-trigger+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.imd+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.ltkm": { source: "iana" }, "application/vnd.oma.bcast.notification+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.provisioningtrigger": { source: "iana" }, "application/vnd.oma.bcast.sgboot": { source: "iana" }, "application/vnd.oma.bcast.sgdd+xml": { source: "iana", compressible: true }, "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: true }, "application/vnd.oma.bcast.sprov+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.stkm": { source: "iana" }, "application/vnd.oma.cab-address-book+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-feature-handler+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-pcc+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-subs-invite+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-user-prefs+xml": { source: "iana", compressible: true }, "application/vnd.oma.dcd": { source: "iana" }, "application/vnd.oma.dcdc": { source: "iana" }, "application/vnd.oma.dd2+xml": { source: "iana", compressible: true, extensions: [ "dd2" ] }, "application/vnd.oma.drm.risd+xml": { source: "iana", compressible: true }, "application/vnd.oma.group-usage-list+xml": { source: "iana", compressible: true }, "application/vnd.oma.lwm2m+cbor": { source: "iana" }, "application/vnd.oma.lwm2m+json": { source: "iana", compressible: true }, "application/vnd.oma.lwm2m+tlv": { source: "iana" }, "application/vnd.oma.pal+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.detailed-progress-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.final-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.groups+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.invocation-descriptor+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.optimized-progress-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.push": { source: "iana" }, "application/vnd.oma.scidm.messages+xml": { source: "iana", compressible: true }, "application/vnd.oma.xcap-directory+xml": { source: "iana", compressible: true }, "application/vnd.omads-email+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omads-file+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omads-folder+xml": { source: "iana", charset: "UTF-8", compressible: true }, "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: true, 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: true, extensions: [ "osm" ] }, "application/vnd.opentimestamps.ots": { source: "iana" }, "application/vnd.openxmlformats-officedocument.custom-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawing+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.extended-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.presentation": { source: "iana", compressible: false, extensions: [ "pptx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slide": { source: "iana", extensions: [ "sldx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { source: "iana", extensions: [ "ppsx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.template": { source: "iana", extensions: [ "potx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { source: "iana", compressible: false, extensions: [ "xlsx" ] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { source: "iana", extensions: [ "xltx" ] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.theme+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.themeoverride+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.vmldrawing": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { source: "iana", compressible: false, extensions: [ "docx" ] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { source: "iana", extensions: [ "dotx" ] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.core-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.relationships+xml": { source: "iana", compressible: true }, "application/vnd.oracle.resource+json": { source: "iana", compressible: true }, "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: true }, "application/vnd.oxli.countgraph": { source: "iana" }, "application/vnd.pagerduty+json": { source: "iana", compressible: true }, "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: true }, "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: true }, "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: true }, "application/vnd.radisys.msml+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-conf+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-conn+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-dialog+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-stream+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-conf+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-base+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-fax-detect+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-group+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-speech+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-transform+xml": { source: "iana", compressible: true }, "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: true, extensions: [ "musicxml" ] }, "application/vnd.renlearn.rlprint": { source: "iana" }, "application/vnd.resilient.logic": { source: "iana" }, "application/vnd.restful+json": { source: "iana", compressible: true }, "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: true, 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: true }, "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: true }, "application/vnd.shopkick+json": { source: "iana", compressible: true }, "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: true }, "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: true, extensions: [ "fo" ] }, "application/vnd.software602.filler.form-xml-zip": { source: "iana" }, "application/vnd.solent.sdkm+xml": { source: "iana", compressible: true, 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: true, 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: true }, "application/vnd.syft+json": { source: "iana", compressible: true }, "application/vnd.symbian.install": { source: "apache", extensions: [ "sis", "sisx" ] }, "application/vnd.syncml+xml": { source: "iana", charset: "UTF-8", compressible: true, 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: true, 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: true, extensions: [ "ddf" ] }, "application/vnd.syncml.dmtnds+wbxml": { source: "iana" }, "application/vnd.syncml.dmtnds+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.syncml.ds.notification": { source: "iana" }, "application/vnd.tableschema+json": { source: "iana", compressible: true }, "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: true }, "application/vnd.tmd.mediaflex.api+xml": { source: "iana", compressible: true }, "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: true, 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: true }, "application/vnd.verimatrix.vcas": { source: "iana" }, "application/vnd.veritone.aion+json": { source: "iana", compressible: true }, "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: true }, "application/vnd.wv.ssp+xml": { source: "iana", compressible: true }, "application/vnd.xacml+json": { source: "iana", compressible: true }, "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: true }, "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: true, 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: true, extensions: [ "zaz" ] }, "application/voicexml+xml": { source: "iana", compressible: true, extensions: [ "vxml" ] }, "application/voucher-cms+json": { source: "iana", compressible: true }, "application/vq-rtcpxr": { source: "iana" }, "application/wasm": { source: "iana", compressible: true, extensions: [ "wasm" ] }, "application/watcherinfo+xml": { source: "iana", compressible: true, extensions: [ "wif" ] }, "application/webpush-options+json": { source: "iana", compressible: true }, "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: true, extensions: [ "wsdl" ] }, "application/wspolicy+xml": { source: "iana", compressible: true, extensions: [ "wspolicy" ] }, "application/x-7z-compressed": { source: "apache", compressible: false, 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: false, 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: false, extensions: [ "bdoc" ] }, "application/x-bittorrent": { source: "apache", extensions: [ "torrent" ] }, "application/x-blorb": { source: "apache", extensions: [ "blb", "blorb" ] }, "application/x-bzip": { source: "apache", compressible: false, extensions: [ "bz" ] }, "application/x-bzip2": { source: "apache", compressible: false, 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: false }, "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: true, extensions: [ "ncx" ] }, "application/x-dtbook+xml": { source: "apache", compressible: true, extensions: [ "dtb" ] }, "application/x-dtbresource+xml": { source: "apache", compressible: true, extensions: [ "res" ] }, "application/x-dvi": { source: "apache", compressible: false, 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: true, 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: false, extensions: [ "jnlp" ] }, "application/x-javascript": { compressible: true }, "application/x-keepass2": { extensions: [ "kdbx" ] }, "application/x-latex": { source: "apache", compressible: false, 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: false }, "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: true, 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: false, 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: false, 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: true, extensions: [ "sh" ] }, "application/x-shar": { source: "apache", extensions: [ "shar" ] }, "application/x-shockwave-flash": { source: "apache", compressible: false, extensions: [ "swf" ] }, "application/x-silverlight-app": { source: "apache", extensions: [ "xap" ] }, "application/x-sql": { source: "apache", extensions: [ "sql" ] }, "application/x-stuffit": { source: "apache", compressible: false, 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: true, 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: true, extensions: [ "hdd" ] }, "application/x-virtualbox-ova": { compressible: true, extensions: [ "ova" ] }, "application/x-virtualbox-ovf": { compressible: true, extensions: [ "ovf" ] }, "application/x-virtualbox-vbox": { compressible: true, extensions: [ "vbox" ] }, "application/x-virtualbox-vbox-extpack": { compressible: false, extensions: [ "vbox-extpack" ] }, "application/x-virtualbox-vdi": { compressible: true, extensions: [ "vdi" ] }, "application/x-virtualbox-vhd": { compressible: true, extensions: [ "vhd" ] }, "application/x-virtualbox-vmdk": { compressible: true, extensions: [ "vmdk" ] }, "application/x-wais-source": { source: "apache", extensions: [ "src" ] }, "application/x-web-app-manifest+json": { compressible: true, extensions: [ "webapp" ] }, "application/x-www-form-urlencoded": { source: "iana", compressible: true }, "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: true, extensions: [ "xlf" ] }, "application/x-xpinstall": { source: "apache", compressible: false, 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: true }, "application/xaml+xml": { source: "apache", compressible: true, extensions: [ "xaml" ] }, "application/xcap-att+xml": { source: "iana", compressible: true, extensions: [ "xav" ] }, "application/xcap-caps+xml": { source: "iana", compressible: true, extensions: [ "xca" ] }, "application/xcap-diff+xml": { source: "iana", compressible: true, extensions: [ "xdf" ] }, "application/xcap-el+xml": { source: "iana", compressible: true, extensions: [ "xel" ] }, "application/xcap-error+xml": { source: "iana", compressible: true }, "application/xcap-ns+xml": { source: "iana", compressible: true, extensions: [ "xns" ] }, "application/xcon-conference-info+xml": { source: "iana", compressible: true }, "application/xcon-conference-info-diff+xml": { source: "iana", compressible: true }, "application/xenc+xml": { source: "iana", compressible: true, extensions: [ "xenc" ] }, "application/xhtml+xml": { source: "iana", compressible: true, extensions: [ "xhtml", "xht" ] }, "application/xhtml-voice+xml": { source: "apache", compressible: true }, "application/xliff+xml": { source: "iana", compressible: true, extensions: [ "xlf" ] }, "application/xml": { source: "iana", compressible: true, extensions: [ "xml", "xsl", "xsd", "rng" ] }, "application/xml-dtd": { source: "iana", compressible: true, extensions: [ "dtd" ] }, "application/xml-external-parsed-entity": { source: "iana" }, "application/xml-patch+xml": { source: "iana", compressible: true }, "application/xmpp+xml": { source: "iana", compressible: true }, "application/xop+xml": { source: "iana", compressible: true, extensions: [ "xop" ] }, "application/xproc+xml": { source: "apache", compressible: true, extensions: [ "xpl" ] }, "application/xslt+xml": { source: "iana", compressible: true, extensions: [ "xsl", "xslt" ] }, "application/xspf+xml": { source: "apache", compressible: true, extensions: [ "xspf" ] }, "application/xv+xml": { source: "iana", compressible: true, extensions: [ "mxml", "xhvml", "xvml", "xvm" ] }, "application/yang": { source: "iana", extensions: [ "yang" ] }, "application/yang-data+json": { source: "iana", compressible: true }, "application/yang-data+xml": { source: "iana", compressible: true }, "application/yang-patch+json": { source: "iana", compressible: true }, "application/yang-patch+xml": { source: "iana", compressible: true }, "application/yin+xml": { source: "iana", compressible: true, extensions: [ "yin" ] }, "application/zip": { source: "iana", compressible: false, 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: false, 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: false, 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: false }, "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: false, extensions: [ "mp3" ] }, "audio/mp4": { source: "iana", compressible: false, extensions: [ "m4a", "mp4a" ] }, "audio/mp4a-latm": { source: "iana" }, "audio/mpa": { source: "iana" }, "audio/mpa-robust": { source: "iana" }, "audio/mpeg": { source: "iana", compressible: false, extensions: [ "mpga", "mp2", "mp2a", "mp3", "m2a", "m3a" ] }, "audio/mpeg4-generic": { source: "iana" }, "audio/musepack": { source: "apache" }, "audio/ogg": { source: "iana", compressible: false, 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: false }, "audio/vnd.sealedmedia.softseal.mpeg": { source: "iana" }, "audio/vnd.vmx.cvsd": { source: "iana" }, "audio/vnd.wave": { compressible: false }, "audio/vorbis": { source: "iana", compressible: false }, "audio/vorbis-config": { source: "iana" }, "audio/wav": { compressible: false, extensions: [ "wav" ] }, "audio/wave": { compressible: false, extensions: [ "wav" ] }, "audio/webm": { source: "apache", compressible: false, extensions: [ "weba" ] }, "audio/x-aac": { source: "apache", compressible: false, extensions: [ "aac" ] }, "audio/x-aiff": { source: "apache", extensions: [ "aif", "aiff", "aifc" ] }, "audio/x-caf": { source: "apache", compressible: false, 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: true, extensions: [ "otf" ] }, "font/sfnt": { source: "iana" }, "font/ttf": { source: "iana", compressible: true, extensions: [ "ttf" ] }, "font/woff": { source: "iana", extensions: [ "woff" ] }, "font/woff2": { source: "iana", extensions: [ "woff2" ] }, "image/aces": { source: "iana", extensions: [ "exr" ] }, "image/apng": { compressible: false, extensions: [ "apng" ] }, "image/avci": { source: "iana", extensions: [ "avci" ] }, "image/avcs": { source: "iana", extensions: [ "avcs" ] }, "image/avif": { source: "iana", compressible: false, extensions: [ "avif" ] }, "image/bmp": { source: "iana", compressible: true, 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: false, 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: false, extensions: [ "jp2", "jpg2" ] }, "image/jpeg": { source: "iana", compressible: false, extensions: [ "jpeg", "jpg", "jpe" ] }, "image/jph": { source: "iana", extensions: [ "jph" ] }, "image/jphc": { source: "iana", extensions: [ "jhc" ] }, "image/jpm": { source: "iana", compressible: false, extensions: [ "jpm" ] }, "image/jpx": { source: "iana", compressible: false, 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: false }, "image/png": { source: "iana", compressible: false, 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: true, extensions: [ "svg", "svgz" ] }, "image/t38": { source: "iana", extensions: [ "t38" ] }, "image/tiff": { source: "iana", compressible: false, extensions: [ "tif", "tiff" ] }, "image/tiff-fx": { source: "iana", extensions: [ "tfx" ] }, "image/vnd.adobe.photoshop": { source: "iana", compressible: true, 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: true, extensions: [ "ico" ] }, "image/vnd.mix": { source: "iana" }, "image/vnd.mozilla.apng": { source: "iana" }, "image/vnd.ms-dds": { compressible: true, 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: true, extensions: [ "ico" ] }, "image/x-jng": { source: "nginx", extensions: [ "jng" ] }, "image/x-mrsid-image": { source: "apache", extensions: [ "sid" ] }, "image/x-ms-bmp": { source: "nginx", compressible: true, 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: false }, "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: false }, "message/imdn+xml": { source: "iana", compressible: true }, "message/news": { source: "iana" }, "message/partial": { source: "iana", compressible: false }, "message/rfc822": { source: "iana", compressible: true, 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: true, extensions: [ "gltf" ] }, "model/gltf-binary": { source: "iana", compressible: true, extensions: [ "glb" ] }, "model/iges": { source: "iana", compressible: false, extensions: [ "igs", "iges" ] }, "model/mesh": { source: "iana", compressible: false, 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: true, extensions: [ "stpx" ] }, "model/step+zip": { source: "iana", compressible: false, extensions: [ "stpz" ] }, "model/step-xml+zip": { source: "iana", compressible: false, extensions: [ "stpxz" ] }, "model/stl": { source: "iana", extensions: [ "stl" ] }, "model/vnd.collada+xml": { source: "iana", compressible: true, 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: true }, "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: false, extensions: [ "usdz" ] }, "model/vnd.valve.source.compiled-map": { source: "iana", extensions: [ "bsp" ] }, "model/vnd.vtu": { source: "iana", extensions: [ "vtu" ] }, "model/vrml": { source: "iana", compressible: false, extensions: [ "wrl", "vrml" ] }, "model/x3d+binary": { source: "apache", compressible: false, extensions: [ "x3db", "x3dbz" ] }, "model/x3d+fastinfoset": { source: "iana", extensions: [ "x3db" ] }, "model/x3d+vrml": { source: "apache", compressible: false, extensions: [ "x3dv", "x3dvz" ] }, "model/x3d+xml": { source: "iana", compressible: true, extensions: [ "x3d", "x3dz" ] }, "model/x3d-vrml": { source: "iana", extensions: [ "x3dv" ] }, "multipart/alternative": { source: "iana", compressible: false }, "multipart/appledouble": { source: "iana" }, "multipart/byteranges": { source: "iana" }, "multipart/digest": { source: "iana" }, "multipart/encrypted": { source: "iana", compressible: false }, "multipart/form-data": { source: "iana", compressible: false }, "multipart/header-set": { source: "iana" }, "multipart/mixed": { source: "iana" }, "multipart/multilingual": { source: "iana" }, "multipart/parallel": { source: "iana" }, "multipart/related": { source: "iana", compressible: false }, "multipart/report": { source: "iana" }, "multipart/signed": { source: "iana", compressible: false }, "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: true, extensions: [ "appcache", "manifest" ] }, "text/calendar": { source: "iana", extensions: [ "ics", "ifb" ] }, "text/calender": { compressible: true }, "text/cmd": { compressible: true }, "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: true, extensions: [ "css" ] }, "text/csv": { source: "iana", compressible: true, 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: true, extensions: [ "html", "htm", "shtml" ] }, "text/jade": { extensions: [ "jade" ] }, "text/javascript": { source: "iana", compressible: true }, "text/jcr-cnd": { source: "iana" }, "text/jsx": { compressible: true, extensions: [ "jsx" ] }, "text/less": { compressible: true, extensions: [ "less" ] }, "text/markdown": { source: "iana", compressible: true, extensions: [ "markdown", "md" ] }, "text/mathml": { source: "nginx", extensions: [ "mml" ] }, "text/mdx": { compressible: true, extensions: [ "mdx" ] }, "text/mizar": { source: "iana" }, "text/n3": { source: "iana", charset: "UTF-8", compressible: true, extensions: [ "n3" ] }, "text/parameters": { source: "iana", charset: "UTF-8" }, "text/parityfec": { source: "iana" }, "text/plain": { source: "iana", compressible: true, 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: true, extensions: [ "rtx" ] }, "text/rtf": { source: "iana", compressible: true, 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: true, 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: true, extensions: [ "uri", "uris", "urls" ] }, "text/vcard": { source: "iana", compressible: true, 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: true, 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: true }, "text/x-handlebars-template": { extensions: [ "hbs" ] }, "text/x-java-source": { source: "apache", extensions: [ "java" ] }, "text/x-jquery-tmpl": { compressible: true }, "text/x-lua": { extensions: [ "lua" ] }, "text/x-markdown": { compressible: true, extensions: [ "mkd" ] }, "text/x-nfo": { source: "apache", extensions: [ "nfo" ] }, "text/x-opml": { source: "apache", extensions: [ "opml" ] }, "text/x-org": { compressible: true, extensions: [ "org" ] }, "text/x-pascal": { source: "apache", extensions: [ "p", "pas" ] }, "text/x-processing": { compressible: true, 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: true, 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: true, extensions: [ "xml" ] }, "text/xml-external-parsed-entity": { source: "iana" }, "text/yaml": { compressible: true, 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: false, extensions: [ "mp4", "mp4v", "mpg4" ] }, "video/mp4v-es": { source: "iana" }, "video/mpeg": { source: "iana", compressible: false, extensions: [ "mpeg", "mpg", "mpe", "m1v", "m2v" ] }, "video/mpeg4-generic": { source: "iana" }, "video/mpv": { source: "iana" }, "video/nv": { source: "iana" }, "video/ogg": { source: "iana", compressible: false, extensions: [ "ogv" ] }, "video/parityfec": { source: "iana" }, "video/pointer": { source: "iana" }, "video/quicktime": { source: "iana", compressible: false, 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: false, extensions: [ "webm" ] }, "video/x-f4v": { source: "apache", extensions: [ "f4v" ] }, "video/x-fli": { source: "apache", extensions: [ "fli" ] }, "video/x-flv": { source: "apache", compressible: false, extensions: [ "flv" ] }, "video/x-m4v": { source: "apache", extensions: [ "m4v" ] }, "video/x-matroska": { source: "apache", compressible: false, 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: false, 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: true }, "x-shader/x-vertex": { compressible: true } }; /*! * mime-db * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015-2022 Douglas Christopher Wilson * MIT Licensed */ var mimeDb = require$$0; /*! * mime-types * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed */ (function(exports) { var db = mimeDb; var extname = path$1.extname; var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; var TEXT_TYPE_REGEXP = /^text\//i; exports.charset = charset; exports.charsets = { lookup: charset }; exports.contentType = contentType; exports.extension = extension; exports.extensions = /* @__PURE__ */ Object.create(null); exports.lookup = lookup; exports.types = /* @__PURE__ */ Object.create(null); populateMaps(exports.extensions, exports.types); function charset(type) { if (!type || typeof type !== "string") { return false; } var match = EXTRACT_TYPE_REGEXP.exec(type); var mime2 = match && db[match[1].toLowerCase()]; if (mime2 && mime2.charset) { return mime2.charset; } if (match && TEXT_TYPE_REGEXP.test(match[1])) { return "UTF-8"; } return false; } function contentType(str) { if (!str || typeof str !== "string") { return false; } var mime2 = str.indexOf("/") === -1 ? exports.lookup(str) : str; if (!mime2) { return false; } if (mime2.indexOf("charset") === -1) { var charset2 = exports.charset(mime2); if (charset2) mime2 += "; charset=" + charset2.toLowerCase(); } return mime2; } function extension(type) { if (!type || typeof type !== "string") { return false; } var match = EXTRACT_TYPE_REGEXP.exec(type); var exts = match && exports.extensions[match[1].toLowerCase()]; if (!exts || !exts.length) { return false; } return exts[0]; } function lookup(path2) { if (!path2 || typeof path2 !== "string") { return false; } var extension2 = extname("x." + path2).toLowerCase().substr(1); if (!extension2) { return false; } return exports.types[extension2] || false; } function populateMaps(extensions, types) { var preference = ["nginx", "apache", void 0, "iana"]; Object.keys(db).forEach(function forEachMimeType(type) { var mime2 = db[type]; var exts = mime2.extensions; if (!exts || !exts.length) { return; } extensions[type] = exts; for (var i = 0; i < exts.length; i++) { var extension2 = exts[i]; if (types[extension2]) { var from = preference.indexOf(db[types[extension2]].source); var to = preference.indexOf(mime2.source); if (types[extension2] !== "application/octet-stream" && (from > to || from === to && types[extension2].substr(0, 12) === "application/")) { continue; } } types[extension2] = type; } }); } })(mimeTypes); var defer_1 = defer$1; function defer$1(fn) { var nextTick = typeof setImmediate == "function" ? setImmediate : typeof process == "object" && typeof process.nextTick == "function" ? process.nextTick : null; if (nextTick) { nextTick(fn); } else { setTimeout(fn, 0); } } var defer = defer_1; var async_1 = async$2; function async$2(callback) { var isAsync = false; defer(function() { isAsync = true; }); return function async_callback(err, result) { if (isAsync) { callback(err, result); } else { defer(function nextTick_callback() { callback(err, result); }); } }; } var abort_1 = abort$2; function abort$2(state2) { Object.keys(state2.jobs).forEach(clean.bind(state2)); state2.jobs = {}; } function clean(key) { if (typeof this.jobs[key] == "function") { this.jobs[key](); } } var async$1 = async_1, abort$1 = abort_1; var iterate_1 = iterate$2; function iterate$2(list, iterator, state2, callback) { var key = state2["keyedList"] ? state2["keyedList"][state2.index] : state2.index; state2.jobs[key] = runJob(iterator, key, list[key], function(error, output) { if (!(key in state2.jobs)) { return; } delete state2.jobs[key]; if (error) { abort$1(state2); } else { state2.results[key] = output; } callback(error, state2.results); }); } function runJob(iterator, key, item, callback) { var aborter; if (iterator.length == 2) { aborter = iterator(item, async$1(callback)); } else { aborter = iterator(item, key, async$1(callback)); } return aborter; } var state_1 = state; function state(list, sortMethod) { var isNamedList = !Array.isArray(list), initState2 = { index: 0, keyedList: isNamedList || sortMethod ? Object.keys(list) : null, jobs: {}, results: isNamedList ? {} : [], size: isNamedList ? Object.keys(list).length : list.length }; if (sortMethod) { initState2.keyedList.sort(isNamedList ? sortMethod : function(a, b) { return sortMethod(list[a], list[b]); }); } return initState2; } var abort = abort_1, async = async_1; var terminator_1 = terminator$2; function terminator$2(callback) { if (!Object.keys(this.jobs).length) { return; } this.index = this.size; abort(this); async(callback)(null, this.results); } var iterate$1 = iterate_1, initState$1 = state_1, terminator$1 = terminator_1; var parallel_1 = parallel; function parallel(list, iterator, callback) { var state2 = initState$1(list); while (state2.index < (state2["keyedList"] || list).length) { iterate$1(list, iterator, state2, function(error, result) { if (error) { callback(error, result); return; } if (Object.keys(state2.jobs).length === 0) { callback(null, state2.results); return; } }); state2.index++; } return terminator$1.bind(state2, callback); } var serialOrdered$2 = { exports: {} }; var iterate = iterate_1, initState = state_1, terminator = terminator_1; serialOrdered$2.exports = serialOrdered$1; serialOrdered$2.exports.ascending = ascending; serialOrdered$2.exports.descending = descending; function serialOrdered$1(list, iterator, sortMethod, callback) { var state2 = initState(list, sortMethod); iterate(list, iterator, state2, function iteratorHandler(error, result) { if (error) { callback(error, result); return; } state2.index++; if (state2.index < (state2["keyedList"] || list).length) { iterate(list, iterator, state2, iteratorHandler); return; } callback(null, state2.results); }); return terminator.bind(state2, callback); } function ascending(a, b) { return a < b ? -1 : a > b ? 1 : 0; } function descending(a, b) { return -1 * ascending(a, b); } var serialOrderedExports = serialOrdered$2.exports; var serialOrdered = serialOrderedExports; var serial_1 = serial; function serial(list, iterator, callback) { return serialOrdered(list, iterator, null, callback); } var asynckit$1 = { parallel: parallel_1, serial: serial_1, serialOrdered: serialOrderedExports }; var populate$1 = function(dst, src2) { Object.keys(src2).forEach(function(prop) { dst[prop] = dst[prop] || src2[prop]; }); return dst; }; var CombinedStream = combined_stream; var util = require$$1; var path = path$1; var http$1 = require$$3; var https$1 = require$$4; var parseUrl$2 = require$$0$1.parse; var fs = require$$6; var Stream = stream.Stream; var mime = mimeTypes; var asynckit = asynckit$1; var populate = populate$1; var form_data = FormData$1; util.inherits(FormData$1, CombinedStream); function FormData$1(options) { if (!(this instanceof FormData$1)) { return new FormData$1(options); } this._overheadLength = 0; this._valueLength = 0; this._valuesToMeasure = []; CombinedStream.call(this); options = options || {}; for (var option in options) { this[option] = options[option]; } } FormData$1.LINE_BREAK = "\r\n"; FormData$1.DEFAULT_CONTENT_TYPE = "application/octet-stream"; FormData$1.prototype.append = function(field, value, options) { options = options || {}; if (typeof options == "string") { options = { filename: options }; } var append2 = CombinedStream.prototype.append.bind(this); if (typeof value == "number") { value = "" + value; } if (util.isArray(value)) { this._error(new Error("Arrays are not supported.")); return; } var header = this._multiPartHeader(field, value, options); var footer = this._multiPartFooter(); append2(header); append2(value); append2(footer); this._trackLength(header, value, options); }; FormData$1.prototype._trackLength = function(header, value, options) { var valueLength = 0; if (options.knownLength != null) { valueLength += +options.knownLength; } else if (Buffer.isBuffer(value)) { valueLength = value.length; } else if (typeof value === "string") { valueLength = Buffer.byteLength(value); } this._valueLength += valueLength; this._overheadLength += Buffer.byteLength(header) + FormData$1.LINE_BREAK.length; if (!value || !value.path && !(value.readable && value.hasOwnProperty("httpVersion")) && !(value instanceof Stream)) { return; } if (!options.knownLength) { this._valuesToMeasure.push(value); } }; FormData$1.prototype._lengthRetriever = function(value, callback) { if (value.hasOwnProperty("fd")) { if (value.end != void 0 && value.end != Infinity && value.start != void 0) { callback(null, value.end + 1 - (value.start ? value.start : 0)); } else { fs.stat(value.path, function(err, stat) { var fileSize; if (err) { callback(err); return; } fileSize = stat.size - (value.start ? value.start : 0); callback(null, fileSize); }); } } else if (value.hasOwnProperty("httpVersion")) { callback(null, +value.headers["content-length"]); } else if (value.hasOwnProperty("httpModule")) { value.on("response", function(response) { value.pause(); callback(null, +response.headers["content-length"]); }); value.resume(); } else { callback("Unknown stream"); } }; FormData$1.prototype._multiPartHeader = function(field, value, options) { if (typeof options.header == "string") { return options.header; } var contentDisposition = this._getContentDisposition(value, options); var contentType = this._getContentType(value, options); var contents = ""; var headers = { // add custom disposition as third element or keep it two elements if not "Content-Disposition": ["form-data", 'name="' + field + '"'].concat(contentDisposition || []), // if no content type. allow it to be empty array "Content-Type": [].concat(contentType || []) }; if (typeof options.header == "object") { populate(headers, options.header); } var header; for (var prop in headers) { if (!headers.hasOwnProperty(prop)) continue; header = headers[prop]; if (header == null) { continue; } if (!Array.isArray(header)) { header = [header]; } if (header.length) { contents += prop + ": " + header.join("; ") + FormData$1.LINE_BREAK; } } return "--" + this.getBoundary() + FormData$1.LINE_BREAK + contents + FormData$1.LINE_BREAK; }; FormData$1.prototype._getContentDisposition = function(value, options) { var filename, contentDisposition; if (typeof options.filepath === "string") { filename = path.normalize(options.filepath).replace(/\\/g, "/"); } else if (options.filename || value.name || value.path) { filename = path.basename(options.filename || value.name || value.path); } else if (value.readable && value.hasOwnProperty("httpVersion")) { filename = path.basename(value.client._httpMessage.path || ""); } if (filename) { contentDisposition = 'filename="' + filename + '"'; } return contentDisposition; }; FormData$1.prototype._getContentType = function(value, options) { var contentType = options.contentType; if (!contentType && value.name) { contentType = mime.lookup(value.name); } if (!contentType && value.path) { contentType = mime.lookup(value.path); } if (!contentType && value.readable && value.hasOwnProperty("httpVersion")) { contentType = value.headers["content-type"]; } if (!contentType && (options.filepath || options.filename)) { contentType = mime.lookup(options.filepath || options.filename); } if (!contentType && typeof value == "object") { contentType = FormData$1.DEFAULT_CONTENT_TYPE; } return contentType; }; FormData$1.prototype._multiPartFooter = function() { return (function(next) { var footer = FormData$1.LINE_BREAK; var lastPart = this._streams.length === 0; if (lastPart) { footer += this._lastBoundary(); } next(footer); }).bind(this); }; FormData$1.prototype._lastBoundary = function() { return "--" + this.getBoundary() + "--" + FormData$1.LINE_BREAK; }; FormData$1.prototype.getHeaders = function(userHeaders) { var header; var formHeaders = { "content-type": "multipart/form-data; boundary=" + this.getBoundary() }; for (header in userHeaders) { if (userHeaders.hasOwnProperty(header)) { formHeaders[header.toLowerCase()] = userHeaders[header]; } } return formHeaders; }; FormData$1.prototype.setBoundary = function(boundary) { this._boundary = boundary; }; FormData$1.prototype.getBoundary = function() { if (!this._boundary) { this._generateBoundary(); } return this._boundary; }; FormData$1.prototype.getBuffer = function() { var dataBuffer = new Buffer.alloc(0); var boundary = this.getBoundary(); for (var i = 0, len = this._streams.length; i < len; i++) { if (typeof this._streams[i] !== "function") { if (Buffer.isBuffer(this._streams[i])) { dataBuffer = Buffer.concat([dataBuffer, this._streams[i]]); } else { dataBuffer = Buffer.concat([dataBuffer, Buffer.from(this._streams[i])]); } if (typeof this._streams[i] !== "string" || this._streams[i].substring(2, boundary.length + 2) !== boundary) { dataBuffer = Buffer.concat([dataBuffer, Buffer.from(FormData$1.LINE_BREAK)]); } } } return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]); }; FormData$1.prototype._generateBoundary = function() { var boundary = "--------------------------"; for (var i = 0; i < 24; i++) { boundary += Math.floor(Math.random() * 10).toString(16); } this._boundary = boundary; }; FormData$1.prototype.getLengthSync = function() { var knownLength = this._overheadLength + this._valueLength; if (this._streams.length) { knownLength += this._lastBoundary().length; } if (!this.hasKnownLength()) { this._error(new Error("Cannot calculate proper length in synchronous way.")); } return knownLength; }; FormData$1.prototype.hasKnownLength = function() { var hasKnownLength = true; if (this._valuesToMeasure.length) { hasKnownLength = false; } return hasKnownLength; }; FormData$1.prototype.getLength = function(cb) { var knownLength = this._overheadLength + this._valueLength; if (this._streams.length) { knownLength += this._lastBoundary().length; } if (!this._valuesToMeasure.length) { process.nextTick(cb.bind(this, null, knownLength)); return; } asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { if (err) { cb(err); return; } values.forEach(function(length) { knownLength += length; }); cb(null, knownLength); }); }; FormData$1.prototype.submit = function(params, cb) { var request, options, defaults2 = { method: "post" }; if (typeof params == "string") { params = parseUrl$2(params); options = populate({ port: params.port, path: params.pathname, host: params.hostname, protocol: params.protocol }, defaults2); } else { options = populate(params, defaults2); if (!options.port) { options.port = options.protocol == "https:" ? 443 : 80; } } options.headers = this.getHeaders(params.headers); if (options.protocol == "https:") { request = https$1.request(options); } else { request = http$1.request(options); } this.getLength((function(err, length) { if (err && err !== "Unknown stream") { this._error(err); return; } if (length) { request.setHeader("Content-Length", length); } this.pipe(request); if (cb) { var onResponse; var callback = function(error, responce) { request.removeListener("error", callback); request.removeListener("response", onResponse); return cb.call(this, error, responce); }; onResponse = callback.bind(this, null); request.on("error", callback); request.on("response", onResponse); } }).bind(this)); return request; }; FormData$1.prototype._error = function(err) { if (!this.error) { this.error = err; this.pause(); this.emit("error", err); } }; FormData$1.prototype.toString = function() { return "[object FormData]"; }; const FormData$2 = /* @__PURE__ */ getDefaultExportFromCjs(form_data); function isVisitable(thing) { return utils$1.isPlainObject(thing) || utils$1.isArray(thing); } function removeBrackets(key) { return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key; } function renderKey(path2, key, dots) { if (!path2) return key; return path2.concat(key).map(function each(token, i) { token = removeBrackets(token); return !dots && i ? "[" + token + "]" : token; }).join(dots ? "." : ""); } function isFlatArray(arr) { return utils$1.isArray(arr) && !arr.some(isVisitable); } const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { return /^is[A-Z]/.test(prop); }); function toFormData(obj, formData, options) { if (!utils$1.isObject(obj)) { throw new TypeError("target must be an object"); } formData = formData || new (FormData$2 || FormData)(); options = utils$1.toFlatObject(options, { metaTokens: true, dots: false, indexes: false }, false, function defined(option, source) { return !utils$1.isUndefined(source[option]); }); const metaTokens = options.metaTokens; const visitor = options.visitor || defaultVisitor; const dots = options.dots; const indexes = options.indexes; const _Blob = options.Blob || typeof Blob !== "undefined" && Blob; const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); if (!utils$1.isFunction(visitor)) { throw new TypeError("visitor must be a function"); } function convertValue(value) { if (value === null) return ""; if (utils$1.isDate(value)) { return value.toISOString(); } if (!useBlob && utils$1.isBlob(value)) { throw new AxiosError("Blob is not supported. Use a Buffer instead."); } if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value); } return value; } function defaultVisitor(value, key, path2) { let arr = value; if (value && !path2 && typeof value === "object") { if (utils$1.endsWith(key, "{}")) { key = metaTokens ? key : key.slice(0, -2); value = JSON.stringify(value); } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) { key = removeBrackets(key); arr.forEach(function each(el, index) { !(utils$1.isUndefined(el) || el === null) && formData.append( // eslint-disable-next-line no-nested-ternary indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]", convertValue(el) ); }); return false; } } if (isVisitable(value)) { return true; } formData.append(renderKey(path2, key, dots), convertValue(value)); return false; } const stack = []; const exposedHelpers = Object.assign(predicates, { defaultVisitor, convertValue, isVisitable }); function build(value, path2) { if (utils$1.isUndefined(value)) return; if (stack.indexOf(value) !== -1) { throw Error("Circular reference detected in " + path2.join(".")); } stack.push(value); utils$1.forEach(value, function each(el, key) { const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( formData, el, utils$1.isString(key) ? key.trim() : key, path2, exposedHelpers ); if (result === true) { build(el, path2 ? path2.concat(key) : [key]); } }); stack.pop(); } if (!utils$1.isObject(obj)) { throw new TypeError("data must be an object"); } build(obj); return formData; } function encode$1(str) { const charMap = { "!": "%21", "'": "%27", "(": "%28", ")": "%29", "~": "%7E", "%20": "+", "%00": "\0" }; return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { return charMap[match]; }); } function AxiosURLSearchParams(params, options) { this._pairs = []; params && toFormData(params, this, options); } const prototype = AxiosURLSearchParams.prototype; prototype.append = function append(name, value) { this._pairs.push([name, value]); }; prototype.toString = function toString2(encoder) { const _encode = encoder ? function(value) { return encoder.call(this, value, encode$1); } : encode$1; return this._pairs.map(function each(pair) { return _encode(pair[0]) + "=" + _encode(pair[1]); }, "").join("&"); }; function encode(val) { return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]"); } function buildURL(url2, params, options) { if (!params) { return url2; } const _encode = options && options.encode || encode; const serializeFn = options && options.serialize; let serializedParams; if (serializeFn) { serializedParams = serializeFn(params, options); } else { serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode); } if (serializedParams) { const hashmarkIndex = url2.indexOf("#"); if (hashmarkIndex !== -1) { url2 = url2.slice(0, hashmarkIndex); } url2 += (url2.indexOf("?") === -1 ? "?" : "&") + serializedParams; } return url2; } class InterceptorManager { constructor() { this.handlers = []; } /** * Add a new interceptor to the stack * * @param {Function} fulfilled The function to handle `then` for a `Promise` * @param {Function} rejected The function to handle `reject` for a `Promise` * * @return {Number} An ID used to remove interceptor later */ use(fulfilled, rejected, options) { this.handlers.push({ fulfilled, rejected, synchronous: options ? options.synchronous : false, runWhen: options ? options.runWhen : null }); return this.handlers.length - 1; } /** * Remove an interceptor from the stack * * @param {Number} id The ID that was returned by `use` * * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise */ eject(id) { if (this.handlers[id]) { this.handlers[id] = null; } } /** * Clear all interceptors from the stack * * @returns {void} */ clear() { if (this.handlers) { this.handlers = []; } } /** * Iterate over all the registered interceptors * * This method is particularly useful for skipping over any * interceptors that may have become `null` calling `eject`. * * @param {Function} fn The function to call for each interceptor * * @returns {void} */ forEach(fn) { utils$1.forEach(this.handlers, function forEachHandler(h) { if (h !== null) { fn(h); } }); } } const transitionalDefaults = { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false }; const URLSearchParams = require$$0$1.URLSearchParams; const platform$1 = { isNode: true, classes: { URLSearchParams, FormData: FormData$2, Blob: typeof Blob !== "undefined" && Blob || null }, protocols: ["http", "https", "file", "data"] }; const hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined"; const hasStandardBrowserEnv = ((product) => { return hasBrowserEnv && ["ReactNative", "NativeScript", "NS"].indexOf(product) < 0; })(typeof navigator !== "undefined" && navigator.product); const hasStandardBrowserWebWorkerEnv = (() => { return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef self instanceof WorkerGlobalScope && typeof self.importScripts === "function"; })(); const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, hasBrowserEnv, hasStandardBrowserEnv, hasStandardBrowserWebWorkerEnv }, Symbol.toStringTag, { value: "Module" })); const platform = { ...utils, ...platform$1 }; function toURLEncodedForm(data, options) { return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ visitor: function(value, key, path2, helpers) { if (platform.isNode && utils$1.isBuffer(value)) { this.append(key, value.toString("base64")); return false; } return helpers.defaultVisitor.apply(this, arguments); } }, options)); } function parsePropPath(name) { return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { return match[0] === "[]" ? "" : match[1] || match[0]; }); } function arrayToObject(arr) { const obj = {}; const keys = Object.keys(arr); let i; const len = keys.length; let key; for (i = 0; i < len; i++) { key = keys[i]; obj[key] = arr[key]; } return obj; } function formDataToJSON(formData) { function buildPath(path2, value, target, index) { let name = path2[index++]; if (name === "__proto__") return true; const isNumericKey = Number.isFinite(+name); const isLast = index >= path2.length; name = !name && utils$1.isArray(target) ? target.length : name; if (isLast) { if (utils$1.hasOwnProp(target, name)) { target[name] = [target[name], value]; } else { target[name] = value; } return !isNumericKey; } if (!target[name] || !utils$1.isObject(target[name])) { target[name] = []; } const result = buildPath(path2, value, target[name], index); if (result && utils$1.isArray(target[name])) { target[name] = arrayToObject(target[name]); } return !isNumericKey; } if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { const obj = {}; utils$1.forEachEntry(formData, (name, value) => { buildPath(parsePropPath(name), value, obj, 0); }); return obj; } return null; } function stringifySafely(rawValue, parser, encoder) { if (utils$1.isString(rawValue)) { try { (parser || JSON.parse)(rawValue); return utils$1.trim(rawValue); } catch (e) { if (e.name !== "SyntaxError") { throw e; } } } return (encoder || JSON.stringify)(rawValue); } const defaults = { transitional: transitionalDefaults, adapter: ["xhr", "http"], transformRequest: [function transformRequest(data, headers) { const contentType = headers.getContentType() || ""; const hasJSONContentType = contentType.indexOf("application/json") > -1; const isObjectPayload = utils$1.isObject(data); if (isObjectPayload && utils$1.isHTMLForm(data)) { data = new FormData(data); } const isFormData2 = utils$1.isFormData(data); if (isFormData2) { return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; } if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data)) { return data; } if (utils$1.isArrayBufferView(data)) { return data.buffer; } if (utils$1.isURLSearchParams(data)) { headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false); return data.toString(); } let isFileList2; if (isObjectPayload) { if (contentType.indexOf("application/x-www-form-urlencoded") > -1) { return toURLEncodedForm(data, this.formSerializer).toString(); } if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) { const _FormData = this.env && this.env.FormData; return toFormData( isFileList2 ? { "files[]": data } : data, _FormData && new _FormData(), this.formSerializer ); } } if (isObjectPayload || hasJSONContentType) { headers.setContentType("application/json", false); return stringifySafely(data); } return data; }], transformResponse: [function transformResponse(data) { const transitional2 = this.transitional || defaults.transitional; const forcedJSONParsing = transitional2 && transitional2.forcedJSONParsing; const JSONRequested = this.responseType === "json"; if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { const silentJSONParsing = transitional2 && transitional2.silentJSONParsing; const strictJSONParsing = !silentJSONParsing && JSONRequested; try { return JSON.parse(data); } catch (e) { if (strictJSONParsing) { if (e.name === "SyntaxError") { throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); } throw e; } } } return data; }], /** * A timeout in milliseconds to abort a request. If set to 0 (default) a * timeout is not created. */ timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", maxContentLength: -1, maxBodyLength: -1, env: { FormData: platform.classes.FormData, Blob: platform.classes.Blob }, validateStatus: function validateStatus(status) { return status >= 200 && status < 300; }, headers: { common: { "Accept": "application/json, text/plain, */*", "Content-Type": void 0 } } }; utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => { defaults.headers[method] = {}; }); const defaults$1 = defaults; const ignoreDuplicateOf = utils$1.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" ]); const parseHeaders = (rawHeaders) => { const parsed = {}; let key; let val; let i; rawHeaders && rawHeaders.split("\n").forEach(function parser(line) { i = line.indexOf(":"); key = line.substring(0, i).trim().toLowerCase(); val = line.substring(i + 1).trim(); if (!key || parsed[key] && ignoreDuplicateOf[key]) { return; } if (key === "set-cookie") { if (parsed[key]) { parsed[key].push(val); } else { parsed[key] = [val]; } } else { parsed[key] = parsed[key] ? parsed[key] + ", " + val : val; } }); return parsed; }; const $internals = Symbol("internals"); function normalizeHeader(header) { return header && String(header).trim().toLowerCase(); } function normalizeValue(value) { if (value === false || value == null) { return value; } return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); } function parseTokens(str) { const tokens = /* @__PURE__ */ Object.create(null); const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; let match; while (match = tokensRE.exec(str)) { tokens[match[1]] = match[2]; } return tokens; } const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); function matchHeaderValue(context, value, header, filter2, isHeaderNameFilter) { if (utils$1.isFunction(filter2)) { return filter2.call(this, value, header); } if (isHeaderNameFilter) { value = header; } if (!utils$1.isString(value)) return; if (utils$1.isString(filter2)) { return value.indexOf(filter2) !== -1; } if (utils$1.isRegExp(filter2)) { return filter2.test(value); } } function formatHeader(header) { return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { return char.toUpperCase() + str; }); } function buildAccessors(obj, header) { const accessorName = utils$1.toCamelCase(" " + header); ["get", "set", "has"].forEach((methodName) => { Object.defineProperty(obj, methodName + accessorName, { value: function(arg1, arg2, arg3) { return this[methodName].call(this, header, arg1, arg2, arg3); }, configurable: true }); }); } class AxiosHeaders { constructor(headers) { headers && this.set(headers); } set(header, valueOrRewrite, rewrite) { const self2 = this; function setHeader(_value, _header, _rewrite) { const lHeader = normalizeHeader(_header); if (!lHeader) { throw new Error("header name must be a non-empty string"); } const key = utils$1.findKey(self2, lHeader); if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) { self2[key || _header] = normalizeValue(_value); } } const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); if (utils$1.isPlainObject(header) || header instanceof this.constructor) { setHeaders(header, valueOrRewrite); } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { setHeaders(parseHeaders(header), valueOrRewrite); } else { header != null && setHeader(valueOrRewrite, header, rewrite); } return this; } get(header, parser) { header = normalizeHeader(header); if (header) { const key = utils$1.findKey(this, header); if (key) { const value = this[key]; if (!parser) { return value; } if (parser === true) { return parseTokens(value); } if (utils$1.isFunction(parser)) { return parser.call(this, value, key); } if (utils$1.isRegExp(parser)) { return parser.exec(value); } throw new TypeError("parser must be boolean|regexp|function"); } } } has(header, matcher) { header = normalizeHeader(header); if (header) { const key = utils$1.findKey(this, header); return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher))); } return false; } delete(header, matcher) { const self2 = this; let deleted = false; function deleteHeader(_header) { _header = normalizeHeader(_header); if (_header) { const key = utils$1.findKey(self2, _header); if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) { delete self2[key]; deleted = true; } } } if (utils$1.isArray(header)) { header.forEach(deleteHeader); } else { deleteHeader(header); } return deleted; } clear(matcher) { const keys = Object.keys(this); let i = keys.length; let deleted = false; while (i--) { const key = keys[i]; if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { delete this[key]; deleted = true; } } return deleted; } normalize(format) { const self2 = this; const headers = {}; utils$1.forEach(this, (value, header) => { const key = utils$1.findKey(headers, header); if (key) { self2[key] = normalizeValue(value); delete self2[header]; return; } const normalized = format ? formatHeader(header) : String(header).trim(); if (normalized !== header) { delete self2[header]; } self2[normalized] = normalizeValue(value); headers[normalized] = true; }); return this; } concat(...targets) { return this.constructor.concat(this, ...targets); } toJSON(asStrings) { const obj = /* @__PURE__ */ Object.create(null); utils$1.forEach(this, (value, header) => { value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value); }); return obj; } [Symbol.iterator]() { return Object.entries(this.toJSON())[Symbol.iterator](); } toString() { return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n"); } get [Symbol.toStringTag]() { return "AxiosHeaders"; } static from(thing) { return thing instanceof this ? thing : new this(thing); } static concat(first, ...targets) { const computed = new this(first); targets.forEach((target) => computed.set(target)); return computed; } static accessor(header) { const internals = this[$internals] = this[$internals] = { accessors: {} }; const accessors = internals.accessors; const prototype2 = this.prototype; function defineAccessor(_header) { const lHeader = normalizeHeader(_header); if (!accessors[lHeader]) { buildAccessors(prototype2, _header); accessors[lHeader] = true; } } utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); return this; } } AxiosHeaders.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]); utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { let mapped = key[0].toUpperCase() + key.slice(1); return { get: () => value, set(headerValue) { this[mapped] = headerValue; } }; }); utils$1.freezeMethods(AxiosHeaders); const AxiosHeaders$1 = AxiosHeaders; function transformData(fns, response) { const config = this || defaults$1; const context = response || config; const headers = AxiosHeaders$1.from(context.headers); let data = context.data; utils$1.forEach(fns, function transform(fn) { data = fn.call(config, data, headers.normalize(), response ? response.status : void 0); }); headers.normalize(); return data; } function isCancel(value) { return !!(value && value.__CANCEL__); } function CanceledError(message, config, request) { AxiosError.call(this, message == null ? "canceled" : message, AxiosError.ERR_CANCELED, config, request); this.name = "CanceledError"; } utils$1.inherits(CanceledError, AxiosError, { __CANCEL__: true }); function settle(resolve, reject, response) { const validateStatus2 = response.config.validateStatus; if (!response.status || !validateStatus2 || validateStatus2(response.status)) { resolve(response); } else { reject(new AxiosError( "Request failed with status code " + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response )); } } function isAbsoluteURL(url2) { return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url2); } function combineURLs(baseURL, relativeURL) { return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL; } function buildFullPath(baseURL, requestedURL) { if (baseURL && !isAbsoluteURL(requestedURL)) { return combineURLs(baseURL, requestedURL); } return requestedURL; } var parseUrl$1 = require$$0$1.parse; var DEFAULT_PORTS = { ftp: 21, gopher: 70, http: 80, https: 443, ws: 80, wss: 443 }; var stringEndsWith = String.prototype.endsWith || function(s) { return s.length <= this.length && this.indexOf(s, this.length - s.length) !== -1; }; function getProxyForUrl(url2) { var parsedUrl = typeof url2 === "string" ? parseUrl$1(url2) : url2 || {}; var proto = parsedUrl.protocol; var hostname = parsedUrl.host; var port = parsedUrl.port; if (typeof hostname !== "string" || !hostname || typeof proto !== "string") { return ""; } proto = proto.split(":", 1)[0]; hostname = hostname.replace(/:\d*$/, ""); port = parseInt(port) || DEFAULT_PORTS[proto] || 0; if (!shouldProxy(hostname, port)) { return ""; } var proxy = getEnv("npm_config_" + proto + "_proxy") || getEnv(proto + "_proxy") || getEnv("npm_config_proxy") || getEnv("all_proxy"); if (proxy && proxy.indexOf("://") === -1) { proxy = proto + "://" + proxy; } return proxy; } function shouldProxy(hostname, port) { var NO_PROXY = (getEnv("npm_config_no_proxy") || getEnv("no_proxy")).toLowerCase(); if (!NO_PROXY) { return true; } if (NO_PROXY === "*") { return false; } return NO_PROXY.split(/[,\s]/).every(function(proxy) { if (!proxy) { return true; } var parsedProxy = proxy.match(/^(.+):(\d+)$/); var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; if (parsedProxyPort && parsedProxyPort !== port) { return true; } if (!/^[.*]/.test(parsedProxyHostname)) { return hostname !== parsedProxyHostname; } if (parsedProxyHostname.charAt(0) === "*") { parsedProxyHostname = parsedProxyHostname.slice(1); } return !stringEndsWith.call(hostname, parsedProxyHostname); }); } function getEnv(key) { return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ""; } var getProxyForUrl_1 = getProxyForUrl; var followRedirects$1 = { exports: {} }; var src = { exports: {} }; var browser = { exports: {} }; var ms; var hasRequiredMs; function requireMs() { if (hasRequiredMs) return ms; hasRequiredMs = 1; var s = 1e3; var m = s * 60; var h = m * 60; var d = h * 24; var w = d * 7; var y = d * 365.25; ms = function(val, options) { options = options || {}; var type = typeof val; if (type === "string" && val.length > 0) { return parse(val); } else if (type === "number" && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) ); }; function parse(str) { str = String(str); if (str.length > 100) { return; } var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( str ); if (!match) { return; } var n = parseFloat(match[1]); var type = (match[2] || "ms").toLowerCase(); switch (type) { case "years": case "year": case "yrs": case "yr": case "y": return n * y; case "weeks": case "week": case "w": return n * w; case "days": case "day": case "d": return n * d; case "hours": case "hour": case "hrs": case "hr": case "h": return n * h; case "minutes": case "minute": case "mins": case "min": case "m": return n * m; case "seconds": case "second": case "secs": case "sec": case "s": return n * s; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return n; default: return void 0; } } function fmtShort(ms2) { var msAbs = Math.abs(ms2); if (msAbs >= d) { return Math.round(ms2 / d) + "d"; } if (msAbs >= h) { return Math.round(ms2 / h) + "h"; } if (msAbs >= m) { return Math.round(ms2 / m) + "m"; } if (msAbs >= s) { return Math.round(ms2 / s) + "s"; } return ms2 + "ms"; } function fmtLong(ms2) { var msAbs = Math.abs(ms2); if (msAbs >= d) { return plural(ms2, msAbs, d, "day"); } if (msAbs >= h) { return plural(ms2, msAbs, h, "hour"); } if (msAbs >= m) { return plural(ms2, msAbs, m, "minute"); } if (msAbs >= s) { return plural(ms2, msAbs, s, "second"); } return ms2 + " ms"; } function plural(ms2, msAbs, n, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms2 / n) + " " + name + (isPlural ? "s" : ""); } return ms; } var common; var hasRequiredCommon; function requireCommon() { if (hasRequiredCommon) return common; hasRequiredCommon = 1; function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable; createDebug.enable = enable; createDebug.enabled = enabled; createDebug.humanize = requireMs(); createDebug.destroy = destroy2; Object.keys(env).forEach((key) => { createDebug[key] = env[key]; }); createDebug.names = []; createDebug.skips = []; createDebug.formatters = {}; function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = (hash << 5) - hash + namespace.charCodeAt(i); hash |= 0; } return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; } createDebug.selectColor = selectColor; function createDebug(namespace) { let prevTime; let enableOverride = null; let namespacesCache; let enabledCache; function debug2(...args) { if (!debug2.enabled) { return; } const self2 = debug2; const curr = Number(/* @__PURE__ */ new Date()); const ms2 = curr - (prevTime || curr); self2.diff = ms2; self2.prev = prevTime; self2.curr = curr; prevTime = curr; args[0] = createDebug.coerce(args[0]); if (typeof args[0] !== "string") { args.unshift("%O"); } let index = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { if (match === "%%") { return "%"; } index++; const formatter = createDebug.formatters[format]; if (typeof formatter === "function") { const val = args[index]; match = formatter.call(self2, val); args.splice(index, 1); index--; } return match; }); createDebug.formatArgs.call(self2, args); const logFn = self2.log || createDebug.log; logFn.apply(self2, args); } debug2.namespace = namespace; debug2.useColors = createDebug.useColors(); debug2.color = createDebug.selectColor(namespace); debug2.extend = extend2; debug2.destroy = createDebug.destroy; Object.defineProperty(debug2, "enabled", { enumerable: true, configurable: false, get: () => { if (enableOverride !== null) { return enableOverride; } if (namespacesCache !== createDebug.namespaces) { namespacesCache = createDebug.namespaces; enabledCache = createDebug.enabled(namespace); } return enabledCache; }, set: (v) => { enableOverride = v; } }); if (typeof createDebug.init === "function") { createDebug.init(debug2); } return debug2; } function extend2(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); newDebug.log = this.log; return newDebug; } function enable(namespaces) { createDebug.save(namespaces); createDebug.namespaces = namespaces; createDebug.names = []; createDebug.skips = []; let i; const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); const len = split.length; for (i = 0; i < len; i++) { if (!split[i]) { continue; } namespaces = split[i].replace(/\*/g, ".*?"); if (namespaces[0] === "-") { createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$")); } else { createDebug.names.push(new RegExp("^" + namespaces + "$")); } } } function disable() { const namespaces = [ ...createDebug.names.map(toNamespace), ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace) ].join(","); createDebug.enable(""); return namespaces; } function enabled(name) { if (name[name.length - 1] === "*") { return true; } let i; let len; for (i = 0, len = createDebug.skips.length; i < len; i++) { if (createDebug.skips[i].test(name)) { return false; } } for (i = 0, len = createDebug.names.length; i < len; i++) { if (createDebug.names[i].test(name)) { return true; } } return false; } function toNamespace(regexp) { return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*"); } function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } function destroy2() { console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } createDebug.enable(createDebug.load()); return createDebug; } common = setup; return common; } var hasRequiredBrowser; function requireBrowser() { if (hasRequiredBrowser) return browser.exports; hasRequiredBrowser = 1; (function(module, exports) { exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); exports.destroy = /* @__PURE__ */ (() => { let warned = false; return () => { if (!warned) { warned = true; console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); } }; })(); exports.colors = [ "#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33" ]; function useColors() { if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { return true; } if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); } function formatArgs(args) { args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff); if (!this.useColors) { return; } const c = "color: " + this.color; args.splice(1, 0, c, "color: inherit"); let index = 0; let lastC = 0; args[0].replace(/%[a-zA-Z%]/g, (match) => { if (match === "%%") { return; } index++; if (match === "%c") { lastC = index; } }); args.splice(lastC, 0, c); } exports.log = console.debug || console.log || (() => { }); function save(namespaces) { try { if (namespaces) { exports.storage.setItem("debug", namespaces); } else { exports.storage.removeItem("debug"); } } catch (error) { } } function load() { let r; try { r = exports.storage.getItem("debug"); } catch (error) { } if (!r && typeof process !== "undefined" && "env" in process) { r = process.env.DEBUG; } return r; } function localstorage() { try { return localStorage; } catch (error) { } } module.exports = requireCommon()(exports); const { formatters } = module.exports; formatters.j = function(v) { try { return JSON.stringify(v); } catch (error) { return "[UnexpectedJSONParseError]: " + error.message; } }; })(browser, browser.exports); return browser.exports; } var node = { exports: {} }; var hasFlag; var hasRequiredHasFlag; function requireHasFlag() { if (hasRequiredHasFlag) return hasFlag; hasRequiredHasFlag = 1; hasFlag = (flag, argv = process.argv) => { const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; const position = argv.indexOf(prefix + flag); const terminatorPosition = argv.indexOf("--"); return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); }; return hasFlag; } var supportsColor_1; var hasRequiredSupportsColor; function requireSupportsColor() { if (hasRequiredSupportsColor) return supportsColor_1; hasRequiredSupportsColor = 1; const os$1 = os; const tty = require$$1$1; const hasFlag2 = requireHasFlag(); const { env } = process; let forceColor; if (hasFlag2("no-color") || hasFlag2("no-colors") || hasFlag2("color=false") || hasFlag2("color=never")) { forceColor = 0; } else if (hasFlag2("color") || hasFlag2("colors") || hasFlag2("color=true") || hasFlag2("color=always")) { forceColor = 1; } if ("FORCE_COLOR" in env) { if (env.FORCE_COLOR === "true") { forceColor = 1; } else if (env.FORCE_COLOR === "false") { forceColor = 0; } else { forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); } } function translateLevel(level) { if (level === 0) { return false; } return { level, hasBasic: true, has256: level >= 2, has16m: level >= 3 }; } function supportsColor(haveStream, streamIsTTY) { if (forceColor === 0) { return 0; } if (hasFlag2("color=16m") || hasFlag2("color=full") || hasFlag2("color=truecolor")) { return 3; } if (hasFlag2("color=256")) { return 2; } if (haveStream && !streamIsTTY && forceColor === void 0) { return 0; } const min = forceColor || 0; if (env.TERM === "dumb") { return min; } if (process.platform === "win32") { const osRelease = os$1.release().split("."); if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { return Number(osRelease[2]) >= 14931 ? 3 : 2; } return 1; } if ("CI" in env) { if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { return 1; } return min; } if ("TEAMCITY_VERSION" in env) { return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; } if (env.COLORTERM === "truecolor") { return 3; } if ("TERM_PROGRAM" in env) { const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); switch (env.TERM_PROGRAM) { case "iTerm.app": return version >= 3 ? 3 : 2; case "Apple_Terminal": return 2; } } if (/-256(color)?$/i.test(env.TERM)) { return 2; } if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { return 1; } if ("COLORTERM" in env) { return 1; } return min; } function getSupportLevel(stream2) { const level = supportsColor(stream2, stream2 && stream2.isTTY); return translateLevel(level); } supportsColor_1 = { supportsColor: getSupportLevel, stdout: translateLevel(supportsColor(true, tty.isatty(1))), stderr: translateLevel(supportsColor(true, tty.isatty(2))) }; return supportsColor_1; } var hasRequiredNode; function requireNode() { if (hasRequiredNode) return node.exports; hasRequiredNode = 1; (function(module, exports) { const tty = require$$1$1; const util2 = require$$1; exports.init = init; exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.destroy = util2.deprecate( () => { }, "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." ); exports.colors = [6, 2, 3, 4, 5, 1]; try { const supportsColor = requireSupportsColor(); if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { exports.colors = [ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221 ]; } } catch (error) { } exports.inspectOpts = Object.keys(process.env).filter((key) => { return /^debug_/i.test(key); }).reduce((obj, key) => { const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { return k.toUpperCase(); }); let val = process.env[key]; if (/^(yes|on|true|enabled)$/i.test(val)) { val = true; } else if (/^(no|off|false|disabled)$/i.test(val)) { val = false; } else if (val === "null") { val = null; } else { val = Number(val); } obj[prop] = val; return obj; }, {}); function useColors() { return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd); } function formatArgs(args) { const { namespace: name, useColors: useColors2 } = this; if (useColors2) { const c = this.color; const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); const prefix = ` ${colorCode};1m${name} \x1B[0m`; args[0] = prefix + args[0].split("\n").join("\n" + prefix); args.push(colorCode + "m+" + module.exports.humanize(this.diff) + "\x1B[0m"); } else { args[0] = getDate() + name + " " + args[0]; } } function getDate() { if (exports.inspectOpts.hideDate) { return ""; } return (/* @__PURE__ */ new Date()).toISOString() + " "; } function log(...args) { return process.stderr.write(util2.format(...args) + "\n"); } function save(namespaces) { if (namespaces) { process.env.DEBUG = namespaces; } else { delete process.env.DEBUG; } } function load() { return process.env.DEBUG; } function init(debug2) { debug2.inspectOpts = {}; const keys = Object.keys(exports.inspectOpts); for (let i = 0; i < keys.length; i++) { debug2.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; } } module.exports = requireCommon()(exports); const { formatters } = module.exports; formatters.o = function(v) { this.inspectOpts.colors = this.useColors; return util2.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); }; formatters.O = function(v) { this.inspectOpts.colors = this.useColors; return util2.inspect(v, this.inspectOpts); }; })(node, node.exports); return node.exports; } var hasRequiredSrc; function requireSrc() { if (hasRequiredSrc) return src.exports; hasRequiredSrc = 1; if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { src.exports = requireBrowser(); } else { src.exports = requireNode(); } return src.exports; } var debug$1; var debug_1 = function() { if (!debug$1) { try { debug$1 = requireSrc()("follow-redirects"); } catch (error) { } if (typeof debug$1 !== "function") { debug$1 = function() { }; } } debug$1.apply(null, arguments); }; var url = require$$0$1; var URL$1 = url.URL; var http = require$$3; var https = require$$4; var Writable = stream.Writable; var assert = require$$4$1; var debug = debug_1; var useNativeURL = false; try { assert(new URL$1()); } catch (error) { useNativeURL = error.code === "ERR_INVALID_URL"; } var preservedUrlFields = [ "auth", "host", "hostname", "href", "path", "pathname", "port", "protocol", "query", "search", "hash" ]; var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; var eventHandlers = /* @__PURE__ */ Object.create(null); events.forEach(function(event) { eventHandlers[event] = function(arg1, arg2, arg3) { this._redirectable.emit(event, arg1, arg2, arg3); }; }); var InvalidUrlError = createErrorType( "ERR_INVALID_URL", "Invalid URL", TypeError ); var RedirectionError = createErrorType( "ERR_FR_REDIRECTION_FAILURE", "Redirected request failed" ); var TooManyRedirectsError = createErrorType( "ERR_FR_TOO_MANY_REDIRECTS", "Maximum number of redirects exceeded", RedirectionError ); var MaxBodyLengthExceededError = createErrorType( "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", "Request body larger than maxBodyLength limit" ); var WriteAfterEndError = createErrorType( "ERR_STREAM_WRITE_AFTER_END", "write after end" ); var destroy = Writable.prototype.destroy || noop; function RedirectableRequest(options, responseCallback) { Writable.call(this); this._sanitizeOptions(options); this._options = options; this._ended = false; this._ending = false; this._redirectCount = 0; this._redirects = []; this._requestBodyLength = 0; this._requestBodyBuffers = []; if (responseCallback) { this.on("response", responseCallback); } var self2 = this; this._onNativeResponse = function(response) { try { self2._processResponse(response); } catch (cause) { self2.emit("error", cause instanceof RedirectionError ? cause : new RedirectionError({ cause })); } }; this._performRequest(); } RedirectableRequest.prototype = Object.create(Writable.prototype); RedirectableRequest.prototype.abort = function() { destroyRequest(this._currentRequest); this._currentRequest.abort(); this.emit("abort"); }; RedirectableRequest.prototype.destroy = function(error) { destroyRequest(this._currentRequest, error); destroy.call(this, error); return this; }; RedirectableRequest.prototype.write = function(data, encoding, callback) { if (this._ending) { throw new WriteAfterEndError(); } if (!isString(data) && !isBuffer(data)) { throw new TypeError("data should be a string, Buffer or Uint8Array"); } if (isFunction(encoding)) { callback = encoding; encoding = null; } if (data.length === 0) { if (callback) { callback(); } return; } if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { this._requestBodyLength += data.length; this._requestBodyBuffers.push({ data, encoding }); this._currentRequest.write(data, encoding, callback); } else { this.emit("error", new MaxBodyLengthExceededError()); this.abort(); } }; RedirectableRequest.prototype.end = function(data, encoding, callback) { if (isFunction(data)) { callback = data; data = encoding = null; } else if (isFunction(encoding)) { callback = encoding; encoding = null; } if (!data) { this._ended = this._ending = true; this._currentRequest.end(null, null, callback); } else { var self2 = this; var currentRequest = this._currentRequest; this.write(data, encoding, function() { self2._ended = true; currentRequest.end(null, null, callback); }); this._ending = true; } }; RedirectableRequest.prototype.setHeader = function(name, value) { this._options.headers[name] = value; this._currentRequest.setHeader(name, value); }; RedirectableRequest.prototype.removeHeader = function(name) { delete this._options.headers[name]; this._currentRequest.removeHeader(name); }; RedirectableRequest.prototype.setTimeout = function(msecs, callback) { var self2 = this; function destroyOnTimeout(socket) { socket.setTimeout(msecs); socket.removeListener("timeout", socket.destroy); socket.addListener("timeout", socket.destroy); } function startTimer(socket) { if (self2._timeout) { clearTimeout(self2._timeout); } self2._timeout = setTimeout(function() { self2.emit("timeout"); clearTimer(); }, msecs); destroyOnTimeout(socket); } function clearTimer() { if (self2._timeout) { clearTimeout(self2._timeout); self2._timeout = null; } self2.removeListener("abort", clearTimer); self2.removeListener("error", clearTimer); self2.removeListener("response", clearTimer); self2.removeListener("close", clearTimer); if (callback) { self2.removeListener("timeout", callback); } if (!self2.socket) { self2._currentRequest.removeListener("socket", startTimer); } } if (callback) { this.on("timeout", callback); } if (this.socket) { startTimer(this.socket); } else { this._currentRequest.once("socket", startTimer); } this.on("socket", destroyOnTimeout); this.on("abort", clearTimer); this.on("error", clearTimer); this.on("response", clearTimer); this.on("close", clearTimer); return this; }; [ "flushHeaders", "getHeader", "setNoDelay", "setSocketKeepAlive" ].forEach(function(method) { RedirectableRequest.prototype[method] = function(a, b) { return this._currentRequest[method](a, b); }; }); ["aborted", "connection", "socket"].forEach(function(property) { Object.defineProperty(RedirectableRequest.prototype, property, { get: function() { return this._currentRequest[property]; } }); }); RedirectableRequest.prototype._sanitizeOptions = function(options) { if (!options.headers) { options.headers = {}; } if (options.host) { if (!options.hostname) { options.hostname = options.host; } delete options.host; } if (!options.pathname && options.path) { var searchPos = options.path.indexOf("?"); if (searchPos < 0) { options.pathname = options.path; } else { options.pathname = options.path.substring(0, searchPos); options.search = options.path.substring(searchPos); } } }; RedirectableRequest.prototype._performRequest = function() { var protocol = this._options.protocol; var nativeProtocol = this._options.nativeProtocols[protocol]; if (!nativeProtocol) { throw new TypeError("Unsupported protocol " + protocol); } if (this._options.agents) { var scheme = protocol.slice(0, -1); this._options.agent = this._options.agents[scheme]; } var request = this._currentRequest = nativeProtocol.request(this._options, this._onNativeResponse); request._redirectable = this; for (var event of events) { request.on(event, eventHandlers[event]); } this._currentUrl = /^\//.test(this._options.path) ? url.format(this._options) : ( // When making a request to a proxy, […] // a client MUST send the target URI in absolute-form […]. this._options.path ); if (this._isRedirect) { var i = 0; var self2 = this; var buffers = this._requestBodyBuffers; (function writeNext(error) { if (request === self2._currentRequest) { if (error) { self2.emit("error", error); } else if (i < buffers.length) { var buffer = buffers[i++]; if (!request.finished) { request.write(buffer.data, buffer.encoding, writeNext); } } else if (self2._ended) { request.end(); } } })(); } }; RedirectableRequest.prototype._processResponse = function(response) { var statusCode = response.statusCode; if (this._options.trackRedirects) { this._redirects.push({ url: this._currentUrl, headers: response.headers, statusCode }); } var location = response.headers.location; if (!location || this._options.followRedirects === false || statusCode < 300 || statusCode >= 400) { response.responseUrl = this._currentUrl; response.redirects = this._redirects; this.emit("response", response); this._requestBodyBuffers = []; return; } destroyRequest(this._currentRequest); response.destroy(); if (++this._redirectCount > this._options.maxRedirects) { throw new TooManyRedirectsError(); } var requestHeaders; var beforeRedirect = this._options.beforeRedirect; if (beforeRedirect) { requestHeaders = Object.assign({ // The Host header was set by nativeProtocol.request Host: response.req.getHeader("host") }, this._options.headers); } var method = this._options.method; if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || // RFC7231§6.4.4: The 303 (See Other) status code indicates that // the server is redirecting the user agent to a different resource […] // A user agent can perform a retrieval request targeting that URI // (a GET or HEAD request if using HTTP) […] statusCode === 303 && !/^(?:GET|HEAD)$/.test(this._options.method)) { this._options.method = "GET"; this._requestBodyBuffers = []; removeMatchingHeaders(/^content-/i, this._options.headers); } var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); var currentUrlParts = parseUrl(this._currentUrl); var currentHost = currentHostHeader || currentUrlParts.host; var currentUrl = /^\w+:/.test(location) ? this._currentUrl : url.format(Object.assign(currentUrlParts, { host: currentHost })); var redirectUrl = resolveUrl(location, currentUrl); debug("redirecting to", redirectUrl.href); this._isRedirect = true; spreadUrlObject(redirectUrl, this._options); if (redirectUrl.protocol !== currentUrlParts.protocol && redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) { removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); } if (isFunction(beforeRedirect)) { var responseDetails = { headers: response.headers, statusCode }; var requestDetails = { url: currentUrl, method, headers: requestHeaders }; beforeRedirect(this._options, responseDetails, requestDetails); this._sanitizeOptions(this._options); } this._performRequest(); }; function wrap(protocols) { var exports = { maxRedirects: 21, maxBodyLength: 10 * 1024 * 1024 }; var nativeProtocols = {}; Object.keys(protocols).forEach(function(scheme) { var protocol = scheme + ":"; var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); function request(input, options, callback) { if (isURL(input)) { input = spreadUrlObject(input); } else if (isString(input)) { input = spreadUrlObject(parseUrl(input)); } else { callback = options; options = validateUrl(input); input = { protocol }; } if (isFunction(options)) { callback = options; options = null; } options = Object.assign({ maxRedirects: exports.maxRedirects, maxBodyLength: exports.maxBodyLength }, input, options); options.nativeProtocols = nativeProtocols; if (!isString(options.host) && !isString(options.hostname)) { options.hostname = "::1"; } assert.equal(options.protocol, protocol, "protocol mismatch"); debug("options", options); return new RedirectableRequest(options, callback); } function get(input, options, callback) { var wrappedRequest = wrappedProtocol.request(input, options, callback); wrappedRequest.end(); return wrappedRequest; } Object.defineProperties(wrappedProtocol, { request: { value: request, configurable: true, enumerable: true, writable: true }, get: { value: get, configurable: true, enumerable: true, writable: true } }); }); return exports; } function noop() { } function parseUrl(input) { var parsed; if (useNativeURL) { parsed = new URL$1(input); } else { parsed = validateUrl(url.parse(input)); if (!isString(parsed.protocol)) { throw new InvalidUrlError({ input }); } } return parsed; } function resolveUrl(relative, base) { return useNativeURL ? new URL$1(relative, base) : parseUrl(url.resolve(base, relative)); } function validateUrl(input) { if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { throw new InvalidUrlError({ input: input.href || input }); } if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { throw new InvalidUrlError({ input: input.href || input }); } return input; } function spreadUrlObject(urlObject, target) { var spread2 = target || {}; for (var key of preservedUrlFields) { spread2[key] = urlObject[key]; } if (spread2.hostname.startsWith("[")) { spread2.hostname = spread2.hostname.slice(1, -1); } if (spread2.port !== "") { spread2.port = Number(spread2.port); } spread2.path = spread2.search ? spread2.pathname + spread2.search : spread2.pathname; return spread2; } function removeMatchingHeaders(regex, headers) { var lastValue; for (var header in headers) { if (regex.test(header)) { lastValue = headers[header]; delete headers[header]; } } return lastValue === null || typeof lastValue === "undefined" ? void 0 : String(lastValue).trim(); } function createErrorType(code, message, baseClass) { function CustomError(properties) { Error.captureStackTrace(this, this.constructor); Object.assign(this, properties || {}); this.code = code; this.message = this.cause ? message + ": " + this.cause.message : message; } CustomError.prototype = new (baseClass || Error)(); Object.defineProperties(CustomError.prototype, { constructor: { value: CustomError, enumerable: false }, name: { value: "Error [" + code + "]", enumerable: false } }); return CustomError; } function destroyRequest(request, error) { for (var event of events) { request.removeListener(event, eventHandlers[event]); } request.on("error", noop); request.destroy(error); } function isSubdomain(subdomain, domain) { assert(isString(subdomain) && isString(domain)); var dot = subdomain.length - domain.length - 1; return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); } function isString(value) { return typeof value === "string" || value instanceof String; } function isFunction(value) { return typeof value === "function"; } function isBuffer(value) { return typeof value === "object" && "length" in value; } function isURL(value) { return URL$1 && value instanceof URL$1; } followRedirects$1.exports = wrap({ http, https }); followRedirects$1.exports.wrap = wrap; var followRedirectsExports = followRedirects$1.exports; const followRedirects = /* @__PURE__ */ getDefaultExportFromCjs(followRedirectsExports); const VERSION = "1.6.8"; function parseProtocol(url2) { const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url2); return match && match[1] || ""; } const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; function fromDataURI(uri, asBlob, options) { const _Blob = options && options.Blob || platform.classes.Blob; const protocol = parseProtocol(uri); if (asBlob === void 0 && _Blob) { asBlob = true; } if (protocol === "data") { uri = protocol.length ? uri.slice(protocol.length + 1) : uri; const match = DATA_URL_PATTERN.exec(uri); if (!match) { throw new AxiosError("Invalid URL", AxiosError.ERR_INVALID_URL); } const mime2 = match[1]; const isBase64 = match[2]; const body = match[3]; const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? "base64" : "utf8"); if (asBlob) { if (!_Blob) { throw new AxiosError("Blob is not supported", AxiosError.ERR_NOT_SUPPORT); } return new _Blob([buffer], { type: mime2 }); } return buffer; } throw new AxiosError("Unsupported protocol " + protocol, AxiosError.ERR_NOT_SUPPORT); } function throttle(fn, freq) { let timestamp = 0; const threshold = 1e3 / freq; let timer = null; return function throttled(force, args) { const now = Date.now(); if (force || now - timestamp > threshold) { if (timer) { clearTimeout(timer); timer = null; } timestamp = now; return fn.apply(null, args); } if (!timer) { timer = setTimeout(() => { timer = null; timestamp = Date.now(); return fn.apply(null, args); }, threshold - (now - timestamp)); } }; } function speedometer(samplesCount, min) { samplesCount = samplesCount || 10; const bytes = new Array(samplesCount); const timestamps = new Array(samplesCount); let head = 0; let tail = 0; let firstSampleTS; min = min !== void 0 ? min : 1e3; return function push(chunkLength) { const now = Date.now(); const startedAt = timestamps[tail]; if (!firstSampleTS) { firstSampleTS = now; } bytes[head] = chunkLength; timestamps[head] = now; let i = tail; let bytesCount = 0; while (i !== head) { bytesCount += bytes[i++]; i = i % samplesCount; } head = (head + 1) % samplesCount; if (head === tail) { tail = (tail + 1) % samplesCount; } if (now - firstSampleTS < min) { return; } const passed = startedAt && now - startedAt; return passed ? Math.round(bytesCount * 1e3 / passed) : void 0; }; } const kInternals = Symbol("internals"); class AxiosTransformStream extends stream.Transform { constructor(options) { options = utils$1.toFlatObject(options, { maxRate: 0, chunkSize: 64 * 1024, minChunkSize: 100, timeWindow: 500, ticksRate: 2, samplesCount: 15 }, null, (prop, source) => { return !utils$1.isUndefined(source[prop]); }); super({ readableHighWaterMark: options.chunkSize }); const self2 = this; const internals = this[kInternals] = { length: options.length, timeWindow: options.timeWindow, ticksRate: options.ticksRate, chunkSize: options.chunkSize, maxRate: options.maxRate, minChunkSize: options.minChunkSize, bytesSeen: 0, isCaptured: false, notifiedBytesLoaded: 0, ts: Date.now(), bytes: 0, onReadCallback: null }; const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); this.on("newListener", (event) => { if (event === "progress") { if (!internals.isCaptured) { internals.isCaptured = true; } } }); let bytesNotified = 0; internals.updateProgress = throttle(function throttledHandler() { const totalBytes = internals.length; const bytesTransferred = internals.bytesSeen; const progressBytes = bytesTransferred - bytesNotified; if (!progressBytes || self2.destroyed) return; const rate = _speedometer(progressBytes); bytesNotified = bytesTransferred; process.nextTick(() => { self2.emit("progress", { "loaded": bytesTransferred, "total": totalBytes, "progress": totalBytes ? bytesTransferred / totalBytes : void 0, "bytes": progressBytes, "rate": rate ? rate : void 0, "estimated": rate && totalBytes && bytesTransferred <= totalBytes ? (totalBytes - bytesTransferred) / rate : void 0 }); }); }, internals.ticksRate); const onFinish = () => { internals.updateProgress(true); }; this.once("end", onFinish); this.once("error", onFinish); } _read(size) { const internals = this[kInternals]; if (internals.onReadCallback) { internals.onReadCallback(); } return super._read(size); } _transform(chunk, encoding, callback) { const self2 = this; const internals = this[kInternals]; const maxRate = internals.maxRate; const readableHighWaterMark = this.readableHighWaterMark; const timeWindow = internals.timeWindow; const divider = 1e3 / timeWindow; const bytesThreshold = maxRate / divider; const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; function pushChunk(_chunk, _callback) { const bytes = Buffer.byteLength(_chunk); internals.bytesSeen += bytes; internals.bytes += bytes; if (internals.isCaptured) { internals.updateProgress(); } if (self2.push(_chunk)) { process.nextTick(_callback); } else { internals.onReadCallback = () => { internals.onReadCallback = null; process.nextTick(_callback); }; } } const transformChunk = (_chunk, _callback) => { const chunkSize = Buffer.byteLength(_chunk); let chunkRemainder = null; let maxChunkSize = readableHighWaterMark; let bytesLeft; let passed = 0; if (maxRate) { const now = Date.now(); if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { internals.ts = now; bytesLeft = bytesThreshold - internals.bytes; internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; passed = 0; } bytesLeft = bytesThreshold - internals.bytes; } if (maxRate) { if (bytesLeft <= 0) { return setTimeout(() => { _callback(null, _chunk); }, timeWindow - passed); } if (bytesLeft < maxChunkSize) { maxChunkSize = bytesLeft; } } if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { chunkRemainder = _chunk.subarray(maxChunkSize); _chunk = _chunk.subarray(0, maxChunkSize); } pushChunk(_chunk, chunkRemainder ? () => { process.nextTick(_callback, null, chunkRemainder); } : _callback); }; transformChunk(chunk, function transformNextChunk(err, _chunk) { if (err) { return callback(err); } if (_chunk) { transformChunk(_chunk, transformNextChunk); } else { callback(null); } }); } setLength(length) { this[kInternals].length = +length; return this; } } const AxiosTransformStream$1 = AxiosTransformStream; const { asyncIterator } = Symbol; const readBlob = async function* (blob) { if (blob.stream) { yield* blob.stream(); } else if (blob.arrayBuffer) { yield await blob.arrayBuffer(); } else if (blob[asyncIterator]) { yield* blob[asyncIterator](); } else { yield blob; } }; const BOUNDARY_ALPHABET = utils$1.ALPHABET.ALPHA_DIGIT + "-_"; const textEncoder = new require$$1.TextEncoder(); const CRLF = "\r\n"; const CRLF_BYTES = textEncoder.encode(CRLF); const CRLF_BYTES_COUNT = 2; class FormDataPart { constructor(name, value) { const { escapeName } = this.constructor; const isStringValue = utils$1.isString(value); let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${!isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ""}${CRLF}`; if (isStringValue) { value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); } else { headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`; } this.headers = textEncoder.encode(headers + CRLF); this.contentLength = isStringValue ? value.byteLength : value.size; this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; this.name = name; this.value = value; } async *encode() { yield this.headers; const { value } = this; if (utils$1.isTypedArray(value)) { yield value; } else { yield* readBlob(value); } yield CRLF_BYTES; } static escapeName(name) { return String(name).replace(/[\r\n"]/g, (match) => ({ "\r": "%0D", "\n": "%0A", '"': "%22" })[match]); } } const formDataToStream = (form, headersHandler, options) => { const { tag = "form-data-boundary", size = 25, boundary = tag + "-" + utils$1.generateString(size, BOUNDARY_ALPHABET) } = options || {}; if (!utils$1.isFormData(form)) { throw TypeError("FormData instance required"); } if (boundary.length < 1 || boundary.length > 70) { throw Error("boundary must be 10-70 characters long"); } const boundaryBytes = textEncoder.encode("--" + boundary + CRLF); const footerBytes = textEncoder.encode("--" + boundary + "--" + CRLF + CRLF); let contentLength = footerBytes.byteLength; const parts = Array.from(form.entries()).map(([name, value]) => { const part = new FormDataPart(name, value); contentLength += part.size; return part; }); contentLength += boundaryBytes.byteLength * parts.length; contentLength = utils$1.toFiniteNumber(contentLength); const computedHeaders = { "Content-Type": `multipart/form-data; boundary=${boundary}` }; if (Number.isFinite(contentLength)) { computedHeaders["Content-Length"] = contentLength; } headersHandler && headersHandler(computedHeaders); return stream.Readable.from(async function* () { for (const part of parts) { yield boundaryBytes; yield* part.encode(); } yield footerBytes; }()); }; class ZlibHeaderTransformStream extends stream.Transform { __transform(chunk, encoding, callback) { this.push(chunk); callback(); } _transform(chunk, encoding, callback) { if (chunk.length !== 0) { this._transform = this.__transform; if (chunk[0] !== 120) { const header = Buffer.alloc(2); header[0] = 120; header[1] = 156; this.push(header, encoding); } } this.__transform(chunk, encoding, callback); } } const callbackify = (fn, reducer) => { return utils$1.isAsyncFn(fn) ? function(...args) { const cb = args.pop(); fn.apply(this, args).then((value) => { try { reducer ? cb(null, ...reducer(value)) : cb(null, value); } catch (err) { cb(err); } }, cb); } : fn; }; const zlibOptions = { flush: zlib.constants.Z_SYNC_FLUSH, finishFlush: zlib.constants.Z_SYNC_FLUSH }; const brotliOptions = { flush: zlib.constants.BROTLI_OPERATION_FLUSH, finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH }; const isBrotliSupported = utils$1.isFunction(zlib.createBrotliDecompress); const { http: httpFollow, https: httpsFollow } = followRedirects; const isHttps = /https:?/; const supportedProtocols = platform.protocols.map((protocol) => { return protocol + ":"; }); function dispatchBeforeRedirect(options, responseDetails) { if (options.beforeRedirects.proxy) { options.beforeRedirects.proxy(options); } if (options.beforeRedirects.config) { options.beforeRedirects.config(options, responseDetails); } } function setProxy(options, configProxy, location) { let proxy = configProxy; if (!proxy && proxy !== false) { const proxyUrl = getProxyForUrl_1(location); if (proxyUrl) { proxy = new URL(proxyUrl); } } if (proxy) { if (proxy.username) { proxy.auth = (proxy.username || "") + ":" + (proxy.password || ""); } if (proxy.auth) { if (proxy.auth.username || proxy.auth.password) { proxy.auth = (proxy.auth.username || "") + ":" + (proxy.auth.password || ""); } const base64 = Buffer.from(proxy.auth, "utf8").toString("base64"); options.headers["Proxy-Authorization"] = "Basic " + base64; } options.headers.host = options.hostname + (options.port ? ":" + options.port : ""); const proxyHost = proxy.hostname || proxy.host; options.hostname = proxyHost; options.host = proxyHost; options.port = proxy.port; options.path = location; if (proxy.protocol) { options.protocol = proxy.protocol.includes(":") ? proxy.protocol : `${proxy.protocol}:`; } } options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { setProxy(redirectOptions, configProxy, redirectOptions.href); }; } const isHttpAdapterSupported = typeof process !== "undefined" && utils$1.kindOf(process) === "process"; const wrapAsync = (asyncExecutor) => { return new Promise((resolve, reject) => { let onDone; let isDone; const done = (value, isRejected) => { if (isDone) return; isDone = true; onDone && onDone(value, isRejected); }; const _resolve = (value) => { done(value); resolve(value); }; const _reject = (reason) => { done(reason, true); reject(reason); }; asyncExecutor(_resolve, _reject, (onDoneHandler) => onDone = onDoneHandler).catch(_reject); }); }; const resolveFamily = ({ address, family }) => { if (!utils$1.isString(address)) { throw TypeError("address must be a string"); } return { address, family: family || (address.indexOf(".") < 0 ? 6 : 4) }; }; const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : { address, family }); const httpAdapter = isHttpAdapterSupported && function httpAdapter2(config) { return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { let { data, lookup, family } = config; const { responseType, responseEncoding } = config; const method = config.method.toUpperCase(); let isDone; let rejected = false; let req; if (lookup) { const _lookup = callbackify(lookup, (value) => utils$1.isArray(value) ? value : [value]); lookup = (hostname, opt, cb) => { _lookup(hostname, opt, (err, arg0, arg1) => { if (err) { return cb(err); } const addresses = utils$1.isArray(arg0) ? arg0.map((addr) => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); }); }; } const emitter = new events$1.EventEmitter(); const onFinished = () => { if (config.cancelToken) { config.cancelToken.unsubscribe(abort2); } if (config.signal) { config.signal.removeEventListener("abort", abort2); } emitter.removeAllListeners(); }; onDone((value, isRejected) => { isDone = true; if (isRejected) { rejected = true; onFinished(); } }); function abort2(reason) { emitter.emit("abort", !reason || reason.type ? new CanceledError(null, config, req) : reason); } emitter.once("abort", reject); if (config.cancelToken || config.signal) { config.cancelToken && config.cancelToken.subscribe(abort2); if (config.signal) { config.signal.aborted ? abort2() : config.signal.addEventListener("abort", abort2); } } const fullPath = buildFullPath(config.baseURL, config.url); const parsed = new URL(fullPath, "http://localhost"); const protocol = parsed.protocol || supportedProtocols[0]; if (protocol === "data:") { let convertedData; if (method !== "GET") { return settle(resolve, reject, { status: 405, statusText: "method not allowed", headers: {}, config }); } try { convertedData = fromDataURI(config.url, responseType === "blob", { Blob: config.env && config.env.Blob }); } catch (err) { throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); } if (responseType === "text") { convertedData = convertedData.toString(responseEncoding); if (!responseEncoding || responseEncoding === "utf8") { convertedData = utils$1.stripBOM(convertedData); } } else if (responseType === "stream") { convertedData = stream.Readable.from(convertedData); } return settle(resolve, reject, { data: convertedData, status: 200, statusText: "OK", headers: new AxiosHeaders$1(), config }); } if (supportedProtocols.indexOf(protocol) === -1) { return reject(new AxiosError( "Unsupported protocol " + protocol, AxiosError.ERR_BAD_REQUEST, config )); } const headers = AxiosHeaders$1.from(config.headers).normalize(); headers.set("User-Agent", "axios/" + VERSION, false); const onDownloadProgress = config.onDownloadProgress; const onUploadProgress = config.onUploadProgress; const maxRate = config.maxRate; let maxUploadRate = void 0; let maxDownloadRate = void 0; if (utils$1.isSpecCompliantForm(data)) { const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); data = formDataToStream(data, (formHeaders) => { headers.set(formHeaders); }, { tag: `axios-${VERSION}-boundary`, boundary: userBoundary && userBoundary[1] || void 0 }); } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { headers.set(data.getHeaders()); if (!headers.hasContentLength()) { try { const knownLength = await require$$1.promisify(data.getLength).call(data); Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); } catch (e) { } } } else if (utils$1.isBlob(data)) { data.size && headers.setContentType(data.type || "application/octet-stream"); headers.setContentLength(data.size || 0); data = stream.Readable.from(readBlob(data)); } else if (data && !utils$1.isStream(data)) { if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) { data = Buffer.from(new Uint8Array(data)); } else if (utils$1.isString(data)) { data = Buffer.from(data, "utf-8"); } else { return reject(new AxiosError( "Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream", AxiosError.ERR_BAD_REQUEST, config )); } headers.setContentLength(data.length, false); if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { return reject(new AxiosError( "Request body larger than maxBodyLength limit", AxiosError.ERR_BAD_REQUEST, config )); } } const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); if (utils$1.isArray(maxRate)) { maxUploadRate = maxRate[0]; maxDownloadRate = maxRate[1]; } else { maxUploadRate = maxDownloadRate = maxRate; } if (data && (onUploadProgress || maxUploadRate)) { if (!utils$1.isStream(data)) { data = stream.Readable.from(data, { objectMode: false }); } data = stream.pipeline([data, new AxiosTransformStream$1({ length: contentLength, maxRate: utils$1.toFiniteNumber(maxUploadRate) })], utils$1.noop); onUploadProgress && data.on("progress", (progress) => { onUploadProgress(Object.assign(progress, { upload: true })); }); } let auth = void 0; if (config.auth) { const username = config.auth.username || ""; const password = config.auth.password || ""; auth = username + ":" + password; } if (!auth && parsed.username) { const urlUsername = parsed.username; const urlPassword = parsed.password; auth = urlUsername + ":" + urlPassword; } auth && headers.delete("authorization"); let path2; try { path2 = buildURL( parsed.pathname + parsed.search, config.params, config.paramsSerializer ).replace(/^\?/, ""); } catch (err) { const customErr = new Error(err.message); customErr.config = config; customErr.url = config.url; customErr.exists = true; return reject(customErr); } headers.set( "Accept-Encoding", "gzip, compress, deflate" + (isBrotliSupported ? ", br" : ""), false ); const options = { path: path2, method, headers: headers.toJSON(), agents: { http: config.httpAgent, https: config.httpsAgent }, auth, protocol, family, beforeRedirect: dispatchBeforeRedirect, beforeRedirects: {} }; !utils$1.isUndefined(lookup) && (options.lookup = lookup); if (config.socketPath) { options.socketPath = config.socketPath; } else { options.hostname = parsed.hostname; options.port = parsed.port; setProxy(options, config.proxy, protocol + "//" + parsed.hostname + (parsed.port ? ":" + parsed.port : "") + options.path); } let transport; const isHttpsRequest = isHttps.test(options.protocol); options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; if (config.transport) { transport = config.transport; } else if (config.maxRedirects === 0) { transport = isHttpsRequest ? require$$4 : require$$3; } else { if (config.maxRedirects) { options.maxRedirects = config.maxRedirects; } if (config.beforeRedirect) { options.beforeRedirects.config = config.beforeRedirect; } transport = isHttpsRequest ? httpsFollow : httpFollow; } if (config.maxBodyLength > -1) { options.maxBodyLength = config.maxBodyLength; } else { options.maxBodyLength = Infinity; } if (config.insecureHTTPParser) { options.insecureHTTPParser = config.insecureHTTPParser; } req = transport.request(options, function handleResponse(res) { if (req.destroyed) return; const streams = [res]; const responseLength = +res.headers["content-length"]; if (onDownloadProgress) { const transformStream = new AxiosTransformStream$1({ length: utils$1.toFiniteNumber(responseLength), maxRate: utils$1.toFiniteNumber(maxDownloadRate) }); onDownloadProgress && transformStream.on("progress", (progress) => { onDownloadProgress(Object.assign(progress, { download: true })); }); streams.push(transformStream); } let responseStream = res; const lastRequest = res.req || req; if (config.decompress !== false && res.headers["content-encoding"]) { if (method === "HEAD" || res.statusCode === 204) { delete res.headers["content-encoding"]; } switch ((res.headers["content-encoding"] || "").toLowerCase()) { case "gzip": case "x-gzip": case "compress": case "x-compress": streams.push(zlib.createUnzip(zlibOptions)); delete res.headers["content-encoding"]; break; case "deflate": streams.push(new ZlibHeaderTransformStream()); streams.push(zlib.createUnzip(zlibOptions)); delete res.headers["content-encoding"]; break; case "br": if (isBrotliSupported) { streams.push(zlib.createBrotliDecompress(brotliOptions)); delete res.headers["content-encoding"]; } } } responseStream = streams.length > 1 ? stream.pipeline(streams, utils$1.noop) : streams[0]; const offListeners = stream.finished(responseStream, () => { offListeners(); onFinished(); }); const response = { status: res.statusCode, statusText: res.statusMessage, headers: new AxiosHeaders$1(res.headers), config, request: lastRequest }; if (responseType === "stream") { response.data = responseStream; settle(resolve, reject, response); } else { const responseBuffer = []; let totalResponseBytes = 0; responseStream.on("data", function handleStreamData(chunk) { responseBuffer.push(chunk); totalResponseBytes += chunk.length; if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { rejected = true; responseStream.destroy(); reject(new AxiosError( "maxContentLength size of " + config.maxContentLength + " exceeded", AxiosError.ERR_BAD_RESPONSE, config, lastRequest )); } }); responseStream.on("aborted", function handlerStreamAborted() { if (rejected) { return; } const err = new AxiosError( "maxContentLength size of " + config.maxContentLength + " exceeded", AxiosError.ERR_BAD_RESPONSE, config, lastRequest ); responseStream.destroy(err); reject(err); }); responseStream.on("error", function handleStreamError(err) { if (req.destroyed) return; reject(AxiosError.from(err, null, config, lastRequest)); }); responseStream.on("end", function handleStreamEnd() { try { let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); if (responseType !== "arraybuffer") { responseData = responseData.toString(responseEncoding); if (!responseEncoding || responseEncoding === "utf8") { responseData = utils$1.stripBOM(responseData); } } response.data = responseData; } catch (err) { return reject(AxiosError.from(err, null, config, response.request, response)); } settle(resolve, reject, response); }); } emitter.once("abort", (err) => { if (!responseStream.destroyed) { responseStream.emit("error", err); responseStream.destroy(); } }); }); emitter.once("abort", (err) => { reject(err); req.destroy(err); }); req.on("error", function handleRequestError(err) { reject(AxiosError.from(err, null, config, req)); }); req.on("socket", function handleRequestSocket(socket) { socket.setKeepAlive(true, 1e3 * 60); }); if (config.timeout) { const timeout = parseInt(config.timeout, 10); if (Number.isNaN(timeout)) { reject(new AxiosError( "error trying to parse `config.timeout` to int", AxiosError.ERR_BAD_OPTION_VALUE, config, req )); return; } req.setTimeout(timeout, function handleRequestTimeout() { if (isDone) return; let timeoutErrorMessage = config.timeout ? "timeout of " + config.timeout + "ms exceeded" : "timeout exceeded"; const transitional2 = config.transitional || transitionalDefaults; if (config.timeoutErrorMessage) { timeoutErrorMessage = config.timeoutErrorMessage; } reject(new AxiosError( timeoutErrorMessage, transitional2.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, req )); abort2(); }); } if (utils$1.isStream(data)) { let ended = false; let errored = false; data.on("end", () => { ended = true; }); data.once("error", (err) => { errored = true; req.destroy(err); }); data.on("close", () => { if (!ended && !errored) { abort2(new CanceledError("Request stream has been aborted", config, req)); } }); data.pipe(req); } else { req.end(data); } }); }; const cookies = platform.hasStandardBrowserEnv ? ( // Standard browser envs support document.cookie { write(name, value, expires, path2, domain, secure) { const cookie = [name + "=" + encodeURIComponent(value)]; utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString()); utils$1.isString(path2) && cookie.push("path=" + path2); utils$1.isString(domain) && cookie.push("domain=" + domain); secure === true && cookie.push("secure"); document.cookie = cookie.join("; "); }, read(name) { const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)")); return match ? decodeURIComponent(match[3]) : null; }, remove(name) { this.write(name, "", Date.now() - 864e5); } } ) : ( // Non-standard browser env (web workers, react-native) lack needed support. { write() { }, read() { return null; }, remove() { } } ); const isURLSameOrigin = platform.hasStandardBrowserEnv ? ( // Standard browser envs have full support of the APIs needed to test // whether the request URL is of the same origin as current location. function standardBrowserEnv() { const msie = /(msie|trident)/i.test(navigator.userAgent); const urlParsingNode = document.createElement("a"); let originURL; function resolveURL(url2) { let href = url2; if (msie) { urlParsingNode.setAttribute("href", href); href = urlParsingNode.href; } urlParsingNode.setAttribute("href", href); return { href: urlParsingNode.href, protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, "") : "", host: urlParsingNode.host, search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, "") : "", hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, "") : "", hostname: urlParsingNode.hostname, port: urlParsingNode.port, pathname: urlParsingNode.pathname.charAt(0) === "/" ? urlParsingNode.pathname : "/" + urlParsingNode.pathname }; } originURL = resolveURL(window.location.href); return function isURLSameOrigin2(requestURL) { const parsed = utils$1.isString(requestURL) ? resolveURL(requestURL) : requestURL; return parsed.protocol === originURL.protocol && parsed.host === originURL.host; }; }() ) : ( // Non standard browser envs (web workers, react-native) lack needed support. /* @__PURE__ */ function nonStandardBrowserEnv() { return function isURLSameOrigin2() { return true; }; }() ); function progressEventReducer(listener, isDownloadStream) { let bytesNotified = 0; const _speedometer = speedometer(50, 250); return (e) => { const loaded = e.loaded; const total = e.lengthComputable ? e.total : void 0; const progressBytes = loaded - bytesNotified; const rate = _speedometer(progressBytes); const inRange = loaded <= total; bytesNotified = loaded; const data = { loaded, total, progress: total ? loaded / total : void 0, bytes: progressBytes, rate: rate ? rate : void 0, estimated: rate && total && inRange ? (total - loaded) / rate : void 0, event: e }; data[isDownloadStream ? "download" : "upload"] = true; listener(data); }; } const isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined"; const xhrAdapter = isXHRAdapterSupported && function(config) { return new Promise(function dispatchXhrRequest(resolve, reject) { let requestData = config.data; const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); let { responseType, withXSRFToken } = config; let onCanceled; function done() { if (config.cancelToken) { config.cancelToken.unsubscribe(onCanceled); } if (config.signal) { config.signal.removeEventListener("abort", onCanceled); } } let contentType; if (utils$1.isFormData(requestData)) { if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { requestHeaders.setContentType(false); } else if ((contentType = requestHeaders.getContentType()) !== false) { const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : []; requestHeaders.setContentType([type || "multipart/form-data", ...tokens].join("; ")); } } let request = new XMLHttpRequest(); if (config.auth) { const username = config.auth.username || ""; const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ""; requestHeaders.set("Authorization", "Basic " + btoa(username + ":" + password)); } const fullPath = buildFullPath(config.baseURL, config.url); request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); request.timeout = config.timeout; function onloadend() { if (!request) { return; } const responseHeaders = AxiosHeaders$1.from( "getAllResponseHeaders" in request && request.getAllResponseHeaders() ); const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response; const response = { data: responseData, status: request.status, statusText: request.statusText, headers: responseHeaders, config, request }; settle(function _resolve(value) { resolve(value); done(); }, function _reject(err) { reject(err); done(); }, response); request = null; } if ("onloadend" in request) { request.onloadend = onloadend; } else { request.onreadystatechange = function handleLoad() { if (!request || request.readyState !== 4) { return; } if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) { return; } setTimeout(onloadend); }; } request.onabort = function handleAbort() { if (!request) { return; } reject(new AxiosError("Request aborted", AxiosError.ECONNABORTED, config, request)); request = null; }; request.onerror = function handleError() { reject(new AxiosError("Network Error", AxiosError.ERR_NETWORK, config, request)); request = null; }; request.ontimeout = function handleTimeout() { let timeoutErrorMessage = config.timeout ? "timeout of " + config.timeout + "ms exceeded" : "timeout exceeded"; const transitional2 = config.transitional || transitionalDefaults; if (config.timeoutErrorMessage) { timeoutErrorMessage = config.timeoutErrorMessage; } reject(new AxiosError( timeoutErrorMessage, transitional2.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request )); request = null; }; if (platform.hasStandardBrowserEnv) { withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) { const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); if (xsrfValue) { requestHeaders.set(config.xsrfHeaderName, xsrfValue); } } } requestData === void 0 && requestHeaders.setContentType(null); if ("setRequestHeader" in request) { utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { request.setRequestHeader(key, val); }); } if (!utils$1.isUndefined(config.withCredentials)) { request.withCredentials = !!config.withCredentials; } if (responseType && responseType !== "json") { request.responseType = config.responseType; } if (typeof config.onDownloadProgress === "function") { request.addEventListener("progress", progressEventReducer(config.onDownloadProgress, true)); } if (typeof config.onUploadProgress === "function" && request.upload) { request.upload.addEventListener("progress", progressEventReducer(config.onUploadProgress)); } if (config.cancelToken || config.signal) { onCanceled = (cancel) => { if (!request) { return; } reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); request.abort(); request = null; }; config.cancelToken && config.cancelToken.subscribe(onCanceled); if (config.signal) { config.signal.aborted ? onCanceled() : config.signal.addEventListener("abort", onCanceled); } } const protocol = parseProtocol(fullPath); if (protocol && platform.protocols.indexOf(protocol) === -1) { reject(new AxiosError("Unsupported protocol " + protocol + ":", AxiosError.ERR_BAD_REQUEST, config)); return; } request.send(requestData || null); }); }; const knownAdapters = { http: httpAdapter, xhr: xhrAdapter }; utils$1.forEach(knownAdapters, (fn, value) => { if (fn) { try { Object.defineProperty(fn, "name", { value }); } catch (e) { } Object.defineProperty(fn, "adapterName", { value }); } }); const renderReason = (reason) => `- ${reason}`; const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; const adapters = { getAdapter: (adapters2) => { adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2]; const { length } = adapters2; let nameOrAdapter; let adapter; const rejectedReasons = {}; for (let i = 0; i < length; i++) { nameOrAdapter = adapters2[i]; let id; adapter = nameOrAdapter; if (!isResolvedHandle(nameOrAdapter)) { adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; if (adapter === void 0) { throw new AxiosError(`Unknown adapter '${id}'`); } } if (adapter) { break; } rejectedReasons[id || "#" + i] = adapter; } if (!adapter) { const reasons = Object.entries(rejectedReasons).map( ([id, state2]) => `adapter ${id} ` + (state2 === false ? "is not supported by the environment" : "is not available in the build") ); let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified"; throw new AxiosError( `There is no suitable adapter to dispatch the request ` + s, "ERR_NOT_SUPPORT" ); } return adapter; }, adapters: knownAdapters }; function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); } if (config.signal && config.signal.aborted) { throw new CanceledError(null, config); } } function dispatchRequest(config) { throwIfCancellationRequested(config); config.headers = AxiosHeaders$1.from(config.headers); config.data = transformData.call( config, config.transformRequest ); if (["post", "put", "patch"].indexOf(config.method) !== -1) { config.headers.setContentType("application/x-www-form-urlencoded", false); } const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); return adapter(config).then(function onAdapterResolution(response) { throwIfCancellationRequested(config); response.data = transformData.call( config, config.transformResponse, response ); response.headers = AxiosHeaders$1.from(response.headers); return response; }, function onAdapterRejection(reason) { if (!isCancel(reason)) { throwIfCancellationRequested(config); if (reason && reason.response) { reason.response.data = transformData.call( config, config.transformResponse, reason.response ); reason.response.headers = AxiosHeaders$1.from(reason.response.headers); } } return Promise.reject(reason); }); } const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; function mergeConfig(config1, config2) { config2 = config2 || {}; const config = {}; function getMergedValue(target, source, caseless) { if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { return utils$1.merge.call({ caseless }, target, source); } else if (utils$1.isPlainObject(source)) { return utils$1.merge({}, source); } else if (utils$1.isArray(source)) { return source.slice(); } return source; } function mergeDeepProperties(a, b, caseless) { if (!utils$1.isUndefined(b)) { return getMergedValue(a, b, caseless); } else if (!utils$1.isUndefined(a)) { return getMergedValue(void 0, a, caseless); } } function valueFromConfig2(a, b) { if (!utils$1.isUndefined(b)) { return getMergedValue(void 0, b); } } function defaultToConfig2(a, b) { if (!utils$1.isUndefined(b)) { return getMergedValue(void 0, b); } else if (!utils$1.isUndefined(a)) { return getMergedValue(void 0, a); } } function mergeDirectKeys(a, b, prop) { if (prop in config2) { return getMergedValue(a, b); } else if (prop in config1) { return getMergedValue(void 0, a); } } const mergeMap = { url: valueFromConfig2, method: valueFromConfig2, data: valueFromConfig2, baseURL: defaultToConfig2, transformRequest: defaultToConfig2, transformResponse: defaultToConfig2, paramsSerializer: defaultToConfig2, timeout: defaultToConfig2, timeoutMessage: defaultToConfig2, withCredentials: defaultToConfig2, withXSRFToken: defaultToConfig2, adapter: defaultToConfig2, responseType: defaultToConfig2, xsrfCookieName: defaultToConfig2, xsrfHeaderName: defaultToConfig2, onUploadProgress: defaultToConfig2, onDownloadProgress: defaultToConfig2, decompress: defaultToConfig2, maxContentLength: defaultToConfig2, maxBodyLength: defaultToConfig2, beforeRedirect: defaultToConfig2, transport: defaultToConfig2, httpAgent: defaultToConfig2, httpsAgent: defaultToConfig2, cancelToken: defaultToConfig2, socketPath: defaultToConfig2, responseEncoding: defaultToConfig2, validateStatus: mergeDirectKeys, headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) }; utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { const merge2 = mergeMap[prop] || mergeDeepProperties; const configValue = merge2(config1[prop], config2[prop], prop); utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue); }); return config; } const validators$1 = {}; ["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i) => { validators$1[type] = function validator2(thing) { return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type; }; }); const deprecatedWarnings = {}; validators$1.transitional = function transitional(validator2, version, message) { function formatMessage(opt, desc) { return "[Axios v" + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : ""); } return (value, opt, opts) => { if (validator2 === false) { throw new AxiosError( formatMessage(opt, " has been removed" + (version ? " in " + version : "")), AxiosError.ERR_DEPRECATED ); } if (version && !deprecatedWarnings[opt]) { deprecatedWarnings[opt] = true; console.warn( formatMessage( opt, " has been deprecated since v" + version + " and will be removed in the near future" ) ); } return validator2 ? validator2(value, opt, opts) : true; }; }; function assertOptions(options, schema, allowUnknown) { if (typeof options !== "object") { throw new AxiosError("options must be an object", AxiosError.ERR_BAD_OPTION_VALUE); } const keys = Object.keys(options); let i = keys.length; while (i-- > 0) { const opt = keys[i]; const validator2 = schema[opt]; if (validator2) { const value = options[opt]; const result = value === void 0 || validator2(value, opt, options); if (result !== true) { throw new AxiosError("option " + opt + " must be " + result, AxiosError.ERR_BAD_OPTION_VALUE); } continue; } if (allowUnknown !== true) { throw new AxiosError("Unknown option " + opt, AxiosError.ERR_BAD_OPTION); } } } const validator = { assertOptions, validators: validators$1 }; const validators = validator.validators; class Axios { constructor(instanceConfig) { this.defaults = instanceConfig; this.interceptors = { request: new InterceptorManager(), response: new InterceptorManager() }; } /** * Dispatch a request * * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) * @param {?Object} config * * @returns {Promise} The Promise to be fulfilled */ async request(configOrUrl, config) { try { return await this._request(configOrUrl, config); } catch (err) { if (err instanceof Error) { let dummy; Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : dummy = new Error(); const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, "") : ""; if (!err.stack) { err.stack = stack; } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ""))) { err.stack += "\n" + stack; } } throw err; } } _request(configOrUrl, config) { if (typeof configOrUrl === "string") { config = config || {}; config.url = configOrUrl; } else { config = configOrUrl || {}; } config = mergeConfig(this.defaults, config); const { transitional: transitional2, paramsSerializer, headers } = config; if (transitional2 !== void 0) { validator.assertOptions(transitional2, { silentJSONParsing: validators.transitional(validators.boolean), forcedJSONParsing: validators.transitional(validators.boolean), clarifyTimeoutError: validators.transitional(validators.boolean) }, false); } if (paramsSerializer != null) { if (utils$1.isFunction(paramsSerializer)) { config.paramsSerializer = { serialize: paramsSerializer }; } else { validator.assertOptions(paramsSerializer, { encode: validators.function, serialize: validators.function }, true); } } config.method = (config.method || this.defaults.method || "get").toLowerCase(); let contextHeaders = headers && utils$1.merge( headers.common, headers[config.method] ); headers && utils$1.forEach( ["delete", "get", "head", "post", "put", "patch", "common"], (method) => { delete headers[method]; } ); config.headers = AxiosHeaders$1.concat(contextHeaders, headers); const requestInterceptorChain = []; let synchronousRequestInterceptors = true; this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) { return; } synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); }); const responseInterceptorChain = []; this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); }); let promise; let i = 0; let len; if (!synchronousRequestInterceptors) { const chain = [dispatchRequest.bind(this), void 0]; chain.unshift.apply(chain, requestInterceptorChain); chain.push.apply(chain, responseInterceptorChain); len = chain.length; promise = Promise.resolve(config); while (i < len) { promise = promise.then(chain[i++], chain[i++]); } return promise; } len = requestInterceptorChain.length; let newConfig = config; i = 0; while (i < len) { const onFulfilled = requestInterceptorChain[i++]; const onRejected = requestInterceptorChain[i++]; try { newConfig = onFulfilled(newConfig); } catch (error) { onRejected.call(this, error); break; } } try { promise = dispatchRequest.call(this, newConfig); } catch (error) { return Promise.reject(error); } i = 0; len = responseInterceptorChain.length; while (i < len) { promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); } return promise; } getUri(config) { config = mergeConfig(this.defaults, config); const fullPath = buildFullPath(config.baseURL, config.url); return buildURL(fullPath, config.params, config.paramsSerializer); } } utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) { Axios.prototype[method] = function(url2, config) { return this.request(mergeConfig(config || {}, { method, url: url2, data: (config || {}).data })); }; }); utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) { function generateHTTPMethod(isForm) { return function httpMethod(url2, data, config) { return this.request(mergeConfig(config || {}, { method, headers: isForm ? { "Content-Type": "multipart/form-data" } : {}, url: url2, data })); }; } Axios.prototype[method] = generateHTTPMethod(); Axios.prototype[method + "Form"] = generateHTTPMethod(true); }); const Axios$1 = Axios; class CancelToken { constructor(executor) { if (typeof executor !== "function") { throw new TypeError("executor must be a function."); } let resolvePromise; this.promise = new Promise(function promiseExecutor(resolve) { resolvePromise = resolve; }); const token = this; this.promise.then((cancel) => { if (!token._listeners) return; let i = token._listeners.length; while (i-- > 0) { token._listeners[i](cancel); } token._listeners = null; }); this.promise.then = (onfulfilled) => { let _resolve; const promise = new Promise((resolve) => { token.subscribe(resolve); _resolve = resolve; }).then(onfulfilled); promise.cancel = function reject() { token.unsubscribe(_resolve); }; return promise; }; executor(function cancel(message, config, request) { if (token.reason) { return; } token.reason = new CanceledError(message, config, request); resolvePromise(token.reason); }); } /** * Throws a `CanceledError` if cancellation has been requested. */ throwIfRequested() { if (this.reason) { throw this.reason; } } /** * Subscribe to the cancel signal */ subscribe(listener) { if (this.reason) { listener(this.reason); return; } if (this._listeners) { this._listeners.push(listener); } else { this._listeners = [listener]; } } /** * Unsubscribe from the cancel signal */ unsubscribe(listener) { if (!this._listeners) { return; } const index = this._listeners.indexOf(listener); if (index !== -1) { this._listeners.splice(index, 1); } } /** * Returns an object that contains a new `CancelToken` and a function that, when called, * cancels the `CancelToken`. */ static source() { let cancel; const token = new CancelToken(function executor(c) { cancel = c; }); return { token, cancel }; } } const CancelToken$1 = CancelToken; function spread(callback) { return function wrap2(arr) { return callback.apply(null, arr); }; } function isAxiosError(payload) { return utils$1.isObject(payload) && payload.isAxiosError === true; } const HttpStatusCode = { 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(HttpStatusCode).forEach(([key, value]) => { HttpStatusCode[value] = key; }); const HttpStatusCode$1 = HttpStatusCode; function createInstance(defaultConfig) { const context = new Axios$1(defaultConfig); const instance = bind(Axios$1.prototype.request, context); utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true }); utils$1.extend(instance, context, null, { allOwnKeys: true }); instance.create = function create(instanceConfig) { return createInstance(mergeConfig(defaultConfig, instanceConfig)); }; return instance; } const axios = createInstance(defaults$1); axios.Axios = Axios$1; axios.CanceledError = CanceledError; axios.CancelToken = CancelToken$1; axios.isCancel = isCancel; axios.VERSION = VERSION; axios.toFormData = toFormData; axios.AxiosError = AxiosError; axios.Cancel = axios.CanceledError; axios.all = function all(promises) { return Promise.all(promises); }; axios.spread = spread; axios.isAxiosError = isAxiosError; axios.mergeConfig = mergeConfig; axios.AxiosHeaders = AxiosHeaders$1; axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); axios.getAdapter = adapters.getAdapter; axios.HttpStatusCode = HttpStatusCode$1; axios.default = axios; let win; electron.app.whenReady().then(() => { win = new electron.BrowserWindow({ title: "银收客", width: 1024, height: 768, fullscreenable: true, fullscreen: process.env.VITE_DEV_SERVER_URL ? false : true, simpleFullscreen: true, frame: process.env.VITE_DEV_SERVER_URL ? true : false, webPreferences: { // 集成网页和 Node.js,也就是在渲染进程中,可以调用 Node.js 方法 nodeIntegration: true, contextIsolation: false } }); if (process.env.VITE_DEV_SERVER_URL) { win.loadURL(process.env.VITE_DEV_SERVER_URL); } else { win.loadFile(path$1.resolve(__dirname, "../dist/index.html")); } const installExe = async (exePath) => { return new Promise((resolve, reject) => { child_process.exec(`${exePath}`, (error, stdout, stderr) => { if (error) { reject(error); } else { resolve(stdout); } }); }); }; electron.ipcMain.on("downloadFile", async (event, arg) => { let _parmas = JSON.parse(arg); axios({ url: _parmas.url, method: "get", responseType: "arraybuffer", onDownloadProgress: (propessEvent) => { const propress = Math.round( propessEvent.loaded / propessEvent.total * 100 ); win.webContents.send("updateProgress", propress); } }).then(async (response) => { try { const tempFilePath = path$1.join( electron.app.getPath("temp"), "temp-exe-file.exe" ); require$$6.writeFileSync(tempFilePath, response.data); setTimeout(() => { win = null; electron.app.exit(); }, 1500); const installResult = await installExe(tempFilePath); console.log(`安装结果:${installResult}`); } catch (error) { console.log("error", error); } }).catch((err) => { console.log("下载失败", JSON.stringify(err)); }); }); electron.app.on("activate", () => { if (electron.BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); electron.ipcMain.on("quitHandler", (_, msg) => { win = null; electron.app.exit(); }); electron.ipcMain.on("getPrintList", () => { win.webContents.getPrintersAsync().then((res) => { win.webContents.send("printList", res); }); }); electron.ipcMain.on("getOSmacSync", () => { let mac = ""; if (os.networkInterfaces().WLAN) { mac = os.networkInterfaces().WLAN[0].mac; console.log("wlan.mac===", mac); } else { mac = os.networkInterfaces()["以太网"][0].mac; console.log("以太网.mac===", mac); } win.webContents.send("getOSmacRes", mac); }); const tagPrintWin = new electron.BrowserWindow({ show: false, width: 360, height: 240, webPreferences: { nodeIntegration: true, contextIsolation: false } }); if (process.env.VITE_DEV_SERVER_URL) { tagPrintWin.loadFile(path$1.join(__dirname, "../public/tag_print.html")); } else { tagPrintWin.loadFile(path$1.resolve(__dirname, "../dist/tag_print.html")); } electron.ipcMain.on("printerTagSync", (event, arg) => { console.log(arg); tagPrintWin.webContents.send("getParams", arg); }); electron.ipcMain.on("printTagStart", (event, arg) => { const _parmas = JSON.parse(arg); let name = _parmas.deviceName; tagPrintWin.webContents.print({ silent: true, deviceName: name, pageSize: { width: 45e3, height: 3e4 }, scaleFactor: 80, landscape: false, margins: { marginType: "none", top: 0, bottom: 0, left: 0, right: 0 }, dpi: { horizontal: 203, vertical: 203 } }); }); const gotTheLock = electron.app.requestSingleInstanceLock(); if (!gotTheLock) { electron.app.quit(); } else { electron.app.on("second-instance", (event, commandLine, workingDirectory) => { if (win) { if (win.isMinimized()) win.restore(); win.focus(); win.show(); } }); } win.on("close", (e) => { e.preventDefault(); win.webContents.send("showCloseDialog"); }); }); electron.app.on("window-all-closed", () => { if (process.platform !== "darwin") electron.app.quit(); });