diff --git a/build/frontend-legacy/package-lock.json b/build/frontend-legacy/package-lock.json index 35a27811a5796..7c036bff88f09 100644 --- a/build/frontend-legacy/package-lock.json +++ b/build/frontend-legacy/package-lock.json @@ -7237,25 +7237,25 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -7273,6 +7273,28 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -7281,21 +7303,15 @@ "license": "MIT", "peer": true }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "peer": true, - "dependencies": { - "side-channel": "^1.0.6" - }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, "node_modules/bonjour-service": { @@ -15063,9 +15079,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, "license": "BSD-3-Clause", "peer": true, @@ -15159,18 +15175,51 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "peer": true, "engines": { "node": ">= 0.8" } diff --git a/dist/3556-3556.js.license b/dist/3556-3556.js.license index 66c86428908f7..52273c10f5bb4 100644 --- a/dist/3556-3556.js.license +++ b/dist/3556-3556.js.license @@ -342,7 +342,7 @@ This file is generated from multiple sources. Included packages: - version: 1.4.1 - license: MIT - qs - - version: 6.14.1 + - version: 6.14.2 - license: BSD-3-Clause - querystringify - version: 2.2.0 diff --git a/dist/4906-4906.js.license b/dist/4906-4906.js.license index 66c86428908f7..52273c10f5bb4 100644 --- a/dist/4906-4906.js.license +++ b/dist/4906-4906.js.license @@ -342,7 +342,7 @@ This file is generated from multiple sources. Included packages: - version: 1.4.1 - license: MIT - qs - - version: 6.14.1 + - version: 6.14.2 - license: BSD-3-Clause - querystringify - version: 2.2.0 diff --git a/dist/7039-7039.js.license b/dist/7039-7039.js.license index 66c86428908f7..52273c10f5bb4 100644 --- a/dist/7039-7039.js.license +++ b/dist/7039-7039.js.license @@ -342,7 +342,7 @@ This file is generated from multiple sources. Included packages: - version: 1.4.1 - license: MIT - qs - - version: 6.14.1 + - version: 6.14.2 - license: BSD-3-Clause - querystringify - version: 2.2.0 diff --git a/dist/8124-8124.js.license b/dist/8124-8124.js.license index 66c86428908f7..52273c10f5bb4 100644 --- a/dist/8124-8124.js.license +++ b/dist/8124-8124.js.license @@ -342,7 +342,7 @@ This file is generated from multiple sources. Included packages: - version: 1.4.1 - license: MIT - qs - - version: 6.14.1 + - version: 6.14.2 - license: BSD-3-Clause - querystringify - version: 2.2.0 diff --git a/dist/comments-comments-app.js b/dist/comments-comments-app.js index 0bf548e195297..589558f781f22 100644 --- a/dist/comments-comments-app.js +++ b/dist/comments-comments-app.js @@ -1,2 +1,2 @@ -(()=>{var e,r,n,o={48439(e,r,n){"use strict";const o=(0,n(35947).YK)().setApp("comments").detectUser().build();var i=n(21777),s=n(53334),a=n(10810),c=n(85471),l=n(85168),u=n(57579),p=n(74095),h=n(42507),f=n(57578);const d={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var g=n(14486);const m=(0,g.A)(d,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon message-reply-text-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var y=n(83239),b=n(57505),v=n(24764),w=n(15502),A=n(41944),x=n(4604),_=n(88289),E=n(77764),S=n(33691),O=n(66001),T=n(16502),C=n(37793),N=n(61160);function R(t){if(!j(t))throw new Error("Parameter was not an error")}function j(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}class P extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:o}=function(t){let e,r="";if(0===t.length)e={};else if(j(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}(r);let i=o;if(n.cause&&(i=`${i}: ${n.cause.message}`),super(i),this.message=i,n.name&&"string"==typeof n.name?this.name=n.name:this.name="Layerr",n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return R(t),t._cause&&j(t._cause)?t._cause:null}static fullStack(t){R(t);const e=P.cause(t);return e?`${t.stack}\ncaused by: ${P.fullStack(e)}`:t.stack??""}static info(t){R(t);const e={},r=P.cause(t);return r&&Object.assign(e,P.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}var k=n(12692);const I="__PATH_SEPARATOR_POSIX__",M="__PATH_SEPARATOR_WINDOWS__";function L(t){try{const e=t.replace(/\//g,I).replace(/\\\\/g,M);return encodeURIComponent(e).split(M).join("\\\\").split(I).join("/")}catch(t){throw new P(t,"Failed encoding path")}}function D(t){return t.startsWith("/")?t:"/"+t}function $(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function U(t){let e=new N(t).pathname;return e.length<=0&&(e="/"),$(e)}function F(...t){return function(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}var B=n(83503);function W(t,e){const r=t.url.replace("//",""),n=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),o=t.method?t.method.toUpperCase():"GET",i=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",s=`00000000${e.nc}`.slice(-8),a=function(t,e,r,n,o,i,s){const a=s||B(`${e}:${r}:${n}`);return t&&"md5-sess"===t.toLowerCase()?B(`${a}:${o}:${i}`):a}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),c=B(`${o}:${n}`),l=B(i?`${a}:${e.nonce}:${s}:${e.cnonce}:${i}:${c}`:`${a}:${e.nonce}:${c}`),u={username:e.username,realm:e.realm,nonce:e.nonce,uri:n,qop:i,response:l,nc:s,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in u)u[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${u[t]}`):p.push(`${t}="${u[t]}"`));return`Digest ${p.join(", ")}`}function q(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var H,V,z,G,K,Y,X=n(85914);function Z(t){return X.decode(t)}function Q(t,e){var r;return`Basic ${r=`${t}:${e}`,X.encode(r)}`}new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint,function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(H||(H={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(V||(V={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(z||(z={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(G||(G={})),new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(K||(K={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(Y||(Y={}));const J="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,tt=J.fetch.bind(J);var et,rt;function nt(t,e,r,n,o){switch(t.authType){case et.Auto:e&&r&&(t.headers.Authorization=Q(e,r));break;case et.Digest:t.digest=function(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}(e,r,o);break;case et.None:break;case et.Password:t.headers.Authorization=Q(e,r);break;case et.Token:t.headers.Authorization=`${(i=n).token_type} ${i.access_token}`;break;default:throw new P({info:{code:rt.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}var i}J.Headers,J.Request,J.Response,function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(et||(et={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(rt||(rt={}));var ot=n(11568),it=n(11083);const st="@@HOTPATCHER",at=()=>{};function ct(t){return{original:t,methods:[t],final:!1}}class lt{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=st}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==st)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||at)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return function(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=ct(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(ct(e),{original:r})}else this.configuration.registry[t]=ct(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}let ut=null;function pt(){return"string"==typeof TARGET&&"react-native"===TARGET}function ht(){return"string"==typeof TARGET&&"web"===TARGET}function ft(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function dt(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?gt(e,t):ft(t)}return e}function gt(t,e){const r=ft(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?gt(r[t],e[t]):ft(e[t]):r[t]=e[t]:r[t]=e[t]}),r}function mt(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function yt(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}var bt=n(88310);const vt="function"==typeof ArrayBuffer,{toString:wt}=Object.prototype;function At(t){return vt&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===wt.call(t))}function xt(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function _t(t,e,r){const n=ft(t);return n.headers=yt(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function Et(t,e){return e.authType===et.Auto?async function(t,e){const r=await Ot(t);return r.ok?(e.authType=et.Password,r):401==r.status&&q(r)?(e.authType=et.Digest,nt(e,e.username,e.password,void 0,void 0),t._digest=e.digest,St(t)):r}(t,e):t._digest?St(t):Ot(t)}async function St(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=dt(t,{headers:{Authorization:W(t,e)}}));const r=await Ot(t);if(401==r.status){if(e.hasDigestAuth=function(t,e){if(!q(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}(r,e),e.hasDigestAuth){t=dt(t,{headers:{Authorization:W(t,e)}});const r=await Ot(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function Ot(t){const e=(ut||(ut=new lt),ut);return e.patchInline("request",t=>e.patchInline("fetch",tt,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=yt(e,t.headers)),void 0!==t.data){const[n,o]=function(t){if(!ht()&&!pt()&&t instanceof bt.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if(xt(t))return[t,{}];if(At(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}(t.data);r.body=n,e=yt(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),ht()||pt()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new ot.Agent:t.httpsAgent||new it.Agent),r.headers=e,r}(t)),t)}var Tt=n(68928);const Ct=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")},Nt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Rt=t=>t.replace(/[[\]\\-]/g,"\\$&"),jt=t=>t.join(""),Pt=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const n=[],o=[];let i=r+1,s=!1,a=!1,c=!1,l=!1,u=r,p="";t:for(;ip?n.push(Rt(p)+"-"+Rt(e)):e===p&&n.push(Rt(e)),p="",i++):t.startsWith("-]",i+1)?(n.push(Rt(e+"-")),i+=2):t.startsWith("-",i+1)?(p=e,i+=2):(n.push(Rt(e)),i++)}else c=!0,i++}else l=!0,i++}if(ue?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1"),It=new Set(["!","?","+","*","@"]),Mt=t=>It.has(t),Lt="(?!\\.)",Dt=new Set(["[","."]),$t=new Set(["..","."]),Ut=new Set("().*{}+?[]^$\\!"),Ft=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Bt="[^/]",Wt=Bt+"*?",qt=Bt+"+?";class Ht{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#c;#l;#u=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#c=this.#t===this?r:this.#t.#c,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#l?this.#l:this.type?this.#l=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#l=this.#n.map(t=>String(t)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?Ht.#f(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let o="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!$t.has(this.#n[0]))){const r=Dt,i=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));o=i?"(?!(?:^|/)\\.\\.?(?:$|/))":s?Lt:""}let i="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(i="(?:$|\\/)"),[o+n+i,kt(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let o=this.#d(e);if(this.isStart()&&this.isEnd()&&!o&&"!"!==this.type){const t=this.toString();return this.#n=[t],this.type=null,this.#e=void 0,[t,kt(this.toString()),!1,!1]}let i=!r||t||e?"":this.#d(!0);i===o&&(i=""),i&&(o=`(?:${o})(?:${i})*?`);let s="";return s="!"===this.type&&this.#u?(this.isStart()&&!e?Lt:"")+qt:n+o+("!"===this.type?"))"+(!this.isStart()||e||t?"":Lt)+Wt+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),[s,kt(o),this.#e=!!this.#e,this.#r]}#d(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#f(t,e,r=!1){let n=!1,o="",i=!1;for(let s=0;s(Ct(e),!(!r.nocomment&&"#"===e.charAt(0))&&new be(e,r).match(t)),Gt=/^\*+([^+@!?\*\[\(]*)$/,Kt=t=>e=>!e.startsWith(".")&&e.endsWith(t),Yt=t=>e=>e.endsWith(t),Xt=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),Zt=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),Qt=/^\*+\.\*+$/,Jt=t=>!t.startsWith(".")&&t.includes("."),te=t=>"."!==t&&".."!==t&&t.includes("."),ee=/^\.\*+$/,re=t=>"."!==t&&".."!==t&&t.startsWith("."),ne=/^\*+$/,oe=t=>0!==t.length&&!t.startsWith("."),ie=t=>0!==t.length&&"."!==t&&".."!==t,se=/^\?+([^+@!?\*\[\(]*)?$/,ae=([t,e=""])=>{const r=pe([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},ce=([t,e=""])=>{const r=he([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},le=([t,e=""])=>{const r=he([t]);return e?t=>r(t)&&t.endsWith(e):r},ue=([t,e=""])=>{const r=pe([t]);return e?t=>r(t)&&t.endsWith(e):r},pe=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},he=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},fe="object"==typeof Vt&&Vt?"object"==typeof Vt.env&&Vt.env&&Vt.env.__MINIMATCH_TESTING_PLATFORM__||Vt.platform:"posix";zt.sep="win32"===fe?"\\":"/";const de=Symbol("globstar **");zt.GLOBSTAR=de,zt.filter=(t,e={})=>r=>zt(r,t,e);const ge=(t,e={})=>Object.assign({},t,e);zt.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return zt;const e=zt;return Object.assign((r,n,o={})=>e(r,n,ge(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,ge(t,r))}static defaults(r){return e.defaults(ge(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,ge(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,ge(t,n))}},unescape:(r,n={})=>e.unescape(r,ge(t,n)),escape:(r,n={})=>e.escape(r,ge(t,n)),filter:(r,n={})=>e.filter(r,ge(t,n)),defaults:r=>e.defaults(ge(t,r)),makeRe:(r,n={})=>e.makeRe(r,ge(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,ge(t,n)),match:(r,n,o={})=>e.match(r,n,ge(t,o)),sep:e.sep,GLOBSTAR:de})};const me=(t,e={})=>(Ct(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:Tt(t));zt.braceExpand=me,zt.makeRe=(t,e={})=>new be(t,e).makeRe(),zt.match=(t,e,r={})=>{const n=new be(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const ye=/[?*]|[+@!]\(.*?\)|\[|\]/;class be{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){Ct(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||fe,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&ye.test(t[2])||ye.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const c=r.slice(0);c[n]="**",t.push(c),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;ni?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var i=0,s=0,a=t.length,c=e.length;i>> no match, partial?",t,p,e,h),p!==a))}let o;if("string"==typeof l?(o=u===l,this.debug("string match",l,u,o)):(o=l.test(u),this.debug("pattern match",l,u,o)),!o)return!1}if(i===a&&s===c)return!0;if(i===a)return r;if(s===c)return i===a-1&&""===t[i];throw new Error("wtf?")}braceExpand(){return me(this.pattern,this.options)}parse(t){Ct(t);const e=this.options;if("**"===t)return de;if(""===t)return"";let r,n=null;(r=t.match(ne))?n=e.dot?ie:oe:(r=t.match(Gt))?n=(e.nocase?e.dot?Zt:Xt:e.dot?Yt:Kt)(r[1]):(r=t.match(se))?n=(e.nocase?e.dot?ce:ae:e.dot?le:ue)(r):(r=t.match(Qt))?n=e.dot?te:Jt:(r=t.match(ee))&&(n=re);const o=Ht.fromGlob(t,this.options).toMMPattern();return n&&"object"==typeof o&&Reflect.defineProperty(o,"test",{value:n}),o}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,r=e.noglobstar?"[^/]*?":e.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",n=new Set(e.nocase?["i"]:[]);let o=t.map(t=>{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===de?de:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===de&&i!==de&&(void 0===i?void 0!==o&&o!==de?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==de&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=de))}),e.filter(t=>t!==de).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;t=400)throw ve(e);return e}function Ae(t,e,r=!1){return r?{data:e,headers:t.headers?mt(t.headers):{},status:t.status,statusText:t.statusText}:e}zt.AST=Ht,zt.Minimatch=be,zt.escape=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&"),zt.unescape=kt;const xe={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1},_e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",Ee=new RegExp("^["+_e+"]["+_e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function Se(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;t0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][Te]={startIndex:e})}static getMetaDataSymbol(){return Te}}class Ne{constructor(t){this.suppressValidationErr=!t}readDocType(t,e){const r={};if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let n=1,o=!1,i=!1,s="";for(;e"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]?o=!0:s+=t[e];else{if(o&&je(t,"!ENTITY",e)){let n,o;e+=7,[n,o,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===o.indexOf("&")&&(r[n]={regx:RegExp(`&${n};`,"g"),val:o})}else if(o&&je(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(o&&je(t,"!ATTLIST",e))e+=8;else if(o&&je(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!je(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=Re(t,e);let r="";for(;e{for(;e{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}class $e{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>Je(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>Je(e,16,"&#x")}},this.addExternalEntities=Ue,this.parseXml=He,this.parseTextData=Fe,this.resolveNameSpace=Be,this.buildAttributesMap=qe,this.isItStopNode=Ke,this.replaceEntitiesValue=ze,this.readStopNodeData=Ze,this.saveTextToParentTag=Ge,this.addChild=Ve,this.ignoreAttributesFn=De(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t));const n=this.options.tagValueProcessor(e,t,r,o,i);return null==n?t:typeof n!=typeof t||n!==t?n:this.options.trimValues||t.trim()===t?Qe(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function Be(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const We=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function qe(t,e){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=Se(t,We),n=r.length,o={};for(let t=0;t",s,"Closing Tag is not closed.");let i=t.substring(s+2,e).trim();if(this.options.removeNSPrefix){const t=i.indexOf(":");-1!==t&&(i=i.substr(t+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),r&&(n=this.saveTextToParentTag(n,r,o));const a=o.substring(o.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error(`Unpaired tag can not be used as closing tag: `);let c=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(c=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):c=o.lastIndexOf("."),o=o.substring(0,c),r=this.tagsNodeStack.pop(),n="",s=e}else if("?"===t[s+1]){let e=Xe(t,s,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,o),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new Ce(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,o)),this.addChild(r,t,o,s)}s=e.closeIndex+1}else if("!--"===t.substr(s+1,3)){const e=Ye(t,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){const i=t.substring(s+4,e-2);n=this.saveTextToParentTag(n,r,o),r.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}s=e}else if("!D"===t.substr(s+1,2)){const e=i.readDocType(t,s);this.docTypeEntities=e.entities,s=e.i}else if("!["===t.substr(s+1,2)){const e=Ye(t,"]]>",s,"CDATA is not closed.")-2,i=t.substring(s+9,e);n=this.saveTextToParentTag(n,r,o);let a=this.parseTextData(i,r.tagname,o,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):r.add(this.options.textNodeName,a),s=e+2}else{let i=Xe(t,s,this.options.removeNSPrefix),a=i.tagName;const c=i.rawTagName;let l=i.tagExp,u=i.attrExpPresent,p=i.closeIndex;if(this.options.transformTagName){const t=this.options.transformTagName(a);l===a&&(l=t),a=t}r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,o,!1));const h=r;h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(r=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),a!==e.tagname&&(o+=o?"."+a:a);const f=s;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,o,a)){let e="";if(l.length>0&&l.lastIndexOf("/")===l.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),o=o.substr(0,o.length-1),l=a):l=l.substr(0,l.length-1),s=i.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))s=i.closeIndex;else{const r=this.readStopNodeData(t,c,p+1);if(!r)throw new Error(`Unexpected end of ${c}`);s=r.i,e=r.tagContent}const n=new Ce(a);a!==l&&u&&(n[":@"]=this.buildAttributesMap(l,o)),e&&(e=this.parseTextData(e,a,o,!0,u,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),n.add(this.options.textNodeName,e),this.addChild(r,n,o,f)}else{if(l.length>0&&l.lastIndexOf("/")===l.length-1){if("/"===a[a.length-1]?(a=a.substr(0,a.length-1),o=o.substr(0,o.length-1),l=a):l=l.substr(0,l.length-1),this.options.transformTagName){const t=this.options.transformTagName(a);l===a&&(l=t),a=t}const t=new Ce(a);a!==l&&u&&(t[":@"]=this.buildAttributesMap(l,o)),this.addChild(r,t,o,f),o=o.substr(0,o.lastIndexOf("."))}else{const t=new Ce(a);this.tagsNodeStack.push(r),a!==l&&u&&(t[":@"]=this.buildAttributesMap(l,o)),this.addChild(r,t,o,f),r=t}n="",s=p}}else n+=t[s];return e.child};function Ve(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.updateTag(e.tagname,r,e[":@"]);!1===o||("string"==typeof o?(e.tagname=o,t.addChild(e,n)):t.addChild(e,n))}const ze=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const r=this.docTypeEntities[e];t=t.replace(r.regx,r.val)}for(let e in this.lastEntities){const r=this.lastEntities[e];t=t.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const r=this.htmlEntities[e];t=t.replace(r.regex,r.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function Ge(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function Ke(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function Ye(t,e,r,n){const o=t.indexOf(e,r);if(-1===o)throw new Error(n);return o+e.length-1}function Xe(t,e,r,n=">"){const o=function(t,e,r=">"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=Ye(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=Ye(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=Ye(t,"]]>",r,"StopNode is not closed.")-2;else{const n=Xe(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function Qe(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},Me,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&ke.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(Le);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const o=Ie.exec(r);if(o){const i=o[1]||"",s=o[2];let a=(n=o[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const c=i?"."===t[s.length+1]:"."===t[s.length];if(!e.leadingZeros&&(s.length>1||1===s.length&&!c))return t;{const n=Number(r),o=String(n);if(0===n)return n;if(-1!==o.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===o||o===a||o===`${i}${a}`?n:t;let c=s?a:r;return s?c===o||i+c===o?n:t:c===o||c===i+o?n:t}}return t}var n}(t,r)}return void 0!==t?t:""}function Je(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}const tr=Ce.getMetaDataSymbol();function er(t,e){return rr(t,e)}function rr(t,e,r){let n;const o={};for(let i=0;i0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function nr(t){const e=Object.keys(t);for(let t=0;t5&&"xml"===n)return dr("InvalidXml","XML declaration allowed only at the start of the document.",yr(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function lr(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function ur(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const pr=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function hr(t,e){const r=Se(t,pr),n={};for(let t=0;t"!==t[i]&&" "!==t[i]&&"\t"!==t[i]&&"\n"!==t[i]&&"\r"!==t[i];i++)c+=t[i];if(c=c.trim(),"/"===c[c.length-1]&&(c=c.substring(0,c.length-1),i--),!mr(c)){let e;return e=0===c.trim().length?"Invalid space after '<'.":"Tag '"+c+"' is an invalid name.",dr("InvalidTag",e,yr(t,i))}const l=ur(t,i);if(!1===l)return dr("InvalidAttr","Attributes for '"+c+"' have open quote.",yr(t,i));let u=l.value;if(i=l.index,"/"===u[u.length-1]){const r=i-u.length;u=u.substring(0,u.length-1);const o=hr(u,e);if(!0!==o)return dr(o.err.code,o.err.msg,yr(t,r+o.err.line));n=!0}else if(a){if(!l.tagClosed)return dr("InvalidTag","Closing tag '"+c+"' doesn't have proper closing.",yr(t,i));if(u.trim().length>0)return dr("InvalidTag","Closing tag '"+c+"' can't have attributes or invalid starting.",yr(t,s));if(0===r.length)return dr("InvalidTag","Closing tag '"+c+"' has not been opened.",yr(t,s));{const e=r.pop();if(c!==e.tagName){let r=yr(t,e.tagStartPos);return dr("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+c+"'.",yr(t,s))}0==r.length&&(o=!0)}}else{const a=hr(u,e);if(!0!==a)return dr(a.err.code,a.err.msg,yr(t,i-u.length+a.err.line));if(!0===o)return dr("InvalidXml","Multiple possible root nodes found.",yr(t,i));-1!==e.unpairedTags.indexOf(c)||r.push({tagName:c,tagStartPos:s}),n=!0}for(i++;i0)||dr("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):dr("InvalidXml","Start tag expected.",1)}(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new $e(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:er(n,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return Ce.getMetaDataSymbol()}}var wr,Ar=n(26602);function xr(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function _r(t,e,r=wr.Original){const n=Ar.get(t,e);return"array"===r&&!1===Array.isArray(n)?[n]:"object"===r&&Array.isArray(n)?n[0]:n}function Er(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[xr]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return Ar.set(r,"multistatus.response",_r(r,"multistatus.response",wr.Array)),Ar.set(r,"multistatus.response",Ar.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?Ar.set(e,"status",_r(e,"status",wr.Object)):(Ar.set(e,"propstat",_r(e,"propstat",wr.Object)),Ar.set(e,"propstat.prop",_r(e,"propstat.prop",wr.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new vr({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function Sr(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:o="0",resourcetype:i=null,getcontenttype:s=null,getetag:a=null}=t,c=i&&"object"==typeof i&&void 0!==i.collection?"directory":"file",l={filename:e,basename:k.basename(e),lastmod:n,size:parseInt(o,10),type:c,etag:"string"==typeof a?a.replace(/"/g,""):null};return"file"===c&&(l.mime=s&&"string"==typeof s?s.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),l.props=t),l}function Or(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}async function Tr(t,e,r={}){const{details:n=!1}=r,o=_t({url:F(t.remoteURL,L(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),i=await Et(o,t);we(t,i);const s=await i.text(),a=function(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,a,c]=i.split(" ",3),l=parseInt(a,10);if(l>=400){const t=new Error(`Invalid response: ${l} ${c}`);throw t.status=l,t}return Sr(o,$(e),r)}(await Er(s,t.parsing),e,n);return Ae(i,a,n)}async function Cr(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=function(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=k.dirname(e)}while(e&&"/"!==e);return r}($(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let o=!1;for(const i of n)if(o)await Cr(t,i,{...r,recursive:!1});else try{if("directory"!==(await Tr(t,i)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;o=!0,await Cr(t,i,{...r,recursive:!1})}}(t,e,r);const n=_t({url:F(t.remoteURL,(o=L(e),o.endsWith("/")?o:o+"/")),method:"MKCOL"},t,r);var o;we(t,await Et(n,t))}!function(t){t.Array="array",t.Object="object",t.Original="original"}(wr||(wr={}));const Nr=()=>{};var Rr=n(62045).hp;const jr=t=>t;function Pr(t,e){let r="";return e.format&&e.indentBy.length>0&&(r="\n"),kr(t,e,"",r)}function kr(t,e,r,n){let o="",i=!1;for(let s=0;s`,i=!1;continue}if(c===e.commentPropName){o+=n+`\x3c!--${a[c][0][e.textNodeName]}--\x3e`,i=!0;continue}if("?"===c[0]){const t=Mr(a[":@"],e),r="?xml"===c?"":n;let s=a[c][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=r+`<${c}${s}${t}?>`,i=!0;continue}let u=n;""!==u&&(u+=e.indentBy);const p=n+`<${c}${Mr(a[":@"],e)}`,h=kr(a[c],e,l,u);-1!==e.unpairedTags.indexOf(c)?e.suppressUnpairedNode?o+=p+">":o+=p+"/>":h&&0!==h.length||!e.suppressEmptyNode?h&&h.endsWith(">")?o+=p+`>${h}${n}`:(o+=p+">",h&&""!==n&&(h.includes("/>")||h.includes("`):o+=p+"/>",i=!0}return o}function Ir(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function Ur(t){this.options=Object.assign({},$r,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=De(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Wr),this.processTextOrObjNode=Fr,this.options.format?(this.indentate=Br,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function Fr(t,e,r,n){const o=this.j2x(t,r+1,n.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,r):this.buildObjectNode(o.val,e,o.attrStr,r)}function Br(t){return this.options.indentBy.repeat(t)}function Wr(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}function qr(t){return new Ur({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Hr({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function Hr(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=Hr(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}Ur.prototype.build=function(t){return this.options.preserveOrder?Pr(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},Ur.prototype.j2x=function(t,e,r){let n="",o="";const i=r.join(".");for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s))if(void 0===t[s])this.isAttribute(s)&&(o+="");else if(null===t[s])this.isAttribute(s)||s===this.options.cdataPropName?o+="":"?"===s[0]?o+=this.indentate(e)+"<"+s+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+s+"/"+this.tagEndChar;else if(t[s]instanceof Date)o+=this.buildTextValNode(t[s],s,"",e);else if("object"!=typeof t[s]){const r=this.isAttribute(s);if(r&&!this.ignoreAttributesFn(r,i))n+=this.buildAttrPairStr(r,""+t[s]);else if(!r)if(s===this.options.textNodeName){let e=this.options.tagValueProcessor(s,""+t[s]);o+=this.replaceEntitiesValue(e)}else o+=this.buildTextValNode(t[s],s,"",e)}else if(Array.isArray(t[s])){const n=t[s].length;let i="",a="";for(let c=0;c"+t+o}},Ur.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;et.trim()),server:o.headers.get("Server")??""}}const Kr="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";var Yr=n(63814);function Xr(){return(0,Yr.dC)("dav/comments")}const Zr=function(t,e={}){const{authType:r=null,remoteBasePath:n,contactHref:o=Kr,ha1:i,headers:s={},httpAgent:a,httpsAgent:c,password:l,token:u,username:p,withCredentials:h}=e;let f=r;f||(f=p||l?et.Password:et.None);const d={authType:f,remoteBasePath:n,contactHref:o,ha1:i,headers:Object.assign({},s),httpAgent:a,httpsAgent:c,password:l,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[xr]},remotePath:U(t),remoteURL:t,token:u,username:p,withCredentials:h};return nt(d,p,l,u,i),{copyFile:(t,e,r)=>async function(t,e,r,n={}){const o=_t({url:F(t.remoteURL,L(e)),method:"COPY",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T",Depth:n.shallow?"0":"infinity"}},t,n);we(t,await Et(o,t))}(d,t,e,r),createDirectory:(t,e)=>Cr(d,t,e),createReadStream:(t,e)=>function(t,e,r={}){const n=new(0,bt.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const o=_t({url:F(t.remoteURL,L(e)),method:"GET",headers:n},t,r),i=await Et(o,t);if(we(t,i),n.Range&&206!==i.status){const t=new Error(`Invalid response code for partial request: ${i.status}`);throw t.status=i.status,t}return r.callback&&setTimeout(()=>{r.callback(i)},0),i.body}(t,e,r).then(t=>{t.pipe(n)}).catch(t=>{n.emit("error",t)}),n}(d,t,e),createWriteStream:(t,e,r)=>function(t,e,r={},n=Nr){const o=new(0,bt.PassThrough),i={};return!1===r.overwrite&&(i["If-None-Match"]="*"),Et(_t({url:F(t.remoteURL,L(e)),method:"PUT",headers:i,data:o,maxRedirects:0},t,r),t).then(e=>we(t,e)).then(t=>{setTimeout(()=>{n(t)},0)}).catch(t=>{o.emit("error",t)}),o}(d,t,e,r),customRequest:(t,e)=>async function(t,e,r){r.url||(r.url=F(t.remoteURL,L(e)));const n=_t(r,t,{}),o=await Et(n,t);return we(t,o),o}(d,t,e),deleteFile:(t,e)=>async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e)),method:"DELETE"},t,r);we(t,await Et(n,t))}(d,t,e),exists:(t,e)=>async function(t,e,r={}){try{return await Tr(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}(d,t,e),getDirectoryContents:(t,e)=>async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),o=await Et(n,t);we(t,o);const i=await o.text();if(!i)throw new Error("Failed parsing directory contents: Empty response");const s=await Er(i,t.parsing),a=D(e);let c=function(t,e,r,n=!1,o=!1){const i=k.join(e,"/"),{multistatus:{response:s}}=t,a=s.map(t=>{const e=function(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new P(t,"Failed normalising HREF")}}(t.href),{propstat:{prop:r}}=t;return Sr(r,"/"===i?decodeURIComponent($(e)):$(k.relative(decodeURIComponent(i),decodeURIComponent(e))),n)});return o?a:a.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(s,D(t.remoteBasePath||t.remotePath),a,r.details,r.includeSelf);return r.glob&&(c=function(t,e){return t.filter(t=>zt(t.filename,e,{matchBase:!0}))}(c,r.glob)),Ae(o,c,r.details)}(d,t,e),getFileContents:(t,e)=>async function(t,e,r={}){const{format:n="binary"}=r;if("binary"!==n&&"text"!==n)throw new P({info:{code:rt.InvalidOutputFormat}},`Invalid output format: ${n}`);return"text"===n?async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[jr]},t,r),o=await Et(n,t);we(t,o);const i=await o.text();return Ae(o,i,r.details)}(t,e,r):async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e)),method:"GET"},t,r),o=await Et(n,t);let i;return we(t,o),i=ht()||pt()?await o.arrayBuffer():Rr.from(await o.arrayBuffer()),Ae(o,i,r.details)}(t,e,r)}(d,t,e),getFileDownloadLink:t=>function(t,e){let r=F(t.remoteURL,L(e));const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new P({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getFileUploadLink:t=>function(t,e){let r=`${F(t.remoteURL,L(e))}?Content-Type=application/octet-stream`;const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new P({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getHeaders:()=>Object.assign({},d.headers),getQuota:t=>async function(t,e={}){const r=e.path||"/",n=_t({url:F(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),o=await Et(n,t);we(t,o);const i=await o.text();return Ae(o,function(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":n}}}=e;return void 0!==r&&void 0!==n?{used:parseInt(String(r),10),available:Or(n)}:null}catch(t){}return null}(await Er(i,t.parsing)),e.details)}(d,t),lock:(t,e)=>async function(t,e,r={}){const{refreshToken:n,timeout:o=Vr}=r,i={Accept:"text/plain,application/xml",Timeout:o};n&&(i.If=n);const s=_t({url:F(t.remoteURL,L(e)),method:"LOCK",headers:i,data:qr(t.contactHref)},t,r),a=await Et(s,t);we(t,a);const c=(p=await a.text(),new vr({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(p)),l=Ar.get(c,"prop.lockdiscovery.activelock.locktoken.href"),u=Ar.get(c,"prop.lockdiscovery.activelock.timeout");var p;if(!l)throw ve(a,"No lock token received: ");return{token:l,serverTimeout:u}}(d,t,e),moveFile:(t,e,r)=>async function(t,e,r,n={}){const o=_t({url:F(t.remoteURL,L(e)),method:"MOVE",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T"}},t,n);we(t,await Et(o,t))}(d,t,e,r),putFileContents:(t,e,r)=>async function(t,e,r,n={}){const{contentLength:o=!0,overwrite:i=!0}=n,s={"Content-Type":"application/octet-stream"};!ht()&&!pt()&&void 0!==bt&&void 0!==bt?.Readable&&r instanceof bt.Readable||!1===o||(s["Content-Length"]="number"==typeof o?`${o}`:`${function(t){if(At(t))return t.byteLength;if(xt(t))return t.length;if("string"==typeof t)return(0,zr.d)(t);throw new P({info:{code:rt.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(r)}`),i||(s["If-None-Match"]="*");const a=_t({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:r},t,n),c=await Et(a,t);try{we(t,c)}catch(t){const e=t;if(412!==e.status||i)throw e;return!1}return!0}(d,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>async function(t,e,r,n,o,i={}){const s=await Gr(t,e,i);if(s.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new P({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(n-r+1),"X-Update-Range":`bytes=${r}-${n}`},a=_t({url:F(t.remoteURL,L(e)),method:"PATCH",headers:s,data:o},t,i);we(t,await Et(a,t))}(t,e,r,n,o,i);if(s.server.includes("Apache")&&s.compliance.includes(""))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new P({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/octet-stream","Content-Length":""+(n-r+1),"Content-Range":`bytes ${r}-${n}/*`},a=_t({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:o},t,i);we(t,await Et(a,t))}(t,e,r,n,o,i);throw new P({info:{code:rt.NotSupported}},"Not supported")}(d,t,e,r,n,o),getDAVCompliance:t=>Gr(d,t),search:(t,e)=>async function(t,e,r={}){const{details:n=!1}=r,o=_t({url:F(t.remoteURL,L(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),i=await Et(o,t);we(t,i);const s=await i.text(),a=function(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith(L(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(Sr(t.propstat.prop,e,r))}),n}(await Er(s,t.parsing),e,n);return Ae(i,a,n)}(d,t,e),setHeaders:t=>{d.headers=Object.assign({},t)},stat:(t,e)=>Tr(d,t,e),unlock:(t,e,r)=>async function(t,e,r,n={}){const o=_t({url:F(t.remoteURL,L(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),i=await Et(o,t);if(we(t,i),204!==i.status&&200!==i.status)throw ve(i)}(d,t,e,r),registerAttributeParser:t=>{d.parsing.attributeParsers.push(t)},registerTagParser:t=>{d.parsing.tagParsers.push(t)}}}(Xr());function Qr(t){Zr.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,i.zo)(Qr),Qr((0,i.do)());const Jr=Zr;var tn=n(19051);function en(t,e=1){const r=new DOMParser;let n=t;for(let t=0;t({idsInLimbo:[]}),actions:{addId(t){this.idsInLimbo.push(t)},removeId(t){const e=this.idsInLimbo.indexOf(t);e>-1&&this.idsInLimbo.splice(e,1)},checkForId(t){return this.idsInLimbo.includes(t)}}}),nn={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data:()=>({deleted:!1,editing:!1,loading:!1}),computed:{...(0,a.n2)(rn)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await async function(t,e,r,n){const o=["",t,e,r].join("/");return await Jr.customRequest(o,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${n}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.resourceId,this.id,e),o.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(e){(0,l.Qg)(t("comments","An error occurred while trying to edit the comment")),o.error("An error occurred while trying to edit the comment",{error:e})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,l.Br);(0,l._h)(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await async function(t,e,r){const n=["",t,e,r].join("/");await Jr.deleteFile(n)}(this.resourceType,this.resourceId,this.id),o.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){(0,l.Qg)(t("comments","An error occurred while trying to delete the comment")),o.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const t=await async function(t,e,r){const n=["",t,e].join("/"),o=await tn.Ay.post(Xr()+n,{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:t,verb:"comment"}),s=n+"/"+parseInt(o.headers["content-location"].split("/").pop()),a=await Jr.stat(s,{details:!0}),c=a.data.props;return c.actorDisplayName=en(c.actorDisplayName,2),c.message=en(c.message,2),a.data}(this.resourceType,this.resourceId,e);o.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:t}),this.$emit("new",t),this.$emit("update:message",""),this.localMessage=""}catch(e){(0,l.Qg)(t("comments","An error occurred while trying to create the comment")),o.error("An error occurred while trying to create the comment",{error:e})}finally{this.loading=!1}}}},on={name:"Comment",components:{IconArrowRight:S.A,IconClose:O.A,IconTrashCanOutline:C.A,IconPencilOutline:T.A,NcActionButton:b.A,NcActions:v.A,NcActionSeparator:w.A,NcAvatar:A.A,NcButton:p.A,NcDateTime:x.A,NcLoadingIcon:_.A,NcRichContenteditable:()=>Promise.all([n.e(4208),n.e(5528)]).then(n.bind(n,95528)),NcRichText:()=>Promise.all([n.e(4208),n.e(4508)]).then(n.bind(n,64508))},mixins:[nn],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data:()=>({expanded:!1,localMessage:"",submitted:!1}),computed:{...(0,a.n2)(rn),isOwnComment(){return(0,i.HW)().uid===this.actorId},richContent(){const t={};let e=this.localMessage;return Object.keys(this.userData).forEach((r,n)=>{const o=`mention-${n}`,i=new RegExp(`@${r}|@"${r}"`,"g");e=e.replace(i,`{${o}}`),t[o]={component:E.A,props:{user:r,displayName:this.userData[r].label,primary:this.userData[r].primary}}}),{mentions:t,message:e}},isEmptyMessage(){return!this.localMessage||""===this.localMessage.trim()},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(t){this.updateLocalMessage(t)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:s.Tl,updateLocalMessage(t){this.localMessage=t.toString(),this.submitted=!1},onSubmit(){if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick(()=>{this.$refs.editor.$el.focus()})):void this.onEditComment(this.localMessage.trim())},onExpand(){this.expanded=!0}}};var sn=n(85072),an=n.n(sn),cn=n(97825),ln=n.n(cn),un=n(77659),pn=n.n(un),hn=n(55056),fn=n.n(hn),dn=n(10540),gn=n.n(dn),mn=n(41113),yn=n.n(mn),bn=n(22408),vn={};vn.styleTagTransform=yn(),vn.setAttributes=fn(),vn.insert=pn().bind(null,"head"),vn.domAPI=ln(),vn.insertStyleElement=gn(),an()(bn.A,vn),bn.A&&bn.A.locals&&bn.A.locals;var wn=(0,g.A)(on,function(){var t=this,e=t._self._c;return e(t.tag,{directives:[{name:"show",rawName:"v-show",value:!t.deleted&&!t.isLimbo,expression:"!deleted && !isLimbo"}],tag:"component",staticClass:"comment",class:{"comment--loading":t.loading}},[e("div",{staticClass:"comment__side"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":t.actorDisplayName,user:t.actorId,size:32}})],1),t._v(" "),e("div",{staticClass:"comment__body"},[e("div",{staticClass:"comment__header"},[e("span",{staticClass:"comment__author"},[t._v(t._s(t.actorDisplayName))]),t._v(" "),t.isOwnComment&&t.id&&!t.loading?e("NcActions",{staticClass:"comment__actions"},[t.editing?e("NcActionButton",{on:{click:t.onEditCancel},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconClose",{attrs:{size:20}})]},proxy:!0}],null,!1,2888946197)},[t._v("\n\t\t\t\t\t"+t._s(t.t("comments","Cancel edit"))+"\n\t\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconPencilOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,3345211262)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Edit comment"))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onDeleteWithUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconTrashCanOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1034796883)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Delete comment"))+"\n\t\t\t\t\t")])]],2):t._e(),t._v(" "),t.id&&t.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):t.creationDateTime?e("NcDateTime",{staticClass:"comment__timestamp",attrs:{timestamp:t.timestamp,"ignore-seconds":!0}}):t._e()],1),t._v(" "),t.editor||t.editing?e("form",{staticClass:"comment__editor",on:{submit:function(t){t.preventDefault()}}},[e("div",{staticClass:"comment__editor-group"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":t.autoComplete,contenteditable:!t.loading,label:t.editor?t.t("comments","New comment"):t.t("comments","Edit comment"),placeholder:t.t("comments","Write a comment …"),"model-value":t.localMessage,"user-data":t.userData,"aria-describedby":"tab-comments__editor-description"},on:{"update:value":t.updateLocalMessage,submit:t.onSubmit}}),t._v(" "),e("div",{staticClass:"comment__submit"},[e("NcButton",{attrs:{variant:"tertiary-no-background",type:"submit","aria-label":t.t("comments","Post comment"),disabled:t.isEmptyMessage},on:{click:t.onSubmit},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("NcLoadingIcon"):e("IconArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,758946661)})],1)],1),t._v(" "),e("div",{staticClass:"comment__editor-description",attrs:{id:"tab-comments__editor-description"}},[t._v("\n\t\t\t\t"+t._s(t.t("comments","@ for mentions, : for emoji, / for smart picker"))+"\n\t\t\t")])]):e("NcRichText",{staticClass:"comment__message",class:{"comment__message--expanded":t.expanded},attrs:{text:t.richContent.message,arguments:t.richContent.mentions,"use-markdown":""},nativeOn:{click:function(e){return t.onExpand.apply(null,arguments)}}})],1)])},[],!1,null,"70317f94",null);const An=wn.exports;var xn=n(81222);const _n=(0,c.pM)({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(t,e){const{data:r}=await tn.Ay.get((0,Yr.KT)("core/autocomplete/get"),{params:{search:t,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:(0,xn.C)("comments","maxAutoCompleteResults")}});return r.ocs.data.forEach(t=>{this.userData[t.id]=t}),e(Object.values(this.userData))},genMentionsData(t){return Object.values(t).flat().forEach(t=>{this.userData[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.HW)()?.uid===t.mentionId}}),this.userData}}});async function En({resourceType:t,resourceId:e},r){const n=["",t,e].join("/"),o=r.datetime?`${r.datetime.toISOString()}`:"",i=await Jr.customRequest(n,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??20}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${o}\n\t\t\t`,...r}),s=await i.text();return Ae(i,function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return Sr(r,r.id.toString(),e)})}(await Er(s),!0),!0)}const Sn={name:"Comments",components:{Comment:An,NcEmptyContent:h.A,NcButton:p.A,IconRefresh:y.A,IconMessageReplyTextOutline:m,IconAlertCircleOutline:f.A},directives:{elementVisibility:u.Zx},mixins:[_n],data:()=>({error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:An,userData:{}}),computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&0===this.offset}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:s.Tl,async onVisibilityChange(t){if(t)try{await function(t,e,r){const n=["",t,e].join("/"),o=r.toUTCString();return Jr.customRequest(n,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.currentResourceId,new Date)}catch(t){(0,l.Qg)(t.message||(0,s.Tl)("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:e}=function(t){const e=new AbortController,r=e.signal;return{request:async function(e,n){return await t(e,{signal:r,...n})},abort:()=>e.abort()}}(En);this.cancelRequest=e;const{data:r}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${r.length} comments`,{comments:r}),r.length<20&&(this.done=!0);for(const t of r)t.props.actorId=t.props.actorId.toString();this.comments=[...this.comments,...r],this.offset+=20}catch(t){if("cancel"===t.message)return;this.error=(0,s.Tl)("comments","Unable to load the comments list"),o.error("Error loading the comments list",{error:t})}finally{this.loading=!1}},onNewComment(t){this.comments.unshift(t)},onDelete(t){const e=this.comments.findIndex(e=>e.props.id===t);e>-1?this.comments.splice(e,1):o.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},On=Sn;var Tn=n(94262),Cn={};Cn.styleTagTransform=yn(),Cn.setAttributes=fn(),Cn.insert=pn().bind(null,"head"),Cn.domAPI=ln(),Cn.insertStyleElement=gn(),an()(Tn.A,Cn),Tn.A&&Tn.A.locals&&Tn.A.locals;const Nn=(0,g.A)(On,function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.onVisibilityChange,expression:"onVisibilityChange"}],staticClass:"comments",class:{"icon-loading":t.isFirstLoading}},[e("Comment",t._b({staticClass:"comments__writer",attrs:{"auto-complete":t.autoComplete,"resource-type":t.resourceType,editor:!0,"user-data":t.userData,"resource-id":t.currentResourceId},on:{new:t.onNewComment}},"Comment",t.editorData,!1)),t._v(" "),t.isFirstLoading?t._e():[!t.hasComments&&t.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{name:t.t("comments","No comments yet, start the conversation!")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconMessageReplyTextOutline")]},proxy:!0}],null,!1,326612300)}):e("ul",t._l(t.comments,function(r){return e("Comment",t._b({key:r.props.id,staticClass:"comments__list",attrs:{tag:"li","auto-complete":t.autoComplete,"resource-type":t.resourceType,message:r.props.message,"resource-id":t.currentResourceId,"user-data":t.genMentionsData(r.props.mentions)},on:{"update:message":function(e){return t.$set(r.props,"message",e)},delete:t.onDelete}},"Comment",r.props,!1))}),1),t._v(" "),t.loading&&!t.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):t.hasComments&&t.done?e("div",{staticClass:"comments__info"},[t._v("\n\t\t\t"+t._s(t.t("comments","No more messages"))+"\n\t\t")]):t.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{name:t.error},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAlertCircleOutline")]},proxy:!0}],null,!1,3663249556)}),t._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:t.getComments},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconRefresh")]},proxy:!0}],null,!1,2997625269)},[t._v("\n\t\t\t\t"+t._s(t.t("comments","Retry"))+"\n\t\t\t")])]:t._e()]],2)},[],!1,null,"6c8c157a",null).exports;c.Ay.use(a.R2),n.nc=(0,i.aV)(),c.Ay.mixin({data:()=>({logger:o}),methods:{t:s.t,n:s.n}}),window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:class{constructor(t="files",e={}){const r=(0,a.Ey)();return e={...e,propsData:{...e.propsData??{},resourceType:t},pinia:r},new(c.Ay.extend(Nn))(e)}}}),o.debug("OCA.Comments.View initialized")},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,c=r.indexOf(t),l=r.indexOf(e,c+1),u=c;if(c>=0&&l>0){if(t===e)return[c,l];for(n=[],i=r.length;u>=0&&!a;)u==c?(n.push(u),c=r.indexOf(t,u+1)):1==n.length?a=[n.pop(),l]:((o=n.pop())=0?c:l;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,c="",l=-1,u=t.length-i;++l>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(l)<<8,r=t.charCodeAt(++l),c+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(l),c+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),c},decode:function(t){var e=(t=String(t).replace(c,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",l=-1;++l>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return l}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),m(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(c)}(t),!0).map(u)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",c="\0PERIOD"+Math.random()+"\0";function l(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function u(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(c).join(".")}function p(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var c=p(s);return s.length&&(a[a.length-1]+=c.shift(),a.push.apply(a,c)),e.push.apply(e,a),e}function h(t){return"{"+t+"}"}function f(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function m(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?m(o.post,!1):[""];if(/\$$/.test(o.pre))for(var c=0;c=0;if(!A&&!x)return o.post.match(/,(?!,).*\}/)?m(t=o.pre+"{"+o.body+s+o.post):[t];if(A)y=o.body.split(/\.\./);else if(1===(y=p(o.body)).length&&1===(y=m(y[0],!1).map(h)).length)return a.map(function(t){return o.pre+y[0]+t});if(A){var _=l(y[0]),E=l(y[1]),S=Math.max(y[0].length,y[1].length),O=3==y.length?Math.abs(l(y[2])):1,T=d;E<_&&(O*=-1,T=g);var C=y.some(f);b=[];for(var N=_;T(N,E);N+=O){var R;if(w)"\\"===(R=String.fromCharCode(N))&&(R="");else if(R=String(N),C){var j=S-R.length;if(j>0){var P=new Array(j+1).join("0");R=N<0?"-"+P+R.slice(1):P+R}}b.push(R)}}else{b=[];for(var k=0;ka});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB",sourcesContent:['\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tdisplay: flex;\n\tgap: 8px;\n\tpadding: 5px $comment-padding;\n\n\t&__side {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\tpadding-top: 6px;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-direction: column;\n\t\tcontainer-type: inline-size;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t}\n\n\t&__actions {\n\t\tmargin-inline-start: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-inline-start: auto;\n\t\ttext-align: end;\n\t\twhite-space: nowrap;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor-group {\n\t\tposition: relative;\n\t}\n\n\t&__editor-description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-block: var(--default-grid-baseline);\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tbottom: 5px;\n\t\tinset-inline-end: 0;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: normal;\n\t\tmax-height: 200px;\n\t\toverflow: auto;\n\t\tscrollbar-gutter: stable;\n\t\tscrollbar-width: thin;\n\t\tmargin-top: -6px;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t\t:deep(img) {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]);const a=s},94262(t,e,r){"use strict";r.d(e,{A:()=>a});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n.comments {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty,\n\t&__error {\n\t\tflex: 1 0;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]);const a=s},4233(t){"use strict";const e=function*(){}.constructor;t.exports=()=>e},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),c=n("Function.prototype.toString"),l=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(c(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=l();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var c=o("RegExp.prototype.exec"),l={},u=function(){throw l},p={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=u),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{c(t,p)}catch(t){return t===l}}}else{var h=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},c=0;c2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!c(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=c(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,c=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=a&&c&&"function"==typeof c.get?c.get:null,u=a&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,f="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,m=Function.prototype.toString,y=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,A=String.prototype.toLowerCase,x=RegExp.prototype.test,_=Array.prototype.concat,E=Array.prototype.join,S=Array.prototype.slice,O=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,C=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,R="function"==typeof Symbol&&"object"==typeof Symbol.iterator,j="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,P=Object.prototype.propertyIsEnumerable,k=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-O(-t):O(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function F(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function B(t){return v.call(String(t),/"/g,""")}function W(t){return!j||!("object"==typeof t&&(j in t||void 0!==t[j]))}function q(t){return"[object Array]"===K(t)&&W(t)}function H(t){return"[object RegExp]"===K(t)&&W(t)}function V(t){if(R)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(G(a,"quoteStyle")&&!G($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(G(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var c=!G(a,"customInspect")||a.customInspect;if("boolean"!=typeof c&&"symbol"!==c)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(G(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(G(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return X(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var O=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=O&&O>0&&"object"==typeof e)return q(e)?"[Array]":"[Object]";var C,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=E.call(Array(t.indent+1)," ")}return{base:r,prev:E.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(Y(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=S.call(o)).push(r),i){var s={depth:a.depth};return G(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!H(e)){var z=function(t){if(t.name)return t.name;var e=y.call(m.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(z?": "+z:" (anonymous)")+"]"+(Z.length>0?" { "+E.call(Z,", ")+" }":"")}if(V(e)){var nt=R?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||R?nt:Q(nt)}if((C=e)&&"object"==typeof C&&("undefined"!=typeof HTMLElement&&C instanceof HTMLElement||"string"==typeof C.nodeName&&"function"==typeof C.getAttribute)){for(var ot="<"+A.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(q(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+E.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&W(t)}(e)){var ct=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||P.call(e,"cause")?0===ct.length?"["+String(e)+"]":"{ ["+String(e)+"] "+E.call(ct,", ")+" }":"{ ["+String(e)+"] "+E.call(_.call("[cause]: "+U(e.cause),ct),", ")+" }"}if("object"==typeof e&&c){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:O-n});if("symbol"!==c&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{l.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return s&&s.call(e,function(t,r){lt.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),lt,L)}if(function(t){if(!l||!t||"object"!=typeof t)return!1;try{l.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ut=[];return u&&u.call(e,function(t){ut.push(U(t,e))}),tt("Set",l.call(e),ut,L)}if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return J("WeakMap");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return J("WeakSet");if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{return f.call(t),!0}catch(t){}return!1}(e))return J("WeakRef");if(function(t){return"[object Number]"===K(t)&&W(t)}(e))return Q(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Q(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&W(t)}(e))return Q(d.call(e));if(function(t){return"[object String]"===K(t)&&W(t)}(e))return Q(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&W(t)}(e)&&!H(e)){var pt=rt(e,U),ht=k?k(e)===Object.prototype:e instanceof Object||e.constructor===Object,ft=e instanceof Object?"":"null prototype",dt=!ht&&j&&Object(e)===e&&j in e?b.call(K(e),8,-1):ft?"Object":"",gt=(ht||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||ft?"["+E.call(_.call([],dt||[],ft||[]),": ")+"] ":"");return 0===pt.length?gt+"{}":L?gt+"{"+et(pt,L)+"}":gt+"{ "+E.call(pt,", ")+" }"}return String(e)};var z=Object.prototype.hasOwnProperty||function(t){return t in this};function G(t,e){return z.call(t,e)}function K(t){return g.call(t)}function Y(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return X(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,F(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Q(t){return"Object("+t+")"}function J(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):E.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+E.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=q(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},c.normalize=function(t){var e=c.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},c.isAbsolute=function(t){return"/"===t.charAt(0)},c.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=c.resolve(t).substr(1),e=c.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,f=String.fromCharCode;function d(t){throw new RangeError(p[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function m(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(u,".")).split("."),e).join(".")}function y(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=f((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+f(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var n=0;for(t=r?h(t/700):t>>1,t+=h(t/e);t>455;n+=a)t=h(t/35);return h(n+36*t/(t+38))}function x(t){var e,r,n,o,i,c,l,u,p,f,g=[],m=t.length,y=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=m&&d("invalid-input"),((u=v(t.charCodeAt(o++)))>=a||u>h((s-y)/c))&&d("overflow"),y+=u*c,!(u<(p=l<=x?1:l>=x+26?26:l-x));l+=a)c>h(s/(f=a-p))&&d("overflow"),c*=f;x=A(y-i,e=g.length+1,0==i),h(y/e)>s-w&&d("overflow"),w+=h(y/e),y%=e,g.splice(y++,0,w)}return b(g)}function _(t){var e,r,n,o,i,c,l,u,p,g,m,b,v,x,_,E=[];for(b=(t=y(t)).length,e=128,r=0,i=72,c=0;c=e&&mh((s-r)/(v=n+1))&&d("overflow"),r+=(l-e)*v,e=l,c=0;cs&&d("overflow"),m==e){for(u=r,p=a;!(u<(g=p<=i?1:p>=i+26?26:p-i));p+=a)_=u-g,x=a-g,E.push(f(w(g+_%x,0))),u=h(_/x);E.push(f(w(u,0))),i=A(r,v,n==o),r=0,++n}++r,++e}return E.join("")}i={version:"1.4.1",ucs2:{decode:y,encode:b},decode:x,encode:_,toASCII:function(t){return m(t,function(t){return l.test(t)?"xn--"+_(t):t})},toUnicode:function(t){return m(t,function(t){return c.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},c=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},l=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a.push(s)}for(var c=0;null!==(i=n.exec(r))&&c0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:c(e,r,i),l=t.length-1;l>=0;--l){var u,p=t[l];if("[]"===p&&r.parseArrays)u=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{u=r.plainObjects?{__proto__:null}:{};var h="["===p.charAt(0)&&"]"===p.charAt(p.length-1)?p.slice(1,-1):p,f=r.decodeDotInKeys?h.replace(/%2E/g,"."):h,d=parseInt(f,10);r.parseArrays||""!==f?!isNaN(d)&&p!==f&&String(d)===f&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(u=[])[d]=a:"__proto__"!==f&&(u[f]=a):u={0:a}}a=u}return a}(s,e,r,i)}};t.exports=function(t,e){var r=function(t){if(!t)return s;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.decodeDotInKeys&&"boolean"!=typeof t.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(void 0!==t.throwOnLimitExceeded&&"boolean"!=typeof t.throwOnLimitExceeded)throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var e=void 0===t.charset?s.charset:t.charset,r=void 0===t.duplicates?s.duplicates:t.duplicates;if("combine"!==r&&"first"!==r&&"last"!==r)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===t.allowDots?!0===t.decodeDotInKeys||s.allowDots:!!t.allowDots,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:s.allowEmptyArrays,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:s.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:s.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:s.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:s.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:s.comma,decodeDotInKeys:"boolean"==typeof t.decodeDotInKeys?t.decodeDotInKeys:s.decodeDotInKeys,decoder:"function"==typeof t.decoder?t.decoder:s.decoder,delimiter:"string"==typeof t.delimiter||n.isRegExp(t.delimiter)?t.delimiter:s.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:s.depth,duplicates:r,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:s.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:s.plainObjects,strictDepth:"boolean"==typeof t.strictDepth?!!t.strictDepth:s.strictDepth,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:s.strictNullHandling,throwOnLimitExceeded:"boolean"==typeof t.throwOnLimitExceeded&&t.throwOnLimitExceeded}}(e);if(""===t||null==t)return r.plainObjects?{__proto__:null}:{};for(var u="string"==typeof t?function(t,e){var r={__proto__:null},l=e.ignoreQueryPrefix?t.replace(/^\?/,""):t;l=l.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var u=e.parameterLimit===1/0?void 0:e.parameterLimit,p=l.split(e.delimiter,e.throwOnLimitExceeded?u+1:u);if(e.throwOnLimitExceeded&&p.length>u)throw new RangeError("Parameter limit exceeded. Only "+u+" parameter"+(1===u?"":"s")+" allowed.");var h,f=-1,d=e.charset;if(e.charsetSentinel)for(h=0;h-1&&(m=i(m)?[m]:m),null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],m,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=m)}}return r}(t,r):t,p=r.plainObjects?{__proto__:null}:{},h=Object.keys(u),f=0;f0?O.join(",")||null:void 0}];else if(c(m))j=m;else{var k=Object.keys(O);j=y?k.sort(y):k}var I=h?String(r).replace(/\./g,"%2E"):String(r),M=s&&c(O)&&1===O.length?I+"[]":I;if(a&&c(O)&&0===O.length)return M+"[]";for(var L=0;L0?A+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),c=function(t,e){return a.set(t,e),t},l=function(t){return a.has(t)},u=function(t){return a.get(t)},p=function(t,e){a.set(t,e)},h=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),f=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?c(f(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(c,c+d):s,u=[],p=0;p=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||i===n.RFC1738&&(40===f||41===f)?u[u.length]=l.charAt(p):f<128?u[u.length]=h[f]:f<2048?u[u.length]=h[192|f>>6]+h[128|63&f]:f<55296||f>=57344?u[u.length]=h[224|f>>12]+h[128|f>>6&63]+h[128|63&f]:(p+=1,f=65536+((1023&f)<<10|1023&l.charCodeAt(p)),u[u.length]=h[240|f>>18]+h[128|f>>12&63]+h[128|f>>6&63]+h[128|63&f])}a+=u.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:l,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;ne._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(l.result.slice(e._pos)))),e._pos=l.result.byteLength)},l.onload=function(){t(!0),e.push(null)},l.readAsArrayBuffer(n)}e._xhr.readyState===c.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,c;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var l=("number"!=typeof c&&(c=0),c+1>(a=t).length||-1===a.indexOf(".",c)?"argument":"property");s='The "'.concat(t,'" ').concat(l," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=u;var i=r(52341),s=r(9573);r(56698)(u,i);for(var a=o(s.prototype),c=0;c0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),n)a.endEmitted?x(t,new A):T(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):P(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,P(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=C?t=C:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(j,t))}function j(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function P(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(k,t,e))}function k(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(F,e,t))}function F(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function B(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},S.prototype._read=function(t){x(this,new w("_read()"))},S.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:c;function c(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",f),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",c),r.removeListener("end",g),r.removeListener("data",p),u=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",l);var u=!1;function p(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==B(n.pipes,t))&&!u&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){i("onerror",e),g(),t.removeListener("error",h),0===s(t,"error")&&x(t,e)}function f(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",f),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",p),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",f),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},S.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?R(this):n.reading||o.nextTick(M,this))),r},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},S.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},S.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},S.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s<_.length;s++)t.on(_[s],this.emit.bind(this,_[s]));return this._read=function(e){i("wrapped _read",e),n&&(n=!1,t.resume())},this},"function"==typeof Symbol&&(S.prototype[Symbol.asyncIterator]=function(){return void 0===h&&(h=r(17356)),h(this)}),Object.defineProperty(S.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(S.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(S.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),S._fromList=$,Object.defineProperty(S.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(S.from=function(t,e){return void 0===f&&(f=r(6314)),f(S,t,e)})},95689(t,e,r){"use strict";t.exports=u;var n=r(73157).F,o=n.ERR_METHOD_NOT_IMPLEMENTED,i=n.ERR_MULTIPLE_CALLBACK,s=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=n.ERR_TRANSFORM_WITH_LENGTH_0,c=r(63527);function l(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(null===n)return this.emit("error",new i);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var o=this._readableState;o.reading=!1,(o.needReadable||o.length-1))throw new A(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(t,e,r){r(new g("_write()"))},S.prototype._writev=null,S.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,j(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),S.prototype.destroy=p.destroy,S.prototype._undestroy=p.undestroy,S.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),c=Symbol("lastReject"),l=Symbol("error"),u=Symbol("ended"),p=Symbol("lastPromise"),h=Symbol("handlePromise"),f=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[f].read();null!==r&&(t[p]=null,t[a]=null,t[c]=null,e(d(r,!1)))}}function m(t){o.nextTick(g,t)}var y=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[f]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[u])return Promise.resolve(d(void 0,!0));if(this[f].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[l]?r(t[l]):e(d(void 0,!0))})});var r,n=this[p];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[u]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var i=this[f].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[h])}return this[p]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[f].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),y);t.exports=function(t){var e,r=Object.create(b,(i(e={},f,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,c,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,u,{value:t._readableState.endEmitted,writable:!0}),i(e,h,{value:function(t,e){var n=r[f].read();n?(r[p]=null,r[a]=null,r[c]=null,t(d(n,!1))):(r[a]=t,r[c]=e)},writable:!0}),e));return r[p]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[c];return null!==e&&(r[p]=null,r[a]=null,r[c]=null,e(t)),void(r[l]=t)}var n=r[a];null!==n&&(r[p]=null,r[a]=null,r[c]=null,n(d(void 0,!0))),r[u]=!0}),t.on("readable",m.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return c.alloc(0);for(var e=c.allocUnsafe(t>>>0),r=this.head,n=0;r;)p(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=c.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:u,value:function(t,e){return l(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,c=this._writableState&&this._writableState.destroyed;return a||c?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){u||(u=t),t&&h.forEach(c),i||(h.forEach(c),p(u))})});return e.reduce(l)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,u=/^[a-zA-Z]:/;function p(t){return(t||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new y(unescape(t.pathname),{});else if("string"===o)for(e in n=new y(t,{}),f)delete n[e];else if("object"===o){for(e in t)e in f||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function m(t,e){t=(t=p(t)).replace(s,""),e=e||{};var r,n=l.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],c=0;return i?a?(r=n[2]+n[3]+n[4],c=n[2].length+n[3].length):(r=n[2]+n[4],c=n[2].length):a?(r=n[3]+n[4],c=n[3].length):r=n[4],"file:"===o?c>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):c>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:c,rest:r}}function y(t,e,r){if(t=(t=p(t)).replace(s,""),!(this instanceof y))return new y(t,e,r);var i,a,c,l,f,b,v=h.slice(),w=typeof e,A=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=m(t||"",e=d(e))).protocol&&!a.slashes,A.slashes=a.slashes||i&&e.slashes,A.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||u.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(A.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),u=["%","/","?",";","#"].concat(l),p=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,f=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?P+="x":P+=j[k];if(!P.match(h)){var M=N.slice(0,O),L=N.slice(O+1),D=j.match(f);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),C||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[A])for(O=0,R=l.length;O0)&&r.host.split("@"))&&(r.auth=C.shift(),r.hostname=C.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var E=x.slice(-1)[0],S=(r.host||t.host||x.length>1)&&("."===E||".."===E)||""===E,O=0,T=x.length;T>=0;T--)"."===(E=x[T])?x.splice(T,1):".."===E?(x.splice(T,1),O++):O&&(x.splice(T,1),O--);if(!w&&!A)for(;O--;O)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),S&&"/"!==x.join("/").substr(-1)&&x.push("");var C,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return _&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(C=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=C.shift(),r.hostname=C.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var c="undefined"!=typeof BigInt,l="undefined"!=typeof Symbol,u=a(Object.prototype.toString),p=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),f=a(Boolean.prototype.valueOf);if(c)var d=a(BigInt.prototype.valueOf);if(l)var g=a(Symbol.prototype.valueOf);function m(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function y(t){return"[object Map]"===u(t)}function b(t){return"[object Set]"===u(t)}function v(t){return"[object WeakMap]"===u(t)}function w(t){return"[object WeakSet]"===u(t)}function A(t){return"[object ArrayBuffer]"===u(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(A.working?A(t):t instanceof ArrayBuffer)}function _(t){return"[object DataView]"===u(t)}function E(t){return"undefined"!=typeof DataView&&(_.working?_(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||E(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},y.working="undefined"!=typeof Map&&y(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(y.working?y(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},A.working="undefined"!=typeof ArrayBuffer&&A(new ArrayBuffer),e.isArrayBuffer=x,_.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&_(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=E;var S="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function O(t){return"[object SharedArrayBuffer]"===u(t)}function T(t){return void 0!==S&&(void 0===O.working&&(O.working=O(new S)),O.working?O(t):t instanceof S)}function C(t){return m(t,p)}function N(t){return m(t,h)}function R(t){return m(t,f)}function j(t){return c&&m(t,d)}function P(t){return l&&m(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===u(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===u(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===u(t)},e.isGeneratorObject=function(t){return"[object Generator]"===u(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===u(t)},e.isNumberObject=C,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=j,e.isSymbolObject=P,e.isBoxedPrimitive=function(t){return C(t)||N(t)||R(t)||j(t)||P(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),h(n,t,n.depth)}function u(t,e){var r=l.styles[e];return r?"["+l.colors[r][0]+"m"+t+"["+l.colors[r][1]+"m":t}function p(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&S(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=h(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),E(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return f(r);if(0===s.length){if(S(r)){var c=r.name?": "+r.name:"";return t.stylize("[Function"+c+"]","special")}if(A(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(_(r))return t.stylize(Date.prototype.toString.call(r),"date");if(E(r))return f(r)}var l,u="",p=!1,x=["{","}"];return g(r)&&(p=!0,x=["[","]"]),S(r)&&(u=" [Function"+(r.name?": "+r.name:"")+"]"),A(r)&&(u=" "+RegExp.prototype.toString.call(r)),_(r)&&(u=" "+Date.prototype.toUTCString.call(r)),E(r)&&(u=" "+f(r)),0!==s.length||p&&0!=r.length?n<0?A(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),l=p?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(l,u,x)):x[0]+u+x[1]}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,c;if((c=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(c.value)<0?(a=y(r)?h(t,c.value,null):h(t,c.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function m(t){return"boolean"==typeof t}function y(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function A(t){return x(t)&&"[object RegExp]"===O(t)}function x(t){return"object"==typeof t&&null!==t}function _(t){return x(t)&&"[object Date]"===O(t)}function E(t){return x(t)&&("[object Error]"===O(t)||t instanceof Error)}function S(t){return"function"==typeof t}function O(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=m,e.isNull=y,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=A,e.types.isRegExp=A,e.isObject=x,e.isDate=_,e.types.isDate=_,e.isError=E,e.types.isNativeError=E,e.isFunction=S,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),C[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function j(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;i{if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(s.O).every(t=>s.O[t](r[c]))?r.splice(c--,1):(a=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce((e,r)=>(s.f[r](t,e),e),[])),s.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"849c733a93f5261d3bde",4508:"04b1afd183e5ecdd9cae",5448:"71cfe268d6f1213c4735",5528:"1445efe9cbaf4e4cbcb8",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8815:"9a5c507c75429c9c04e4"}[t],s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},n="nextcloud-ui-legacy:",s.l=(t,e,o,i)=>{if(r[t])r[t].push(e);else{var a,c;if(void 0!==o)for(var l=document.getElementsByTagName("script"),u=0;u{a.onerror=a.onload=null,clearTimeout(f);var o=r[t];if(delete r[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),e)return e(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),c&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=7062,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={7062:0};s.f.j=(e,r)=>{var n=s.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var i=s.p+s.u(e),a=new Error;s.l(i,r=>{if(s.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}},"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[i,a,c]=r,l=0;if(i.some(e=>0!==t[e])){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(c)var u=c(s)}for(e&&e(r);ls(48439));a=s.O(a)})(); -//# sourceMappingURL=comments-comments-app.js.map?v=e396083b7d87f32bc52d \ No newline at end of file +(()=>{var e,r,n,o={48439(e,r,n){"use strict";const o=(0,n(35947).YK)().setApp("comments").detectUser().build();var i=n(21777),s=n(53334),a=n(10810),l=n(85471),c=n(85168),u=n(57579),h=n(74095),f=n(42507),p=n(57578);const d={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var g=n(14486);const m=(0,g.A)(d,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon message-reply-text-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var y=n(83239),b=n(57505),v=n(24764),w=n(15502),A=n(41944),x=n(4604),_=n(88289),E=n(77764),S=n(33691),O=n(66001),T=n(16502),C=n(37793),N=n(61160);function R(t){if(!j(t))throw new Error("Parameter was not an error")}function j(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}class P extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:o}=function(t){let e,r="";if(0===t.length)e={};else if(j(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}(r);let i=o;if(n.cause&&(i=`${i}: ${n.cause.message}`),super(i),this.message=i,n.name&&"string"==typeof n.name?this.name=n.name:this.name="Layerr",n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return R(t),t._cause&&j(t._cause)?t._cause:null}static fullStack(t){R(t);const e=P.cause(t);return e?`${t.stack}\ncaused by: ${P.fullStack(e)}`:t.stack??""}static info(t){R(t);const e={},r=P.cause(t);return r&&Object.assign(e,P.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}var k=n(12692);const I="__PATH_SEPARATOR_POSIX__",M="__PATH_SEPARATOR_WINDOWS__";function L(t){try{const e=t.replace(/\//g,I).replace(/\\\\/g,M);return encodeURIComponent(e).split(M).join("\\\\").split(I).join("/")}catch(t){throw new P(t,"Failed encoding path")}}function D(t){return t.startsWith("/")?t:"/"+t}function $(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function U(t){let e=new N(t).pathname;return e.length<=0&&(e="/"),$(e)}function F(...t){return function(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}var B=n(83503);function W(t,e){const r=t.url.replace("//",""),n=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),o=t.method?t.method.toUpperCase():"GET",i=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",s=`00000000${e.nc}`.slice(-8),a=function(t,e,r,n,o,i,s){const a=s||B(`${e}:${r}:${n}`);return t&&"md5-sess"===t.toLowerCase()?B(`${a}:${o}:${i}`):a}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),l=B(`${o}:${n}`),c=B(i?`${a}:${e.nonce}:${s}:${e.cnonce}:${i}:${l}`:`${a}:${e.nonce}:${l}`),u={username:e.username,realm:e.realm,nonce:e.nonce,uri:n,qop:i,response:c,nc:s,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},h=[];for(const t in u)u[t]&&("qop"===t||"nc"===t||"algorithm"===t?h.push(`${t}=${u[t]}`):h.push(`${t}="${u[t]}"`));return`Digest ${h.join(", ")}`}function q(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var H,V,z,G,K,Y,X=n(85914);function Z(t){return X.decode(t)}function Q(t,e){var r;return`Basic ${r=`${t}:${e}`,X.encode(r)}`}new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint,function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(H||(H={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(V||(V={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(z||(z={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(G||(G={})),new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(K||(K={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(Y||(Y={}));const J="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,tt=J.fetch.bind(J);var et,rt;function nt(t,e,r,n,o){switch(t.authType){case et.Auto:e&&r&&(t.headers.Authorization=Q(e,r));break;case et.Digest:t.digest=function(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}(e,r,o);break;case et.None:break;case et.Password:t.headers.Authorization=Q(e,r);break;case et.Token:t.headers.Authorization=`${(i=n).token_type} ${i.access_token}`;break;default:throw new P({info:{code:rt.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}var i}J.Headers,J.Request,J.Response,function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(et||(et={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(rt||(rt={}));var ot=n(11568),it=n(11083);const st="@@HOTPATCHER",at=()=>{};function lt(t){return{original:t,methods:[t],final:!1}}class ct{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=st}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==st)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||at)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return function(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=lt(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(lt(e),{original:r})}else this.configuration.registry[t]=lt(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}let ut=null;function ht(){return"string"==typeof TARGET&&"react-native"===TARGET}function ft(){return"string"==typeof TARGET&&"web"===TARGET}function pt(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function dt(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?gt(e,t):pt(t)}return e}function gt(t,e){const r=pt(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?gt(r[t],e[t]):pt(e[t]):r[t]=e[t]:r[t]=e[t]}),r}function mt(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function yt(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}var bt=n(88310);const vt="function"==typeof ArrayBuffer,{toString:wt}=Object.prototype;function At(t){return vt&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===wt.call(t))}function xt(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function _t(t,e,r){const n=pt(t);return n.headers=yt(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function Et(t,e){return e.authType===et.Auto?async function(t,e){const r=await Ot(t);return r.ok?(e.authType=et.Password,r):401==r.status&&q(r)?(e.authType=et.Digest,nt(e,e.username,e.password,void 0,void 0),t._digest=e.digest,St(t)):r}(t,e):t._digest?St(t):Ot(t)}async function St(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=dt(t,{headers:{Authorization:W(t,e)}}));const r=await Ot(t);if(401==r.status){if(e.hasDigestAuth=function(t,e){if(!q(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}(r,e),e.hasDigestAuth){t=dt(t,{headers:{Authorization:W(t,e)}});const r=await Ot(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function Ot(t){const e=(ut||(ut=new ct),ut);return e.patchInline("request",t=>e.patchInline("fetch",tt,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=yt(e,t.headers)),void 0!==t.data){const[n,o]=function(t){if(!ft()&&!ht()&&t instanceof bt.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if(xt(t))return[t,{}];if(At(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}(t.data);r.body=n,e=yt(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),ft()||ht()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new ot.Agent:t.httpsAgent||new it.Agent),r.headers=e,r}(t)),t)}var Tt=n(68928);const Ct=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")},Nt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Rt=t=>t.replace(/[[\]\\-]/g,"\\$&"),jt=t=>t.join(""),Pt=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const n=[],o=[];let i=r+1,s=!1,a=!1,l=!1,c=!1,u=r,h="";t:for(;ih?n.push(Rt(h)+"-"+Rt(e)):e===h&&n.push(Rt(e)),h="",i++):t.startsWith("-]",i+1)?(n.push(Rt(e+"-")),i+=2):t.startsWith("-",i+1)?(h=e,i+=2):(n.push(Rt(e)),i++)}else l=!0,i++}else c=!0,i++}if(ue?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1"),It=new Set(["!","?","+","*","@"]),Mt=t=>It.has(t),Lt="(?!\\.)",Dt=new Set(["[","."]),$t=new Set(["..","."]),Ut=new Set("().*{}+?[]^$\\!"),Ft=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Bt="[^/]",Wt=Bt+"*?",qt=Bt+"+?";class Ht{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#l;#c;#u=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#l=this.#t===this?r:this.#t.#l,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#c?this.#c:this.type?this.#c=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#c=this.#n.map(t=>String(t)).join("")}#h(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?Ht.#p(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let o="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!$t.has(this.#n[0]))){const r=Dt,i=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));o=i?"(?!(?:^|/)\\.\\.?(?:$|/))":s?Lt:""}let i="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(i="(?:$|\\/)"),[o+n+i,kt(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let o=this.#d(e);if(this.isStart()&&this.isEnd()&&!o&&"!"!==this.type){const t=this.toString();return this.#n=[t],this.type=null,this.#e=void 0,[t,kt(this.toString()),!1,!1]}let i=!r||t||e?"":this.#d(!0);i===o&&(i=""),i&&(o=`(?:${o})(?:${i})*?`);let s="";return s="!"===this.type&&this.#u?(this.isStart()&&!e?Lt:"")+qt:n+o+("!"===this.type?"))"+(!this.isStart()||e||t?"":Lt)+Wt+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),[s,kt(o),this.#e=!!this.#e,this.#r]}#d(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#p(t,e,r=!1){let n=!1,o="",i=!1;for(let s=0;s(Ct(e),!(!r.nocomment&&"#"===e.charAt(0))&&new be(e,r).match(t)),Gt=/^\*+([^+@!?\*\[\(]*)$/,Kt=t=>e=>!e.startsWith(".")&&e.endsWith(t),Yt=t=>e=>e.endsWith(t),Xt=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),Zt=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),Qt=/^\*+\.\*+$/,Jt=t=>!t.startsWith(".")&&t.includes("."),te=t=>"."!==t&&".."!==t&&t.includes("."),ee=/^\.\*+$/,re=t=>"."!==t&&".."!==t&&t.startsWith("."),ne=/^\*+$/,oe=t=>0!==t.length&&!t.startsWith("."),ie=t=>0!==t.length&&"."!==t&&".."!==t,se=/^\?+([^+@!?\*\[\(]*)?$/,ae=([t,e=""])=>{const r=he([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},le=([t,e=""])=>{const r=fe([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},ce=([t,e=""])=>{const r=fe([t]);return e?t=>r(t)&&t.endsWith(e):r},ue=([t,e=""])=>{const r=he([t]);return e?t=>r(t)&&t.endsWith(e):r},he=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},fe=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},pe="object"==typeof Vt&&Vt?"object"==typeof Vt.env&&Vt.env&&Vt.env.__MINIMATCH_TESTING_PLATFORM__||Vt.platform:"posix";zt.sep="win32"===pe?"\\":"/";const de=Symbol("globstar **");zt.GLOBSTAR=de,zt.filter=(t,e={})=>r=>zt(r,t,e);const ge=(t,e={})=>Object.assign({},t,e);zt.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return zt;const e=zt;return Object.assign((r,n,o={})=>e(r,n,ge(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,ge(t,r))}static defaults(r){return e.defaults(ge(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,ge(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,ge(t,n))}},unescape:(r,n={})=>e.unescape(r,ge(t,n)),escape:(r,n={})=>e.escape(r,ge(t,n)),filter:(r,n={})=>e.filter(r,ge(t,n)),defaults:r=>e.defaults(ge(t,r)),makeRe:(r,n={})=>e.makeRe(r,ge(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,ge(t,n)),match:(r,n,o={})=>e.match(r,n,ge(t,o)),sep:e.sep,GLOBSTAR:de})};const me=(t,e={})=>(Ct(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:Tt(t));zt.braceExpand=me,zt.makeRe=(t,e={})=>new be(t,e).makeRe(),zt.match=(t,e,r={})=>{const n=new be(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const ye=/[?*]|[+@!]\(.*?\)|\[|\]/;class be{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){Ct(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||pe,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&ye.test(t[2])||ye.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const l=r.slice(0);l[n]="**",t.push(l),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;ni?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var i=0,s=0,a=t.length,l=e.length;i>> no match, partial?",t,h,e,f),h!==a))}let o;if("string"==typeof c?(o=u===c,this.debug("string match",c,u,o)):(o=c.test(u),this.debug("pattern match",c,u,o)),!o)return!1}if(i===a&&s===l)return!0;if(i===a)return r;if(s===l)return i===a-1&&""===t[i];throw new Error("wtf?")}braceExpand(){return me(this.pattern,this.options)}parse(t){Ct(t);const e=this.options;if("**"===t)return de;if(""===t)return"";let r,n=null;(r=t.match(ne))?n=e.dot?ie:oe:(r=t.match(Gt))?n=(e.nocase?e.dot?Zt:Xt:e.dot?Yt:Kt)(r[1]):(r=t.match(se))?n=(e.nocase?e.dot?le:ae:e.dot?ce:ue)(r):(r=t.match(Qt))?n=e.dot?te:Jt:(r=t.match(ee))&&(n=re);const o=Ht.fromGlob(t,this.options).toMMPattern();return n&&"object"==typeof o&&Reflect.defineProperty(o,"test",{value:n}),o}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,r=e.noglobstar?"[^/]*?":e.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",n=new Set(e.nocase?["i"]:[]);let o=t.map(t=>{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===de?de:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===de&&i!==de&&(void 0===i?void 0!==o&&o!==de?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==de&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=de))}),e.filter(t=>t!==de).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;t=400)throw ve(e);return e}function Ae(t,e,r=!1){return r?{data:e,headers:t.headers?mt(t.headers):{},status:t.status,statusText:t.statusText}:e}zt.AST=Ht,zt.Minimatch=be,zt.escape=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&"),zt.unescape=kt;const xe={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1},_e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",Ee=new RegExp("^["+_e+"]["+_e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function Se(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;t0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][Te]={startIndex:e})}static getMetaDataSymbol(){return Te}}class Ne{constructor(t){this.suppressValidationErr=!t}readDocType(t,e){const r={};if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let n=1,o=!1,i=!1,s="";for(;e"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]?o=!0:s+=t[e];else{if(o&&je(t,"!ENTITY",e)){let n,o;e+=7,[n,o,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===o.indexOf("&")&&(r[n]={regx:RegExp(`&${n};`,"g"),val:o})}else if(o&&je(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(o&&je(t,"!ATTLIST",e))e+=8;else if(o&&je(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!je(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}n++,s=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=Re(t,e);let r="";for(;e{for(;e{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}class $e{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>Je(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>Je(e,16,"&#x")}},this.addExternalEntities=Ue,this.parseXml=He,this.parseTextData=Fe,this.resolveNameSpace=Be,this.buildAttributesMap=qe,this.isItStopNode=Ke,this.replaceEntitiesValue=ze,this.readStopNodeData=Ze,this.saveTextToParentTag=Ge,this.addChild=Ve,this.ignoreAttributesFn=De(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t));const n=this.options.tagValueProcessor(e,t,r,o,i);return null==n?t:typeof n!=typeof t||n!==t?n:this.options.trimValues||t.trim()===t?Qe(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function Be(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const We=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function qe(t,e){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=Se(t,We),n=r.length,o={};for(let t=0;t",s,"Closing Tag is not closed.");let i=t.substring(s+2,e).trim();if(this.options.removeNSPrefix){const t=i.indexOf(":");-1!==t&&(i=i.substr(t+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),r&&(n=this.saveTextToParentTag(n,r,o));const a=o.substring(o.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error(`Unpaired tag can not be used as closing tag: `);let l=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(l=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=o.lastIndexOf("."),o=o.substring(0,l),r=this.tagsNodeStack.pop(),n="",s=e}else if("?"===t[s+1]){let e=Xe(t,s,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,o),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new Ce(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,o)),this.addChild(r,t,o,s)}s=e.closeIndex+1}else if("!--"===t.substr(s+1,3)){const e=Ye(t,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){const i=t.substring(s+4,e-2);n=this.saveTextToParentTag(n,r,o),r.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}s=e}else if("!D"===t.substr(s+1,2)){const e=i.readDocType(t,s);this.docTypeEntities=e.entities,s=e.i}else if("!["===t.substr(s+1,2)){const e=Ye(t,"]]>",s,"CDATA is not closed.")-2,i=t.substring(s+9,e);n=this.saveTextToParentTag(n,r,o);let a=this.parseTextData(i,r.tagname,o,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):r.add(this.options.textNodeName,a),s=e+2}else{let i=Xe(t,s,this.options.removeNSPrefix),a=i.tagName;const l=i.rawTagName;let c=i.tagExp,u=i.attrExpPresent,h=i.closeIndex;if(this.options.transformTagName){const t=this.options.transformTagName(a);c===a&&(c=t),a=t}r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,o,!1));const f=r;f&&-1!==this.options.unpairedTags.indexOf(f.tagname)&&(r=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),a!==e.tagname&&(o+=o?"."+a:a);const p=s;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,o,a)){let e="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===a[a.length-1]?(a=a.substr(0,a.length-1),o=o.substr(0,o.length-1),c=a):c=c.substr(0,c.length-1),s=i.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))s=i.closeIndex;else{const r=this.readStopNodeData(t,l,h+1);if(!r)throw new Error(`Unexpected end of ${l}`);s=r.i,e=r.tagContent}const n=new Ce(a);a!==c&&u&&(n[":@"]=this.buildAttributesMap(c,o)),e&&(e=this.parseTextData(e,a,o,!0,u,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),n.add(this.options.textNodeName,e),this.addChild(r,n,o,p)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){if("/"===a[a.length-1]?(a=a.substr(0,a.length-1),o=o.substr(0,o.length-1),c=a):c=c.substr(0,c.length-1),this.options.transformTagName){const t=this.options.transformTagName(a);c===a&&(c=t),a=t}const t=new Ce(a);a!==c&&u&&(t[":@"]=this.buildAttributesMap(c,o)),this.addChild(r,t,o,p),o=o.substr(0,o.lastIndexOf("."))}else{const t=new Ce(a);this.tagsNodeStack.push(r),a!==c&&u&&(t[":@"]=this.buildAttributesMap(c,o)),this.addChild(r,t,o,p),r=t}n="",s=h}}else n+=t[s];return e.child};function Ve(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.updateTag(e.tagname,r,e[":@"]);!1===o||("string"==typeof o?(e.tagname=o,t.addChild(e,n)):t.addChild(e,n))}const ze=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const r=this.docTypeEntities[e];t=t.replace(r.regx,r.val)}for(let e in this.lastEntities){const r=this.lastEntities[e];t=t.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const r=this.htmlEntities[e];t=t.replace(r.regex,r.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function Ge(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function Ke(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function Ye(t,e,r,n){const o=t.indexOf(e,r);if(-1===o)throw new Error(n);return o+e.length-1}function Xe(t,e,r,n=">"){const o=function(t,e,r=">"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=Ye(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=Ye(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=Ye(t,"]]>",r,"StopNode is not closed.")-2;else{const n=Xe(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function Qe(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},Me,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&ke.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(Le);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const o=Ie.exec(r);if(o){const i=o[1]||"",s=o[2];let a=(n=o[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const l=i?"."===t[s.length+1]:"."===t[s.length];if(!e.leadingZeros&&(s.length>1||1===s.length&&!l))return t;{const n=Number(r),o=String(n);if(0===n)return n;if(-1!==o.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===o||o===a||o===`${i}${a}`?n:t;let l=s?a:r;return s?l===o||i+l===o?n:t:l===o||l===i+o?n:t}}return t}var n}(t,r)}return void 0!==t?t:""}function Je(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}const tr=Ce.getMetaDataSymbol();function er(t,e){return rr(t,e)}function rr(t,e,r){let n;const o={};for(let i=0;i0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function nr(t){const e=Object.keys(t);for(let t=0;t5&&"xml"===n)return dr("InvalidXml","XML declaration allowed only at the start of the document.",yr(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function cr(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function ur(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const hr=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function fr(t,e){const r=Se(t,hr),n={};for(let t=0;t"!==t[i]&&" "!==t[i]&&"\t"!==t[i]&&"\n"!==t[i]&&"\r"!==t[i];i++)l+=t[i];if(l=l.trim(),"/"===l[l.length-1]&&(l=l.substring(0,l.length-1),i--),!mr(l)){let e;return e=0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",dr("InvalidTag",e,yr(t,i))}const c=ur(t,i);if(!1===c)return dr("InvalidAttr","Attributes for '"+l+"' have open quote.",yr(t,i));let u=c.value;if(i=c.index,"/"===u[u.length-1]){const r=i-u.length;u=u.substring(0,u.length-1);const o=fr(u,e);if(!0!==o)return dr(o.err.code,o.err.msg,yr(t,r+o.err.line));n=!0}else if(a){if(!c.tagClosed)return dr("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",yr(t,i));if(u.trim().length>0)return dr("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",yr(t,s));if(0===r.length)return dr("InvalidTag","Closing tag '"+l+"' has not been opened.",yr(t,s));{const e=r.pop();if(l!==e.tagName){let r=yr(t,e.tagStartPos);return dr("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+l+"'.",yr(t,s))}0==r.length&&(o=!0)}}else{const a=fr(u,e);if(!0!==a)return dr(a.err.code,a.err.msg,yr(t,i-u.length+a.err.line));if(!0===o)return dr("InvalidXml","Multiple possible root nodes found.",yr(t,i));-1!==e.unpairedTags.indexOf(l)||r.push({tagName:l,tagStartPos:s}),n=!0}for(i++;i0)||dr("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):dr("InvalidXml","Start tag expected.",1)}(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new $e(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:er(n,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return Ce.getMetaDataSymbol()}}var wr,Ar=n(26602);function xr(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function _r(t,e,r=wr.Original){const n=Ar.get(t,e);return"array"===r&&!1===Array.isArray(n)?[n]:"object"===r&&Array.isArray(n)?n[0]:n}function Er(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[xr]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return Ar.set(r,"multistatus.response",_r(r,"multistatus.response",wr.Array)),Ar.set(r,"multistatus.response",Ar.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?Ar.set(e,"status",_r(e,"status",wr.Object)):(Ar.set(e,"propstat",_r(e,"propstat",wr.Object)),Ar.set(e,"propstat.prop",_r(e,"propstat.prop",wr.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new vr({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function Sr(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:o="0",resourcetype:i=null,getcontenttype:s=null,getetag:a=null}=t,l=i&&"object"==typeof i&&void 0!==i.collection?"directory":"file",c={filename:e,basename:k.basename(e),lastmod:n,size:parseInt(o,10),type:l,etag:"string"==typeof a?a.replace(/"/g,""):null};return"file"===l&&(c.mime=s&&"string"==typeof s?s.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function Or(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}async function Tr(t,e,r={}){const{details:n=!1}=r,o=_t({url:F(t.remoteURL,L(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),i=await Et(o,t);we(t,i);const s=await i.text(),a=function(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,a,l]=i.split(" ",3),c=parseInt(a,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return Sr(o,$(e),r)}(await Er(s,t.parsing),e,n);return Ae(i,a,n)}async function Cr(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=function(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=k.dirname(e)}while(e&&"/"!==e);return r}($(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let o=!1;for(const i of n)if(o)await Cr(t,i,{...r,recursive:!1});else try{if("directory"!==(await Tr(t,i)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;o=!0,await Cr(t,i,{...r,recursive:!1})}}(t,e,r);const n=_t({url:F(t.remoteURL,(o=L(e),o.endsWith("/")?o:o+"/")),method:"MKCOL"},t,r);var o;we(t,await Et(n,t))}!function(t){t.Array="array",t.Object="object",t.Original="original"}(wr||(wr={}));const Nr=()=>{};var Rr=n(62045).hp;const jr=t=>t;function Pr(t,e){let r="";return e.format&&e.indentBy.length>0&&(r="\n"),kr(t,e,"",r)}function kr(t,e,r,n){let o="",i=!1;for(let s=0;s`,i=!1;continue}if(l===e.commentPropName){o+=n+`\x3c!--${a[l][0][e.textNodeName]}--\x3e`,i=!0;continue}if("?"===l[0]){const t=Mr(a[":@"],e),r="?xml"===l?"":n;let s=a[l][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=r+`<${l}${s}${t}?>`,i=!0;continue}let u=n;""!==u&&(u+=e.indentBy);const h=n+`<${l}${Mr(a[":@"],e)}`,f=kr(a[l],e,c,u);-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?o+=h+">":o+=h+"/>":f&&0!==f.length||!e.suppressEmptyNode?f&&f.endsWith(">")?o+=h+`>${f}${n}`:(o+=h+">",f&&""!==n&&(f.includes("/>")||f.includes("`):o+=h+"/>",i=!0}return o}function Ir(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function Ur(t){this.options=Object.assign({},$r,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=De(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Wr),this.processTextOrObjNode=Fr,this.options.format?(this.indentate=Br,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function Fr(t,e,r,n){const o=this.j2x(t,r+1,n.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,r):this.buildObjectNode(o.val,e,o.attrStr,r)}function Br(t){return this.options.indentBy.repeat(t)}function Wr(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}function qr(t){return new Ur({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Hr({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function Hr(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=Hr(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}Ur.prototype.build=function(t){return this.options.preserveOrder?Pr(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},Ur.prototype.j2x=function(t,e,r){let n="",o="";const i=r.join(".");for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s))if(void 0===t[s])this.isAttribute(s)&&(o+="");else if(null===t[s])this.isAttribute(s)||s===this.options.cdataPropName?o+="":"?"===s[0]?o+=this.indentate(e)+"<"+s+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+s+"/"+this.tagEndChar;else if(t[s]instanceof Date)o+=this.buildTextValNode(t[s],s,"",e);else if("object"!=typeof t[s]){const r=this.isAttribute(s);if(r&&!this.ignoreAttributesFn(r,i))n+=this.buildAttrPairStr(r,""+t[s]);else if(!r)if(s===this.options.textNodeName){let e=this.options.tagValueProcessor(s,""+t[s]);o+=this.replaceEntitiesValue(e)}else o+=this.buildTextValNode(t[s],s,"",e)}else if(Array.isArray(t[s])){const n=t[s].length;let i="",a="";for(let l=0;l"+t+o}},Ur.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;et.trim()),server:o.headers.get("Server")??""}}const Kr="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";var Yr=n(63814);function Xr(){return(0,Yr.dC)("dav/comments")}const Zr=function(t,e={}){const{authType:r=null,remoteBasePath:n,contactHref:o=Kr,ha1:i,headers:s={},httpAgent:a,httpsAgent:l,password:c,token:u,username:h,withCredentials:f}=e;let p=r;p||(p=h||c?et.Password:et.None);const d={authType:p,remoteBasePath:n,contactHref:o,ha1:i,headers:Object.assign({},s),httpAgent:a,httpsAgent:l,password:c,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[xr]},remotePath:U(t),remoteURL:t,token:u,username:h,withCredentials:f};return nt(d,h,c,u,i),{copyFile:(t,e,r)=>async function(t,e,r,n={}){const o=_t({url:F(t.remoteURL,L(e)),method:"COPY",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T",Depth:n.shallow?"0":"infinity"}},t,n);we(t,await Et(o,t))}(d,t,e,r),createDirectory:(t,e)=>Cr(d,t,e),createReadStream:(t,e)=>function(t,e,r={}){const n=new(0,bt.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const o=_t({url:F(t.remoteURL,L(e)),method:"GET",headers:n},t,r),i=await Et(o,t);if(we(t,i),n.Range&&206!==i.status){const t=new Error(`Invalid response code for partial request: ${i.status}`);throw t.status=i.status,t}return r.callback&&setTimeout(()=>{r.callback(i)},0),i.body}(t,e,r).then(t=>{t.pipe(n)}).catch(t=>{n.emit("error",t)}),n}(d,t,e),createWriteStream:(t,e,r)=>function(t,e,r={},n=Nr){const o=new(0,bt.PassThrough),i={};return!1===r.overwrite&&(i["If-None-Match"]="*"),Et(_t({url:F(t.remoteURL,L(e)),method:"PUT",headers:i,data:o,maxRedirects:0},t,r),t).then(e=>we(t,e)).then(t=>{setTimeout(()=>{n(t)},0)}).catch(t=>{o.emit("error",t)}),o}(d,t,e,r),customRequest:(t,e)=>async function(t,e,r){r.url||(r.url=F(t.remoteURL,L(e)));const n=_t(r,t,{}),o=await Et(n,t);return we(t,o),o}(d,t,e),deleteFile:(t,e)=>async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e)),method:"DELETE"},t,r);we(t,await Et(n,t))}(d,t,e),exists:(t,e)=>async function(t,e,r={}){try{return await Tr(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}(d,t,e),getDirectoryContents:(t,e)=>async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),o=await Et(n,t);we(t,o);const i=await o.text();if(!i)throw new Error("Failed parsing directory contents: Empty response");const s=await Er(i,t.parsing),a=D(e);let l=function(t,e,r,n=!1,o=!1){const i=k.join(e,"/"),{multistatus:{response:s}}=t,a=s.map(t=>{const e=function(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new P(t,"Failed normalising HREF")}}(t.href),{propstat:{prop:r}}=t;return Sr(r,"/"===i?decodeURIComponent($(e)):$(k.relative(decodeURIComponent(i),decodeURIComponent(e))),n)});return o?a:a.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(s,D(t.remoteBasePath||t.remotePath),a,r.details,r.includeSelf);return r.glob&&(l=function(t,e){return t.filter(t=>zt(t.filename,e,{matchBase:!0}))}(l,r.glob)),Ae(o,l,r.details)}(d,t,e),getFileContents:(t,e)=>async function(t,e,r={}){const{format:n="binary"}=r;if("binary"!==n&&"text"!==n)throw new P({info:{code:rt.InvalidOutputFormat}},`Invalid output format: ${n}`);return"text"===n?async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[jr]},t,r),o=await Et(n,t);we(t,o);const i=await o.text();return Ae(o,i,r.details)}(t,e,r):async function(t,e,r={}){const n=_t({url:F(t.remoteURL,L(e)),method:"GET"},t,r),o=await Et(n,t);let i;return we(t,o),i=ft()||ht()?await o.arrayBuffer():Rr.from(await o.arrayBuffer()),Ae(o,i,r.details)}(t,e,r)}(d,t,e),getFileDownloadLink:t=>function(t,e){let r=F(t.remoteURL,L(e));const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new P({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getFileUploadLink:t=>function(t,e){let r=`${F(t.remoteURL,L(e))}?Content-Type=application/octet-stream`;const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new P({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getHeaders:()=>Object.assign({},d.headers),getQuota:t=>async function(t,e={}){const r=e.path||"/",n=_t({url:F(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),o=await Et(n,t);we(t,o);const i=await o.text();return Ae(o,function(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":n}}}=e;return void 0!==r&&void 0!==n?{used:parseInt(String(r),10),available:Or(n)}:null}catch(t){}return null}(await Er(i,t.parsing)),e.details)}(d,t),lock:(t,e)=>async function(t,e,r={}){const{refreshToken:n,timeout:o=Vr}=r,i={Accept:"text/plain,application/xml",Timeout:o};n&&(i.If=n);const s=_t({url:F(t.remoteURL,L(e)),method:"LOCK",headers:i,data:qr(t.contactHref)},t,r),a=await Et(s,t);we(t,a);const l=(h=await a.text(),new vr({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(h)),c=Ar.get(l,"prop.lockdiscovery.activelock.locktoken.href"),u=Ar.get(l,"prop.lockdiscovery.activelock.timeout");var h;if(!c)throw ve(a,"No lock token received: ");return{token:c,serverTimeout:u}}(d,t,e),moveFile:(t,e,r)=>async function(t,e,r,n={}){const o=_t({url:F(t.remoteURL,L(e)),method:"MOVE",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T"}},t,n);we(t,await Et(o,t))}(d,t,e,r),putFileContents:(t,e,r)=>async function(t,e,r,n={}){const{contentLength:o=!0,overwrite:i=!0}=n,s={"Content-Type":"application/octet-stream"};!ft()&&!ht()&&void 0!==bt&&void 0!==bt?.Readable&&r instanceof bt.Readable||!1===o||(s["Content-Length"]="number"==typeof o?`${o}`:`${function(t){if(At(t))return t.byteLength;if(xt(t))return t.length;if("string"==typeof t)return(0,zr.d)(t);throw new P({info:{code:rt.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(r)}`),i||(s["If-None-Match"]="*");const a=_t({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:r},t,n),l=await Et(a,t);try{we(t,l)}catch(t){const e=t;if(412!==e.status||i)throw e;return!1}return!0}(d,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>async function(t,e,r,n,o,i={}){const s=await Gr(t,e,i);if(s.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new P({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(n-r+1),"X-Update-Range":`bytes=${r}-${n}`},a=_t({url:F(t.remoteURL,L(e)),method:"PATCH",headers:s,data:o},t,i);we(t,await Et(a,t))}(t,e,r,n,o,i);if(s.server.includes("Apache")&&s.compliance.includes(""))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new P({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/octet-stream","Content-Length":""+(n-r+1),"Content-Range":`bytes ${r}-${n}/*`},a=_t({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:o},t,i);we(t,await Et(a,t))}(t,e,r,n,o,i);throw new P({info:{code:rt.NotSupported}},"Not supported")}(d,t,e,r,n,o),getDAVCompliance:t=>Gr(d,t),search:(t,e)=>async function(t,e,r={}){const{details:n=!1}=r,o=_t({url:F(t.remoteURL,L(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),i=await Et(o,t);we(t,i);const s=await i.text(),a=function(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith(L(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(Sr(t.propstat.prop,e,r))}),n}(await Er(s,t.parsing),e,n);return Ae(i,a,n)}(d,t,e),setHeaders:t=>{d.headers=Object.assign({},t)},stat:(t,e)=>Tr(d,t,e),unlock:(t,e,r)=>async function(t,e,r,n={}){const o=_t({url:F(t.remoteURL,L(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),i=await Et(o,t);if(we(t,i),204!==i.status&&200!==i.status)throw ve(i)}(d,t,e,r),registerAttributeParser:t=>{d.parsing.attributeParsers.push(t)},registerTagParser:t=>{d.parsing.tagParsers.push(t)}}}(Xr());function Qr(t){Zr.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,i.zo)(Qr),Qr((0,i.do)());const Jr=Zr;var tn=n(19051);function en(t,e=1){const r=new DOMParser;let n=t;for(let t=0;t({idsInLimbo:[]}),actions:{addId(t){this.idsInLimbo.push(t)},removeId(t){const e=this.idsInLimbo.indexOf(t);e>-1&&this.idsInLimbo.splice(e,1)},checkForId(t){return this.idsInLimbo.includes(t)}}}),nn={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data:()=>({deleted:!1,editing:!1,loading:!1}),computed:{...(0,a.n2)(rn)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await async function(t,e,r,n){const o=["",t,e,r].join("/");return await Jr.customRequest(o,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${n}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.resourceId,this.id,e),o.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to edit the comment")),o.error("An error occurred while trying to edit the comment",{error:e})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,c.Br);(0,c._h)(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await async function(t,e,r){const n=["",t,e,r].join("/");await Jr.deleteFile(n)}(this.resourceType,this.resourceId,this.id),o.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to delete the comment")),o.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const t=await async function(t,e,r){const n=["",t,e].join("/"),o=await tn.Ay.post(Xr()+n,{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:t,verb:"comment"}),s=n+"/"+parseInt(o.headers["content-location"].split("/").pop()),a=await Jr.stat(s,{details:!0}),l=a.data.props;return l.actorDisplayName=en(l.actorDisplayName,2),l.message=en(l.message,2),a.data}(this.resourceType,this.resourceId,e);o.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:t}),this.$emit("new",t),this.$emit("update:message",""),this.localMessage=""}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to create the comment")),o.error("An error occurred while trying to create the comment",{error:e})}finally{this.loading=!1}}}},on={name:"Comment",components:{IconArrowRight:S.A,IconClose:O.A,IconTrashCanOutline:C.A,IconPencilOutline:T.A,NcActionButton:b.A,NcActions:v.A,NcActionSeparator:w.A,NcAvatar:A.A,NcButton:h.A,NcDateTime:x.A,NcLoadingIcon:_.A,NcRichContenteditable:()=>Promise.all([n.e(4208),n.e(5528)]).then(n.bind(n,95528)),NcRichText:()=>Promise.all([n.e(4208),n.e(4508)]).then(n.bind(n,64508))},mixins:[nn],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data:()=>({expanded:!1,localMessage:"",submitted:!1}),computed:{...(0,a.n2)(rn),isOwnComment(){return(0,i.HW)().uid===this.actorId},richContent(){const t={};let e=this.localMessage;return Object.keys(this.userData).forEach((r,n)=>{const o=`mention-${n}`,i=new RegExp(`@${r}|@"${r}"`,"g");e=e.replace(i,`{${o}}`),t[o]={component:E.A,props:{user:r,displayName:this.userData[r].label,primary:this.userData[r].primary}}}),{mentions:t,message:e}},isEmptyMessage(){return!this.localMessage||""===this.localMessage.trim()},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(t){this.updateLocalMessage(t)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:s.Tl,updateLocalMessage(t){this.localMessage=t.toString(),this.submitted=!1},onSubmit(){if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick(()=>{this.$refs.editor.$el.focus()})):void this.onEditComment(this.localMessage.trim())},onExpand(){this.expanded=!0}}};var sn=n(85072),an=n.n(sn),ln=n(97825),cn=n.n(ln),un=n(77659),hn=n.n(un),fn=n(55056),pn=n.n(fn),dn=n(10540),gn=n.n(dn),mn=n(41113),yn=n.n(mn),bn=n(22408),vn={};vn.styleTagTransform=yn(),vn.setAttributes=pn(),vn.insert=hn().bind(null,"head"),vn.domAPI=cn(),vn.insertStyleElement=gn(),an()(bn.A,vn),bn.A&&bn.A.locals&&bn.A.locals;var wn=(0,g.A)(on,function(){var t=this,e=t._self._c;return e(t.tag,{directives:[{name:"show",rawName:"v-show",value:!t.deleted&&!t.isLimbo,expression:"!deleted && !isLimbo"}],tag:"component",staticClass:"comment",class:{"comment--loading":t.loading}},[e("div",{staticClass:"comment__side"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":t.actorDisplayName,user:t.actorId,size:32}})],1),t._v(" "),e("div",{staticClass:"comment__body"},[e("div",{staticClass:"comment__header"},[e("span",{staticClass:"comment__author"},[t._v(t._s(t.actorDisplayName))]),t._v(" "),t.isOwnComment&&t.id&&!t.loading?e("NcActions",{staticClass:"comment__actions"},[t.editing?e("NcActionButton",{on:{click:t.onEditCancel},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconClose",{attrs:{size:20}})]},proxy:!0}],null,!1,2888946197)},[t._v("\n\t\t\t\t\t"+t._s(t.t("comments","Cancel edit"))+"\n\t\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconPencilOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,3345211262)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Edit comment"))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onDeleteWithUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconTrashCanOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1034796883)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Delete comment"))+"\n\t\t\t\t\t")])]],2):t._e(),t._v(" "),t.id&&t.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):t.creationDateTime?e("NcDateTime",{staticClass:"comment__timestamp",attrs:{timestamp:t.timestamp,"ignore-seconds":!0}}):t._e()],1),t._v(" "),t.editor||t.editing?e("form",{staticClass:"comment__editor",on:{submit:function(t){t.preventDefault()}}},[e("div",{staticClass:"comment__editor-group"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":t.autoComplete,contenteditable:!t.loading,label:t.editor?t.t("comments","New comment"):t.t("comments","Edit comment"),placeholder:t.t("comments","Write a comment …"),"model-value":t.localMessage,"user-data":t.userData,"aria-describedby":"tab-comments__editor-description"},on:{"update:value":t.updateLocalMessage,submit:t.onSubmit}}),t._v(" "),e("div",{staticClass:"comment__submit"},[e("NcButton",{attrs:{variant:"tertiary-no-background",type:"submit","aria-label":t.t("comments","Post comment"),disabled:t.isEmptyMessage},on:{click:t.onSubmit},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("NcLoadingIcon"):e("IconArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,758946661)})],1)],1),t._v(" "),e("div",{staticClass:"comment__editor-description",attrs:{id:"tab-comments__editor-description"}},[t._v("\n\t\t\t\t"+t._s(t.t("comments","@ for mentions, : for emoji, / for smart picker"))+"\n\t\t\t")])]):e("NcRichText",{staticClass:"comment__message",class:{"comment__message--expanded":t.expanded},attrs:{text:t.richContent.message,arguments:t.richContent.mentions,"use-markdown":""},nativeOn:{click:function(e){return t.onExpand.apply(null,arguments)}}})],1)])},[],!1,null,"70317f94",null);const An=wn.exports;var xn=n(81222);const _n=(0,l.pM)({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(t,e){const{data:r}=await tn.Ay.get((0,Yr.KT)("core/autocomplete/get"),{params:{search:t,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:(0,xn.C)("comments","maxAutoCompleteResults")}});return r.ocs.data.forEach(t=>{this.userData[t.id]=t}),e(Object.values(this.userData))},genMentionsData(t){return Object.values(t).flat().forEach(t=>{this.userData[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.HW)()?.uid===t.mentionId}}),this.userData}}});async function En({resourceType:t,resourceId:e},r){const n=["",t,e].join("/"),o=r.datetime?`${r.datetime.toISOString()}`:"",i=await Jr.customRequest(n,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??20}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${o}\n\t\t\t`,...r}),s=await i.text();return Ae(i,function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return Sr(r,r.id.toString(),e)})}(await Er(s),!0),!0)}const Sn={name:"Comments",components:{Comment:An,NcEmptyContent:f.A,NcButton:h.A,IconRefresh:y.A,IconMessageReplyTextOutline:m,IconAlertCircleOutline:p.A},directives:{elementVisibility:u.Zx},mixins:[_n],data:()=>({error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:An,userData:{}}),computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&0===this.offset}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:s.Tl,async onVisibilityChange(t){if(t)try{await function(t,e,r){const n=["",t,e].join("/"),o=r.toUTCString();return Jr.customRequest(n,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.currentResourceId,new Date)}catch(t){(0,c.Qg)(t.message||(0,s.Tl)("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:e}=function(t){const e=new AbortController,r=e.signal;return{request:async function(e,n){return await t(e,{signal:r,...n})},abort:()=>e.abort()}}(En);this.cancelRequest=e;const{data:r}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${r.length} comments`,{comments:r}),r.length<20&&(this.done=!0);for(const t of r)t.props.actorId=t.props.actorId.toString();this.comments=[...this.comments,...r],this.offset+=20}catch(t){if("cancel"===t.message)return;this.error=(0,s.Tl)("comments","Unable to load the comments list"),o.error("Error loading the comments list",{error:t})}finally{this.loading=!1}},onNewComment(t){this.comments.unshift(t)},onDelete(t){const e=this.comments.findIndex(e=>e.props.id===t);e>-1?this.comments.splice(e,1):o.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},On=Sn;var Tn=n(94262),Cn={};Cn.styleTagTransform=yn(),Cn.setAttributes=pn(),Cn.insert=hn().bind(null,"head"),Cn.domAPI=cn(),Cn.insertStyleElement=gn(),an()(Tn.A,Cn),Tn.A&&Tn.A.locals&&Tn.A.locals;const Nn=(0,g.A)(On,function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.onVisibilityChange,expression:"onVisibilityChange"}],staticClass:"comments",class:{"icon-loading":t.isFirstLoading}},[e("Comment",t._b({staticClass:"comments__writer",attrs:{"auto-complete":t.autoComplete,"resource-type":t.resourceType,editor:!0,"user-data":t.userData,"resource-id":t.currentResourceId},on:{new:t.onNewComment}},"Comment",t.editorData,!1)),t._v(" "),t.isFirstLoading?t._e():[!t.hasComments&&t.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{name:t.t("comments","No comments yet, start the conversation!")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconMessageReplyTextOutline")]},proxy:!0}],null,!1,326612300)}):e("ul",t._l(t.comments,function(r){return e("Comment",t._b({key:r.props.id,staticClass:"comments__list",attrs:{tag:"li","auto-complete":t.autoComplete,"resource-type":t.resourceType,message:r.props.message,"resource-id":t.currentResourceId,"user-data":t.genMentionsData(r.props.mentions)},on:{"update:message":function(e){return t.$set(r.props,"message",e)},delete:t.onDelete}},"Comment",r.props,!1))}),1),t._v(" "),t.loading&&!t.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):t.hasComments&&t.done?e("div",{staticClass:"comments__info"},[t._v("\n\t\t\t"+t._s(t.t("comments","No more messages"))+"\n\t\t")]):t.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{name:t.error},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAlertCircleOutline")]},proxy:!0}],null,!1,3663249556)}),t._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:t.getComments},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconRefresh")]},proxy:!0}],null,!1,2997625269)},[t._v("\n\t\t\t\t"+t._s(t.t("comments","Retry"))+"\n\t\t\t")])]:t._e()]],2)},[],!1,null,"6c8c157a",null).exports;l.Ay.use(a.R2),n.nc=(0,i.aV)(),l.Ay.mixin({data:()=>({logger:o}),methods:{t:s.t,n:s.n}}),window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:class{constructor(t="files",e={}){const r=(0,a.Ey)();return e={...e,propsData:{...e.propsData??{},resourceType:t},pinia:r},new(l.Ay.extend(Nn))(e)}}}),o.debug("OCA.Comments.View initialized")},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,l=r.indexOf(t),c=r.indexOf(e,l+1),u=l;if(l>=0&&c>0){if(t===e)return[l,c];for(n=[],i=r.length;u>=0&&!a;)u==l?(n.push(u),l=r.indexOf(t,u+1)):1==n.length?a=[n.pop(),c]:((o=n.pop())=0?l:c;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=/[\t\n\f\r ]/g,c={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,l="",c=-1,u=t.length-i;++c>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(c)<<8,r=t.charCodeAt(++c),l+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(c),l+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),l},decode:function(t){var e=(t=String(t).replace(l,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",c=-1;++c>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return c}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),m(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(l)}(t),!0).map(u)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function c(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function u(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(l).join(".")}function h(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var l=h(s);return s.length&&(a[a.length-1]+=l.shift(),a.push.apply(a,l)),e.push.apply(e,a),e}function f(t){return"{"+t+"}"}function p(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function m(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?m(o.post,!1):[""];if(/\$$/.test(o.pre))for(var l=0;l=0;if(!A&&!x)return o.post.match(/,(?!,).*\}/)?m(t=o.pre+"{"+o.body+s+o.post):[t];if(A)y=o.body.split(/\.\./);else if(1===(y=h(o.body)).length&&1===(y=m(y[0],!1).map(f)).length)return a.map(function(t){return o.pre+y[0]+t});if(A){var _=c(y[0]),E=c(y[1]),S=Math.max(y[0].length,y[1].length),O=3==y.length?Math.abs(c(y[2])):1,T=d;E<_&&(O*=-1,T=g);var C=y.some(p);b=[];for(var N=_;T(N,E);N+=O){var R;if(w)"\\"===(R=String.fromCharCode(N))&&(R="");else if(R=String(N),C){var j=S-R.length;if(j>0){var P=new Array(j+1).join("0");R=N<0?"-"+P+R.slice(1):P+R}}b.push(R)}}else{b=[];for(var k=0;ka});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB",sourcesContent:['\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tdisplay: flex;\n\tgap: 8px;\n\tpadding: 5px $comment-padding;\n\n\t&__side {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\tpadding-top: 6px;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-direction: column;\n\t\tcontainer-type: inline-size;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t}\n\n\t&__actions {\n\t\tmargin-inline-start: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-inline-start: auto;\n\t\ttext-align: end;\n\t\twhite-space: nowrap;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor-group {\n\t\tposition: relative;\n\t}\n\n\t&__editor-description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-block: var(--default-grid-baseline);\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tbottom: 5px;\n\t\tinset-inline-end: 0;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: normal;\n\t\tmax-height: 200px;\n\t\toverflow: auto;\n\t\tscrollbar-gutter: stable;\n\t\tscrollbar-width: thin;\n\t\tmargin-top: -6px;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t\t:deep(img) {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]);const a=s},94262(t,e,r){"use strict";r.d(e,{A:()=>a});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n.comments {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty,\n\t&__error {\n\t\tflex: 1 0;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]);const a=s},4233(t){"use strict";const e=function*(){}.constructor;t.exports=()=>e},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),l=n("Function.prototype.toString"),c=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(l(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=c();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var l=o("RegExp.prototype.exec"),c={},u=function(){throw c},h={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(h[Symbol.toPrimitive]=u),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{l(t,h)}catch(t){return t===c}}}else{var f=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===f(t)}}t.exports=n},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!l(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=l(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=a&&l&&"function"==typeof l.get?l.get:null,u=a&&Set.prototype.forEach,h="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,f="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,m=Function.prototype.toString,y=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,A=String.prototype.toLowerCase,x=RegExp.prototype.test,_=Array.prototype.concat,E=Array.prototype.join,S=Array.prototype.slice,O=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,C=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,R="function"==typeof Symbol&&"object"==typeof Symbol.iterator,j="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,P=Object.prototype.propertyIsEnumerable,k=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-O(-t):O(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function F(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function B(t){return v.call(String(t),/"/g,""")}function W(t){return!j||!("object"==typeof t&&(j in t||void 0!==t[j]))}function q(t){return"[object Array]"===K(t)&&W(t)}function H(t){return"[object RegExp]"===K(t)&&W(t)}function V(t){if(R)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(G(a,"quoteStyle")&&!G($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(G(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!G(a,"customInspect")||a.customInspect;if("boolean"!=typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(G(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(G(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return X(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var O=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=O&&O>0&&"object"==typeof e)return q(e)?"[Array]":"[Object]";var C,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=E.call(Array(t.indent+1)," ")}return{base:r,prev:E.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(Y(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=S.call(o)).push(r),i){var s={depth:a.depth};return G(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!H(e)){var z=function(t){if(t.name)return t.name;var e=y.call(m.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(z?": "+z:" (anonymous)")+"]"+(Z.length>0?" { "+E.call(Z,", ")+" }":"")}if(V(e)){var nt=R?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||R?nt:Q(nt)}if((C=e)&&"object"==typeof C&&("undefined"!=typeof HTMLElement&&C instanceof HTMLElement||"string"==typeof C.nodeName&&"function"==typeof C.getAttribute)){for(var ot="<"+A.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(q(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+E.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&W(t)}(e)){var lt=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||P.call(e,"cause")?0===lt.length?"["+String(e)+"]":"{ ["+String(e)+"] "+E.call(lt,", ")+" }":"{ ["+String(e)+"] "+E.call(_.call("[cause]: "+U(e.cause),lt),", ")+" }"}if("object"==typeof e&&l){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:O-n});if("symbol"!==l&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var ct=[];return s&&s.call(e,function(t,r){ct.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),ct,L)}if(function(t){if(!c||!t||"object"!=typeof t)return!1;try{c.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ut=[];return u&&u.call(e,function(t){ut.push(U(t,e))}),tt("Set",c.call(e),ut,L)}if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return J("WeakMap");if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return J("WeakSet");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{return p.call(t),!0}catch(t){}return!1}(e))return J("WeakRef");if(function(t){return"[object Number]"===K(t)&&W(t)}(e))return Q(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Q(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&W(t)}(e))return Q(d.call(e));if(function(t){return"[object String]"===K(t)&&W(t)}(e))return Q(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&W(t)}(e)&&!H(e)){var ht=rt(e,U),ft=k?k(e)===Object.prototype:e instanceof Object||e.constructor===Object,pt=e instanceof Object?"":"null prototype",dt=!ft&&j&&Object(e)===e&&j in e?b.call(K(e),8,-1):pt?"Object":"",gt=(ft||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||pt?"["+E.call(_.call([],dt||[],pt||[]),": ")+"] ":"");return 0===ht.length?gt+"{}":L?gt+"{"+et(ht,L)+"}":gt+"{ "+E.call(ht,", ")+" }"}return String(e)};var z=Object.prototype.hasOwnProperty||function(t){return t in this};function G(t,e){return z.call(t,e)}function K(t){return g.call(t)}function Y(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return X(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,F(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Q(t){return"Object("+t+")"}function J(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):E.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+E.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=q(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},l.normalize=function(t){var e=l.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},l.isAbsolute=function(t){return"/"===t.charAt(0)},l.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=l.resolve(t).substr(1),e=l.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,p=String.fromCharCode;function d(t){throw new RangeError(h[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function m(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(u,".")).split("."),e).join(".")}function y(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+p(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var n=0;for(t=r?f(t/700):t>>1,t+=f(t/e);t>455;n+=a)t=f(t/35);return f(n+36*t/(t+38))}function x(t){var e,r,n,o,i,l,c,u,h,p,g=[],m=t.length,y=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=m&&d("invalid-input"),((u=v(t.charCodeAt(o++)))>=a||u>f((s-y)/l))&&d("overflow"),y+=u*l,!(u<(h=c<=x?1:c>=x+26?26:c-x));c+=a)l>f(s/(p=a-h))&&d("overflow"),l*=p;x=A(y-i,e=g.length+1,0==i),f(y/e)>s-w&&d("overflow"),w+=f(y/e),y%=e,g.splice(y++,0,w)}return b(g)}function _(t){var e,r,n,o,i,l,c,u,h,g,m,b,v,x,_,E=[];for(b=(t=y(t)).length,e=128,r=0,i=72,l=0;l=e&&mf((s-r)/(v=n+1))&&d("overflow"),r+=(c-e)*v,e=c,l=0;ls&&d("overflow"),m==e){for(u=r,h=a;!(u<(g=h<=i?1:h>=i+26?26:h-i));h+=a)_=u-g,x=a-g,E.push(p(w(g+_%x,0))),u=f(_/x);E.push(p(w(u,0))),i=A(r,v,n==o),r=0,++n}++r,++e}return E.join("")}i={version:"1.4.1",ucs2:{decode:y,encode:b},decode:x,encode:_,toASCII:function(t){return m(t,function(t){return c.test(t)?"xn--"+_(t):t})},toUnicode:function(t){return m(t,function(t){return l.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},l=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},c=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a[a.length]=s}for(var l=0;null!==(i=n.exec(r))&&l0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:l(e,r,i),c=t.length-1;c>=0;--c){var u,h=t[c];if("[]"===h&&r.parseArrays)u=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{u=r.plainObjects?{__proto__:null}:{};var f="["===h.charAt(0)&&"]"===h.charAt(h.length-1)?h.slice(1,-1):h,p=r.decodeDotInKeys?f.replace(/%2E/g,"."):f,d=parseInt(p,10),g=!isNaN(d)&&h!==p&&String(d)===p&&d>=0&&r.parseArrays;if(r.parseArrays||""!==p)if(g&&du)throw new RangeError("Parameter limit exceeded. Only "+u+" parameter"+(1===u?"":"s")+" allowed.");var f,p=-1,d=e.charset;if(e.charsetSentinel)for(f=0;f-1&&(m=i(m)?[m]:m),e.comma&&i(m)&&m.length>e.arrayLimit){if(e.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");m=n.combine([],m,e.arrayLimit,e.plainObjects)}if(null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],m,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=m)}}return r}(t,r):t,h=r.plainObjects?{__proto__:null}:{},f=Object.keys(u),p=0;p0?O.join(",")||null:void 0}];else if(l(m))j=m;else{var k=Object.keys(O);j=y?k.sort(y):k}var I=f?String(r).replace(/\./g,"%2E"):String(r),M=s&&l(O)&&1===O.length?I+"[]":I;if(a&&l(O)&&0===O.length)return M+"[]";for(var L=0;L0?A+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),l=function(t,e){return a.set(t,e),t},c=function(t){return a.has(t)},u=function(t){return a.get(t)},h=function(t,e){a.set(t,e)},f=function(){for(var t=[],e=0;e<256;++e)t[t.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return t}(),p=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?l(p(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(l,l+d):s,u=[],h=0;h=48&&p<=57||p>=65&&p<=90||p>=97&&p<=122||i===n.RFC1738&&(40===p||41===p)?u[u.length]=c.charAt(h):p<128?u[u.length]=f[p]:p<2048?u[u.length]=f[192|p>>6]+f[128|63&p]:p<55296||p>=57344?u[u.length]=f[224|p>>12]+f[128|p>>6&63]+f[128|63&p]:(h+=1,p=65536+((1023&p)<<10|1023&c.charCodeAt(h)),u[u.length]=f[240|p>>18]+f[128|p>>12&63]+f[128|p>>6&63]+f[128|63&p])}a+=u.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:c,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},markOverflow:l,maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;nn.arrayLimit)return l(p(e.concat(r),n),o);e[o]=r}else{if(!e||"object"!=typeof e)return[e,r];if(c(e)){var a=u(e)+1;e[a]=r,h(e,a)}else(n&&(n.plainObjects||n.allowPrototypes)||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e){if(c(r)){for(var f=Object.keys(r),d=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},g=0;gn.arrayLimit?l(p(m,n),m.length-1):m}var y=e;return s(e)&&!s(r)&&(y=p(e,n)),s(e)&&s(r)?(r.forEach(function(r,o){if(i.call(e,o)){var s=e[o];s&&"object"==typeof s&&r&&"object"==typeof r?e[o]=t(s,r,n):e[e.length]=r}else e[o]=r}),e):Object.keys(r).reduce(function(e,o){var s=r[o];if(i.call(e,o)?e[o]=t(e[o],s,n):e[o]=s,c(r)&&!c(e)&&l(e,u(r)),c(e)){var a=parseInt(o,10);String(a)===o&&a>=0&&a>u(e)&&h(e,a)}return e},y)}}},73992(t,e){"use strict";var r=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var n,i,s=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((n=t[i])||null!=n&&!isNaN(n)||(n=""),i=o(i),n=o(n),null===i||null===n)continue;s.push(i+"="+n)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,o={};e=r.exec(t);){var i=n(e[1]),s=n(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},92063(t){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},99721(t,e,r){"use strict";var n=r(36556),o=r(14035),i=n("RegExp.prototype.exec"),s=r(69675);t.exports=function(t){if(!o(t))throw new s("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},14803(t,e,r){"use strict";var n=r(58859),o=r(69675),i=function(t,e,r){for(var n,o=t;null!=(n=o.next);o=n)if(n.key===e)return o.next=n.next,r||(n.next=t.next,t.next=n),n};t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new o("Side channel does not contain "+n(t))},delete:function(e){var r=t&&t.next,n=function(t,e){if(t)return i(t,e,!0)}(t,e);return n&&r&&r===n&&(t=void 0),!!n},get:function(e){return function(t,e){if(t){var r=i(t,e);return r&&r.value}}(t,e)},has:function(e){return function(t,e){return!!t&&!!i(t,e)}(t,e)},set:function(e,r){t||(t={next:void 0}),function(t,e,r){var n=i(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(t,e,r)}};return e}},80507(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(69675),a=n("%Map%",!0),l=o("Map.prototype.get",!0),c=o("Map.prototype.set",!0),u=o("Map.prototype.has",!0),h=o("Map.prototype.delete",!0),f=o("Map.prototype.size",!0);t.exports=!!a&&function(){var t,e={assert:function(t){if(!e.has(t))throw new s("Side channel does not contain "+i(t))},delete:function(e){if(t){var r=h(t,e);return 0===f(t)&&(t=void 0),r}return!1},get:function(e){if(t)return l(t,e)},has:function(e){return!!t&&u(t,e)},set:function(e,r){t||(t=new a),c(t,e,r)}};return e}},72271(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(80507),a=r(69675),l=n("%WeakMap%",!0),c=o("WeakMap.prototype.get",!0),u=o("WeakMap.prototype.set",!0),h=o("WeakMap.prototype.has",!0),f=o("WeakMap.prototype.delete",!0);t.exports=l?function(){var t,e,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},delete:function(r){if(l&&r&&("object"==typeof r||"function"==typeof r)){if(t)return f(t,r)}else if(s&&e)return e.delete(r);return!1},get:function(r){return l&&r&&("object"==typeof r||"function"==typeof r)&&t?c(t,r):e&&e.get(r)},has:function(r){return l&&r&&("object"==typeof r||"function"==typeof r)&&t?h(t,r):!!e&&e.has(r)},set:function(r,n){l&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new l),u(t,r,n)):s&&(e||(e=s()),e.set(r,n))}};return r}:s},920(t,e,r){"use strict";var n=r(69675),o=r(58859),i=r(14803),s=r(80507),a=r(72271)||s||i;t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new n("Side channel does not contain "+o(t))},delete:function(e){return!!t&&t.delete(e)},get:function(e){return t&&t.get(e)},has:function(e){return!!t&&t.has(e)},set:function(e,r){t||(t=a()),t.set(e,r)}};return e}},11568(t,e,r){var n=r(55537),o=r(6917),i=r(57510),s=r(86866),a=r(88835),l=e;l.request=function(t,e){t="string"==typeof t?a.parse(t):i(t);var r=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||r,s=t.hostname||t.host,l=t.port,c=t.path||"/";s&&-1!==s.indexOf(":")&&(s="["+s+"]"),t.url=(s?o+"//"+s:"")+(l?":"+l:"")+c,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var u=new n(t);return e&&u.on("response",e),u},l.get=function(t,e){var r=l.request(t,e);return r.end(),r},l.ClientRequest=n,l.IncomingMessage=o.IncomingMessage,l.Agent=function(){},l.Agent.defaultMaxSockets=4,l.globalAgent=new l.Agent,l.STATUS_CODES=s,l.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},6688(t,e){var r;function n(){if(void 0!==r)return r;if(globalThis.XMLHttpRequest){r=new globalThis.XMLHttpRequest;try{r.open("GET",globalThis.XDomainRequest?"/":"https://example.com")}catch(t){r=null}}else r=null;return r}function o(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(globalThis.fetch)&&i(globalThis.ReadableStream),e.writableStream=i(globalThis.WritableStream),e.abortController=i(globalThis.AbortController),e.arraybuffer=e.fetch||o("arraybuffer"),e.msstream=!e.fetch&&o("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&o("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),r=null},55537(t,e,r){var n=r(62045).hp,o=r(65606),i=r(6688),s=r(56698),a=r(6917),l=r(63242),c=a.IncomingMessage,u=a.readyStates,h=t.exports=function(t){var e,r=this;l.Writable.call(r),r._opts=t,r._body=[],r._headers={},t.auth&&r.setHeader("Authorization","Basic "+n.from(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){r.setHeader(e,t.headers[e])});var o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!i.abortController)o=!1,e=!0;else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!i.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}r._mode=function(t,e){return i.fetch&&e?"fetch":i.mozchunkedarraybuffer?"moz-chunked-arraybuffer":i.msstream?"ms-stream":i.arraybuffer&&t?"arraybuffer":"text"}(e,o),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",function(){r._onFinish()})};s(h,l.Writable),h.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===f.indexOf(r)&&(this._headers[r]={name:t,value:e})},h.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},h.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},h.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts;"timeout"in e&&0!==e.timeout&&t.setTimeout(e.timeout);var r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=new Blob(t._body,{type:(r["content-type"]||{}).value||""}));var s=[];if(Object.keys(r).forEach(function(t){var e=r[t].name,n=r[t].value;Array.isArray(n)?n.forEach(function(t){s.push([e,t])}):s.push([e,n])}),"fetch"===t._mode){var a=null;if(i.abortController){var l=new AbortController;a=l.signal,t._fetchAbortController=l,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=globalThis.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}globalThis.fetch(t._opts.url,{method:t._opts.method,headers:s,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:a}).then(function(e){t._fetchResponse=e,t._resetTimers(!1),t._connect()},function(e){t._resetTimers(!0),t._destroyed||t.emit("error",e)})}else{var c=t._xhr=new globalThis.XMLHttpRequest;try{c.open(t._opts.method,t._opts.url,!0)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}"responseType"in c&&(c.responseType=t._mode),"withCredentials"in c&&(c.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in c&&c.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(c.timeout=e.requestTimeout,c.ontimeout=function(){t.emit("requestTimeout")}),s.forEach(function(t){c.setRequestHeader(t[0],t[1])}),t._response=null,c.onreadystatechange=function(){switch(c.readyState){case u.LOADING:case u.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(c.onprogress=function(){t._onXHRProgress()}),c.onerror=function(){t._destroyed||(t._resetTimers(!0),t.emit("error",new Error("XHR error")))};try{c.send(n)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}}}},h.prototype._onXHRProgress=function(){var t=this;t._resetTimers(!1),function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress(t._resetTimers.bind(t)))},h.prototype._connect=function(){var t=this;t._destroyed||(t._response=new c(t._xhr,t._fetchResponse,t._mode,t._resetTimers.bind(t)),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},h.prototype._write=function(t,e,r){this._body.push(t),r()},h.prototype._resetTimers=function(t){var e=this;globalThis.clearTimeout(e._socketTimer),e._socketTimer=null,t?(globalThis.clearTimeout(e._fetchTimer),e._fetchTimer=null):e._socketTimeout&&(e._socketTimer=globalThis.setTimeout(function(){e.emit("timeout")},e._socketTimeout))},h.prototype.abort=h.prototype.destroy=function(t){var e=this;e._destroyed=!0,e._resetTimers(!0),e._response&&(e._response._destroyed=!0),e._xhr?e._xhr.abort():e._fetchAbortController&&e._fetchAbortController.abort(),t&&e.emit("error",t)},h.prototype.end=function(t,e,r){"function"==typeof t&&(r=t,t=void 0),l.Writable.prototype.end.call(this,t,e,r)},h.prototype.setTimeout=function(t,e){var r=this;e&&r.once("timeout",e),r._socketTimeout=t,r._resetTimers(!1)},h.prototype.flushHeaders=function(){},h.prototype.setNoDelay=function(){},h.prototype.setSocketKeepAlive=function(){};var f=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},6917(t,e,r){var n=r(65606),o=r(62045).hp,i=r(6688),s=r(56698),a=r(63242),l=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(t,e,r,s){var l=this;if(a.Readable.call(l),l._mode=r,l.headers={},l.rawHeaders=[],l.trailers={},l.rawTrailers=[],l.on("end",function(){n.nextTick(function(){l.emit("close")})}),"fetch"===r){if(l._fetchResponse=e,l.url=e.url,l.statusCode=e.status,l.statusMessage=e.statusText,e.headers.forEach(function(t,e){l.headers[e.toLowerCase()]=t,l.rawHeaders.push(e,t)}),i.writableStream){var c=new WritableStream({write:function(t){return s(!1),new Promise(function(e,r){l._destroyed?r():l.push(o.from(t))?e():l._resumeFetch=e})},close:function(){s(!0),l._destroyed||l.push(null)},abort:function(t){s(!0),l._destroyed||l.emit("error",t)}});try{return void e.body.pipeTo(c).catch(function(t){s(!0),l._destroyed||l.emit("error",t)})}catch(t){}}var u=e.body.getReader();!function t(){u.read().then(function(e){l._destroyed||(s(e.done),e.done?l.push(null):(l.push(o.from(e.value)),t()))}).catch(function(t){s(!0),l._destroyed||l.emit("error",t)})}()}else if(l._xhr=t,l._pos=0,l.url=t.responseURL,l.statusCode=t.status,l.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var r=e[1].toLowerCase();"set-cookie"===r?(void 0===l.headers[r]&&(l.headers[r]=[]),l.headers[r].push(e[2])):void 0!==l.headers[r]?l.headers[r]+=", "+e[2]:l.headers[r]=e[2],l.rawHeaders.push(e[1],e[2])}}),l._charset="x-user-defined",!i.overrideMimeType){var h=l.rawHeaders["mime-type"];if(h){var f=h.match(/;\s*charset=([^;])(;|$)/);f&&(l._charset=f[1].toLowerCase())}l._charset||(l._charset="utf-8")}};s(c,a.Readable),c.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},c.prototype._onXHRProgress=function(t){var e=this,r=e._xhr,n=null;switch(e._mode){case"text":if((n=r.responseText).length>e._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(c.result.slice(e._pos)))),e._pos=c.result.byteLength)},c.onload=function(){t(!0),e.push(null)},c.readAsArrayBuffer(n)}e._xhr.readyState===l.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,l;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var c=("number"!=typeof l&&(l=0),l+1>(a=t).length||-1===a.indexOf(".",l)?"argument":"property");s='The "'.concat(t,'" ').concat(c," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=u;var i=r(52341),s=r(9573);r(56698)(u,i);for(var a=o(s.prototype),l=0;l0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===l.prototype||(e=function(t){return l.from(t)}(e)),n)a.endEmitted?x(t,new A):T(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):P(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,P(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=C?t=C:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(j,t))}function j(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function P(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(k,t,e))}function k(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(F,e,t))}function F(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function B(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},S.prototype._read=function(t){x(this,new w("_read()"))},S.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:l;function l(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",p),t.removeListener("finish",d),t.removeListener("drain",c),t.removeListener("error",f),t.removeListener("unpipe",e),r.removeListener("end",l),r.removeListener("end",g),r.removeListener("data",h),u=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||c())});var c=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",c);var u=!1;function h(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==B(n.pipes,t))&&!u&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function f(e){i("onerror",e),g(),t.removeListener("error",f),0===s(t,"error")&&x(t,e)}function p(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",p),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",h),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",f),t.once("close",p),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},S.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?R(this):n.reading||o.nextTick(M,this))),r},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},S.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},S.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},S.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s<_.length;s++)t.on(_[s],this.emit.bind(this,_[s]));return this._read=function(e){i("wrapped _read",e),n&&(n=!1,t.resume())},this},"function"==typeof Symbol&&(S.prototype[Symbol.asyncIterator]=function(){return void 0===f&&(f=r(17356)),f(this)}),Object.defineProperty(S.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(S.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(S.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),S._fromList=$,Object.defineProperty(S.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(S.from=function(t,e){return void 0===p&&(p=r(6314)),p(S,t,e)})},95689(t,e,r){"use strict";t.exports=u;var n=r(73157).F,o=n.ERR_METHOD_NOT_IMPLEMENTED,i=n.ERR_MULTIPLE_CALLBACK,s=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=n.ERR_TRANSFORM_WITH_LENGTH_0,l=r(63527);function c(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(null===n)return this.emit("error",new i);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var o=this._readableState;o.reading=!1,(o.needReadable||o.length-1))throw new A(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(t,e,r){r(new g("_write()"))},S.prototype._writev=null,S.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,j(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),S.prototype.destroy=h.destroy,S.prototype._undestroy=h.undestroy,S.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),u=Symbol("ended"),h=Symbol("lastPromise"),f=Symbol("handlePromise"),p=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[p].read();null!==r&&(t[h]=null,t[a]=null,t[l]=null,e(d(r,!1)))}}function m(t){o.nextTick(g,t)}var y=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[p]},next:function(){var t=this,e=this[c];if(null!==e)return Promise.reject(e);if(this[u])return Promise.resolve(d(void 0,!0));if(this[p].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[c]?r(t[c]):e(d(void 0,!0))})});var r,n=this[h];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[u]?r(d(void 0,!0)):e[f](r,n)},n)}}(n,this));else{var i=this[p].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[f])}return this[h]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[p].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),y);t.exports=function(t){var e,r=Object.create(b,(i(e={},p,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:null,writable:!0}),i(e,u,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[p].read();n?(r[h]=null,r[a]=null,r[l]=null,t(d(n,!1))):(r[a]=t,r[l]=e)},writable:!0}),e));return r[h]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[l];return null!==e&&(r[h]=null,r[a]=null,r[l]=null,e(t)),void(r[c]=t)}var n=r[a];null!==n&&(r[h]=null,r[a]=null,r[l]=null,n(d(void 0,!0))),r[u]=!0}),t.on("readable",m.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return l.alloc(0);for(var e=l.allocUnsafe(t>>>0),r=this.head,n=0;r;)h(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=l.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:u,value:function(t,e){return c(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,l=this._writableState&&this._writableState.destroyed;return a||l?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){u||(u=t),t&&f.forEach(l),i||(f.forEach(l),h(u))})});return e.reduce(c)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,u=/^[a-zA-Z]:/;function h(t){return(t||"").toString().replace(i,"")}var f=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new y(unescape(t.pathname),{});else if("string"===o)for(e in n=new y(t,{}),p)delete n[e];else if("object"===o){for(e in t)e in p||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function m(t,e){t=(t=h(t)).replace(s,""),e=e||{};var r,n=c.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],l=0;return i?a?(r=n[2]+n[3]+n[4],l=n[2].length+n[3].length):(r=n[2]+n[4],l=n[2].length):a?(r=n[3]+n[4],l=n[3].length):r=n[4],"file:"===o?l>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):l>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:l,rest:r}}function y(t,e,r){if(t=(t=h(t)).replace(s,""),!(this instanceof y))return new y(t,e,r);var i,a,l,c,p,b,v=f.slice(),w=typeof e,A=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=m(t||"",e=d(e))).protocol&&!a.slashes,A.slashes=a.slashes||i&&e.slashes,A.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||u.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(A.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),u=["%","/","?",";","#"].concat(c),h=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?P+="x":P+=j[k];if(!P.match(f)){var M=N.slice(0,O),L=N.slice(O+1),D=j.match(p);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),C||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[A])for(O=0,R=c.length;O0)&&r.host.split("@"))&&(r.auth=C.shift(),r.hostname=C.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var E=x.slice(-1)[0],S=(r.host||t.host||x.length>1)&&("."===E||".."===E)||""===E,O=0,T=x.length;T>=0;T--)"."===(E=x[T])?x.splice(T,1):".."===E?(x.splice(T,1),O++):O&&(x.splice(T,1),O--);if(!w&&!A)for(;O--;O)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),S&&"/"!==x.join("/").substr(-1)&&x.push("");var C,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return _&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(C=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=C.shift(),r.hostname=C.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var l="undefined"!=typeof BigInt,c="undefined"!=typeof Symbol,u=a(Object.prototype.toString),h=a(Number.prototype.valueOf),f=a(String.prototype.valueOf),p=a(Boolean.prototype.valueOf);if(l)var d=a(BigInt.prototype.valueOf);if(c)var g=a(Symbol.prototype.valueOf);function m(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function y(t){return"[object Map]"===u(t)}function b(t){return"[object Set]"===u(t)}function v(t){return"[object WeakMap]"===u(t)}function w(t){return"[object WeakSet]"===u(t)}function A(t){return"[object ArrayBuffer]"===u(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(A.working?A(t):t instanceof ArrayBuffer)}function _(t){return"[object DataView]"===u(t)}function E(t){return"undefined"!=typeof DataView&&(_.working?_(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||E(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},y.working="undefined"!=typeof Map&&y(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(y.working?y(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},A.working="undefined"!=typeof ArrayBuffer&&A(new ArrayBuffer),e.isArrayBuffer=x,_.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&_(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=E;var S="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function O(t){return"[object SharedArrayBuffer]"===u(t)}function T(t){return void 0!==S&&(void 0===O.working&&(O.working=O(new S)),O.working?O(t):t instanceof S)}function C(t){return m(t,h)}function N(t){return m(t,f)}function R(t){return m(t,p)}function j(t){return l&&m(t,d)}function P(t){return c&&m(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===u(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===u(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===u(t)},e.isGeneratorObject=function(t){return"[object Generator]"===u(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===u(t)},e.isNumberObject=C,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=j,e.isSymbolObject=P,e.isBoxedPrimitive=function(t){return C(t)||N(t)||R(t)||j(t)||P(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),f(n,t,n.depth)}function u(t,e){var r=c.styles[e];return r?"["+c.colors[r][0]+"m"+t+"["+c.colors[r][1]+"m":t}function h(t,e){return t}function f(t,r,n){if(t.customInspect&&r&&S(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=f(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),E(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(r);if(0===s.length){if(S(r)){var l=r.name?": "+r.name:"";return t.stylize("[Function"+l+"]","special")}if(A(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(_(r))return t.stylize(Date.prototype.toString.call(r),"date");if(E(r))return p(r)}var c,u="",h=!1,x=["{","}"];return g(r)&&(h=!0,x=["[","]"]),S(r)&&(u=" [Function"+(r.name?": "+r.name:"")+"]"),A(r)&&(u=" "+RegExp.prototype.toString.call(r)),_(r)&&(u=" "+Date.prototype.toUTCString.call(r)),E(r)&&(u=" "+p(r)),0!==s.length||h&&0!=r.length?n<0?A(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),c=h?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(c,u,x)):x[0]+u+x[1]}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,l;if((l=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(l.value)<0?(a=y(r)?f(t,l.value,null):f(t,l.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function m(t){return"boolean"==typeof t}function y(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function A(t){return x(t)&&"[object RegExp]"===O(t)}function x(t){return"object"==typeof t&&null!==t}function _(t){return x(t)&&"[object Date]"===O(t)}function E(t){return x(t)&&("[object Error]"===O(t)||t instanceof Error)}function S(t){return"function"==typeof t}function O(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=m,e.isNull=y,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=A,e.types.isRegExp=A,e.isObject=x,e.isDate=_,e.types.isDate=_,e.isError=E,e.types.isNativeError=E,e.isFunction=S,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),C[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function j(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;i{if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(s.O).every(t=>s.O[t](r[l]))?r.splice(l--,1):(a=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce((e,r)=>(s.f[r](t,e),e),[])),s.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"849c733a93f5261d3bde",4508:"04b1afd183e5ecdd9cae",5448:"71cfe268d6f1213c4735",5528:"1445efe9cbaf4e4cbcb8",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8815:"9a5c507c75429c9c04e4"}[t],s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},n="nextcloud-ui-legacy:",s.l=(t,e,o,i)=>{if(r[t])r[t].push(e);else{var a,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u{a.onerror=a.onload=null,clearTimeout(p);var o=r[t];if(delete r[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),e)return e(n)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=f.bind(null,a.onerror),a.onload=f.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=7062,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={7062:0};s.f.j=(e,r)=>{var n=s.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var i=s.p+s.u(e),a=new Error;s.l(i,r=>{if(s.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}},"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[i,a,l]=r,c=0;if(i.some(e=>0!==t[e])){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(l)var u=l(s)}for(e&&e(r);cs(48439));a=s.O(a)})(); +//# sourceMappingURL=comments-comments-app.js.map?v=b73d7e46a982053b95de \ No newline at end of file diff --git a/dist/comments-comments-app.js.license b/dist/comments-comments-app.js.license index ddf6e3a623bb2..93cc92a83cc16 100644 --- a/dist/comments-comments-app.js.license +++ b/dist/comments-comments-app.js.license @@ -335,7 +335,7 @@ This file is generated from multiple sources. Included packages: - version: 1.4.1 - license: MIT - qs - - version: 6.14.1 + - version: 6.14.2 - license: BSD-3-Clause - querystringify - version: 2.2.0 diff --git a/dist/comments-comments-app.js.map b/dist/comments-comments-app.js.map index 529acb38e04da..75835ad394604 100644 --- a/dist/comments-comments-app.js.map +++ b/dist/comments-comments-app.js.map @@ -1 +1 @@ -{"version":3,"file":"comments-comments-app.js?v=e396083b7d87f32bc52d","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?87e1","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/apps/comments/src/utils/decodeHtmlEntities.js","webpack:///nextcloud/apps/comments/src/store/deletedCommentLimbo.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7275","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack://nextcloud/./apps/comments/src/components/Comment.vue?d1f7","webpack:///nextcloud/apps/comments/src/mixins/CommentView.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/services/ReadComments.ts","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/comments/src/views/Comments.vue?4d55","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack://nextcloud/./apps/comments/src/views/Comments.vue?0e41","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92\"\nimport script from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\nexport * from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon message-reply-text-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function assertError(err) {\n if (!isError(err)) {\n throw new Error(\"Parameter was not an error\");\n }\n}\nexport function isError(err) {\n return ((!!err &&\n typeof err === \"object\" &&\n objectToString(err) === \"[object Error]\") ||\n err instanceof Error);\n}\nfunction objectToString(obj) {\n return Object.prototype.toString.call(obj);\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n constructor(errorOptionsOrMessage, messageText) {\n const args = [...arguments];\n const { options, shortMessage } = parseArguments(args);\n let message = shortMessage;\n if (options.cause) {\n message = `${message}: ${options.cause.message}`;\n }\n super(message);\n this.message = message;\n if (options.name && typeof options.name === \"string\") {\n this.name = options.name;\n }\n else {\n this.name = getGlobalName();\n }\n if (options.cause) {\n Object.defineProperty(this, \"_cause\", { value: options.cause });\n }\n Object.defineProperty(this, \"_info\", { value: {} });\n if (options.info && typeof options.info === \"object\") {\n Object.assign(this._info, options.info);\n }\n if (Error.captureStackTrace) {\n const ctor = options.constructorOpt || this.constructor;\n Error.captureStackTrace(this, ctor);\n }\n }\n static cause(err) {\n assertError(err);\n if (!err._cause)\n return null;\n return isError(err._cause)\n ? err._cause\n : null;\n }\n static fullStack(err) {\n assertError(err);\n const cause = Layerr.cause(err);\n if (cause) {\n return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n }\n return err.stack ?? \"\";\n }\n static info(err) {\n assertError(err);\n const output = {};\n const cause = Layerr.cause(err);\n if (cause) {\n Object.assign(output, Layerr.info(cause));\n }\n if (err._info) {\n Object.assign(output, err._info);\n }\n return output;\n }\n toString() {\n let output = this.name ||\n this.constructor.name ||\n this.constructor.prototype.name;\n if (this.message) {\n output = `${output}: ${this.message}`;\n }\n return output;\n }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n let options, shortMessage = \"\";\n if (args.length === 0) {\n options = {};\n }\n else if (isError(args[0])) {\n options = {\n cause: args[0],\n };\n shortMessage = args.slice(1).join(\" \") || \"\";\n }\n else if (args[0] && typeof args[0] === \"object\") {\n options = Object.assign({}, args[0]);\n shortMessage = args.slice(1).join(\" \") || \"\";\n }\n else if (typeof args[0] === \"string\") {\n options = {};\n shortMessage = shortMessage = args.join(\" \") || \"\";\n }\n else {\n throw new Error(\"Invalid arguments passed to Layerr\");\n }\n return {\n options,\n shortMessage,\n };\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n return __name;\n}\nexport function setGlobalName(name = null) {\n __name = name ?? NAME;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n try {\n const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n const formatted = encodeURIComponent(replaced);\n return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n }\n catch (err) {\n throw new Layerr(err, \"Failed encoding path\");\n }\n}\nexport function getAllDirectories(directory) {\n if (!directory || directory === \"/\")\n return [];\n let currentPath = directory;\n const output = [];\n do {\n output.push(currentPath);\n currentPath = path.dirname(currentPath);\n } while (currentPath && currentPath !== \"/\");\n return output;\n}\nexport function makePathAbsolute(pathStr) {\n return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n let normalisedPath = pathStr;\n if (normalisedPath[0] !== \"/\") {\n normalisedPath = \"/\" + normalisedPath;\n }\n if (/^.+\\/$/.test(normalisedPath)) {\n normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n }\n return normalisedPath;\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n const url = new URL(fullURL);\n let urlPath = url.pathname;\n if (urlPath.length <= 0) {\n urlPath = \"/\";\n }\n return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n if (partIndex === 0 ||\n nextPart !== \"/\" ||\n (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n output.push(nextPart);\n }\n return output;\n }, []));\n}\nexport function normaliseHREF(href) {\n try {\n const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n return normalisedHref;\n }\n catch (err) {\n throw new Layerr(err, \"Failed normalising HREF\");\n }\n}\n","function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n}\n\nexport default function urlJoin() {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop\n ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n for (const k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n }\n else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n let uid = \"\";\n for (let i = 0; i < NONCE_SIZE; ++i) {\n uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n }\n return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n const isDigest = responseIndicatesDigestAuth(response);\n if (!isDigest) {\n return false;\n }\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n for (;;) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n const match = re.exec(authHeader);\n if (!match) {\n break;\n }\n _digest[match[1]] = match[2] || match[3];\n }\n _digest.nc += 1;\n _digest.cnonce = makeNonce();\n return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n }\n return ha1Hash;\n}\n","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(input, mode);\n }\n return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n var _a;\n const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n switch (mode) {\n case EncodingMode.UTF8: {\n return escapeUTF8(input);\n }\n case EncodingMode.Attribute: {\n return escapeAttribute(input);\n }\n case EncodingMode.Text: {\n return escapeText(input);\n }\n case EncodingMode.ASCII: {\n return level === EntityLevel.HTML\n ? encodeNonAsciiHTML(input)\n : encodeXML(input);\n }\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case EncodingMode.Extensive:\n default: {\n return level === EntityLevel.HTML\n ? encodeHTML(input)\n : encodeXML(input);\n }\n }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n if (isWeb()) {\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = text;\n return txt.value;\n }\n return decodeHTML(text);\n}\nexport function fromBase64(text) {\n return base64.decode(text);\n}\nexport function toBase64(text) {\n return base64.encode(text);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n const encoded = toBase64(`${username}:${password}`);\n return `Basic ${encoded}`;\n}\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n ? (c.charCodeAt(index) - 55296) * 1024 +\n c.charCodeAt(index + 1) -\n 56320 +\n 65536\n : c.charCodeAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n let returnValue = \"\";\n let lastIndex = 0;\n let match;\n while ((match = xmlReplacer.exec(input)) !== null) {\n const { index } = match;\n const char = input.charCodeAt(index);\n const next = xmlCodeMap.get(char);\n if (next === undefined) {\n returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n }\n else {\n returnValue += input.substring(lastIndex, index) + next;\n lastIndex = index + 1;\n }\n }\n return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIndex = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIndex !== match.index) {\n result += data.substring(lastIndex, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIndex = match.index + 1;\n }\n return result + data.substring(lastIndex);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n ? self\n : typeof window !== \"undefined\"\n ? window\n : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n AuthType[\"Auto\"] = \"auto\";\n AuthType[\"Digest\"] = \"digest\";\n AuthType[\"None\"] = \"none\";\n AuthType[\"Password\"] = \"password\";\n AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n switch (context.authType) {\n case AuthType.Auto:\n if (username && password) {\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n }\n break;\n case AuthType.Digest:\n context.digest = createDigestContext(username, password, ha1);\n break;\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password:\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n break;\n case AuthType.Token:\n context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n break;\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidAuthType\n }\n }, `Invalid auth type: ${context.authType}`);\n }\n}\n","export function generateTokenAuthHeader(token) {\n return `${token.token_type} ${token.access_token}`;\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n return {\n original: method,\n methods: [method],\n final: false\n };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n constructor() {\n this._configuration = {\n registry: {},\n getEmptyAction: \"null\"\n };\n this.__type__ = HOT_PATCHER_TYPE;\n }\n /**\n * Configuration object reference\n * @readonly\n */\n get configuration() {\n return this._configuration;\n }\n /**\n * The action to take when a non-set method is requested\n * Possible values: null/throw\n */\n get getEmptyAction() {\n return this.configuration.getEmptyAction;\n }\n set getEmptyAction(newAction) {\n this.configuration.getEmptyAction = newAction;\n }\n /**\n * Control another hot-patcher instance\n * Force the remote instance to use patched methods from calling instance\n * @param target The target instance to control\n * @param allowTargetOverrides Allow the target to override patched methods on\n * the controller (default is false)\n * @returns Returns self\n * @throws {Error} Throws if the target is invalid\n */\n control(target, allowTargetOverrides = false) {\n if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n }\n Object.keys(target.configuration.registry).forEach(foreignKey => {\n if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n if (allowTargetOverrides) {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n }\n else {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n });\n target._configuration = this.configuration;\n return this;\n }\n /**\n * Execute a patched method\n * @param key The method key\n * @param args Arguments to pass to the method (optional)\n * @see HotPatcher#get\n * @returns The output of the called method\n */\n execute(key, ...args) {\n const method = this.get(key) || NOOP;\n return method(...args);\n }\n /**\n * Get a method for a key\n * @param key The method key\n * @returns Returns the requested function or null if the function\n * does not exist and the host is configured to return null (and not throw)\n * @throws {Error} Throws if the configuration specifies to throw and the method\n * does not exist\n * @throws {Error} Throws if the `getEmptyAction` value is invalid\n */\n get(key) {\n const item = this.configuration.registry[key];\n if (!item) {\n switch (this.getEmptyAction) {\n case \"null\":\n return null;\n case \"throw\":\n throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n default:\n throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n }\n }\n return sequence(...item.methods);\n }\n /**\n * Check if a method has been patched\n * @param key The function key\n * @returns True if already patched\n */\n isPatched(key) {\n return !!this.configuration.registry[key];\n }\n /**\n * Patch a method name\n * @param key The method key to patch\n * @param method The function to set\n * @param opts Patch options\n * @returns Returns self\n */\n patch(key, method, opts = {}) {\n const { chain = false } = opts;\n if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n throw new Error(`Failed patching '${key}': Method marked as being final`);\n }\n if (typeof method !== \"function\") {\n throw new Error(`Failed patching '${key}': Provided method is not a function`);\n }\n if (chain) {\n // Add new method to the chain\n if (!this.configuration.registry[key]) {\n // New key, create item\n this.configuration.registry[key] = createNewItem(method);\n }\n else {\n // Existing, push the method\n this.configuration.registry[key].methods.push(method);\n }\n }\n else {\n // Replace the original\n if (this.isPatched(key)) {\n const { original } = this.configuration.registry[key];\n this.configuration.registry[key] = Object.assign(createNewItem(method), {\n original\n });\n }\n else {\n this.configuration.registry[key] = createNewItem(method);\n }\n }\n return this;\n }\n /**\n * Patch a method inline, execute it and return the value\n * Used for patching contents of functions. This method will not apply a patched\n * function if it has already been patched, allowing for external overrides to\n * function. It also means that the function is cached so that it is not\n * instantiated every time the outer function is invoked.\n * @param key The function key to use\n * @param method The function to patch (once, only if not patched)\n * @param args Arguments to pass to the function\n * @returns The output of the patched function\n * @example\n * function mySpecialFunction(a, b) {\n * return hotPatcher.patchInline(\"func\", (a, b) => {\n * return a + b;\n * }, a, b);\n * }\n */\n patchInline(key, method, ...args) {\n if (!this.isPatched(key)) {\n this.patch(key, method);\n }\n return this.execute(key, ...args);\n }\n /**\n * Patch a method (or methods) in sequential-mode\n * See `patch()` with the option `chain: true`\n * @see patch\n * @param key The key to patch\n * @param methods The methods to patch\n * @returns Returns self\n */\n plugin(key, ...methods) {\n methods.forEach(method => {\n this.patch(key, method, { chain: true });\n });\n return this;\n }\n /**\n * Restore a patched method if it has been overridden\n * @param key The method key\n * @returns Returns self\n */\n restore(key) {\n if (!this.isPatched(key)) {\n throw new Error(`Failed restoring method: No method present for key: ${key}`);\n }\n else if (typeof this.configuration.registry[key].original !== \"function\") {\n throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n }\n this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n return this;\n }\n /**\n * Set a method as being final\n * This sets a method as having been finally overridden. Attempts at overriding\n * again will fail with an error.\n * @param key The key to make final\n * @returns Returns self\n */\n setFinal(key) {\n if (!this.configuration.registry.hasOwnProperty(key)) {\n throw new Error(`Failed marking '${key}' as final: No method found for key`);\n }\n this.configuration.registry[key].final = true;\n return this;\n }\n}\n","export function sequence(...methods) {\n if (methods.length === 0) {\n throw new Error(\"Failed creating sequence: No functions provided\");\n }\n return function __executeSequence(...args) {\n let result = args;\n const _this = this;\n while (methods.length > 0) {\n const method = methods.shift();\n result = [method.apply(_this, result)];\n }\n return result[0];\n };\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n if (!__patcher) {\n __patcher = new HotPatcher();\n }\n return __patcher;\n}\n","export function isReactNative() {\n return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","export function cloneShallow(obj) {\n return isPlainObject(obj)\n ? Object.assign({}, obj)\n : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" ||\n obj === null ||\n Object.prototype.toString.call(obj) != \"[object Object]\") {\n // Not an object\n return false;\n }\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n let proto = obj;\n // Find the prototype\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n let output = null, items = [...args];\n while (items.length > 0) {\n const nextItem = items.shift();\n if (!output) {\n output = cloneShallow(nextItem);\n }\n else {\n output = mergeObjects(output, nextItem);\n }\n }\n return output;\n}\nfunction mergeObjects(obj1, obj2) {\n const output = cloneShallow(obj1);\n Object.keys(obj2).forEach(key => {\n if (!output.hasOwnProperty(key)) {\n output[key] = obj2[key];\n return;\n }\n if (Array.isArray(obj2[key])) {\n output[key] = Array.isArray(output[key])\n ? [...output[key], ...obj2[key]]\n : [...obj2[key]];\n }\n else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n output[key] =\n typeof output[key] === \"object\" && !!output[key]\n ? mergeObjects(output[key], obj2[key])\n : cloneShallow(obj2[key]);\n }\n else {\n output[key] = obj2[key];\n }\n });\n return output;\n}\n","export function convertResponseHeaders(headers) {\n const output = {};\n for (const key of headers.keys()) {\n output[key] = headers.get(key);\n }\n return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n if (headerPayloads.length === 0)\n return {};\n const headerKeys = {};\n return headerPayloads.reduce((output, headers) => {\n Object.keys(headers).forEach(header => {\n const lowerHeader = header.toLowerCase();\n if (headerKeys.hasOwnProperty(lowerHeader)) {\n output[headerKeys[lowerHeader]] = headers[header];\n }\n else {\n headerKeys[lowerHeader] = header;\n output[header] = headers[header];\n }\n });\n return output;\n }, {});\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n return (hasArrayBuffer &&\n (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n return (value != null &&\n value.constructor != null &&\n typeof value.constructor.isBuffer === \"function\" &&\n value.constructor.isBuffer(value));\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n let headers = {};\n // Handle standard options\n const opts = {\n method: requestOptions.method\n };\n if (requestOptions.headers) {\n headers = mergeHeaders(headers, requestOptions.headers);\n }\n if (typeof requestOptions.data !== \"undefined\") {\n const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n opts.body = body;\n headers = mergeHeaders(headers, newHeaders);\n }\n if (requestOptions.signal) {\n opts.signal = requestOptions.signal;\n }\n if (requestOptions.withCredentials) {\n opts.credentials = \"include\";\n }\n // Check for node-specific options\n if (!isWeb() && !isReactNative()) {\n if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n opts.agent = (parsedURL) => {\n if (parsedURL.protocol === \"http:\") {\n return requestOptions.httpAgent || new HTTPAgent();\n }\n return requestOptions.httpsAgent || new HTTPSAgent();\n };\n }\n }\n // Attach headers\n opts.headers = headers;\n return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n const finalOptions = cloneShallow(requestOptions);\n finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n if (typeof userOptions.data !== \"undefined\") {\n finalOptions.data = userOptions.data;\n }\n if (userOptions.signal) {\n finalOptions.signal = userOptions.signal;\n }\n if (context.httpAgent) {\n finalOptions.httpAgent = context.httpAgent;\n }\n if (context.httpsAgent) {\n finalOptions.httpsAgent = context.httpsAgent;\n }\n if (context.digest) {\n finalOptions._digest = context.digest;\n }\n if (typeof context.withCredentials === \"boolean\") {\n finalOptions.withCredentials = context.withCredentials;\n }\n return finalOptions;\n}\nexport async function request(requestOptions, context) {\n if (context.authType === AuthType.Auto) {\n return requestAuto(requestOptions, context);\n }\n if (requestOptions._digest) {\n return requestDigest(requestOptions);\n }\n return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n const response = await requestStandard(requestOptions);\n if (response.ok) {\n context.authType = AuthType.Password;\n return response;\n }\n if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n context.authType = AuthType.Digest;\n setupAuth(context, context.username, context.password, undefined, undefined);\n requestOptions._digest = context.digest;\n return requestDigest(requestOptions);\n }\n return response;\n}\nasync function requestDigest(requestOptions) {\n // Remove client's digest authentication object from request options\n const _digest = requestOptions._digest;\n delete requestOptions._digest;\n // If client is already using digest authentication, include the digest authorization header\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n }\n // Perform digest request + check\n const response = await requestStandard(requestOptions);\n if (response.status == 401) {\n _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n const response2 = await requestStandard(requestOptions);\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n }\n else {\n _digest.nc++;\n }\n return response2;\n }\n }\n else {\n _digest.nc++;\n }\n return response;\n}\nfunction requestStandard(requestOptions) {\n const patcher = getPatcher();\n return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n // @ts-ignore\n return [data, {}];\n }\n if (typeof data === \"string\") {\n return [data, {}];\n }\n else if (isBuffer(data)) {\n return [data, {}];\n }\n else if (isArrayBuffer(data)) {\n return [data, {}];\n }\n else if (data && typeof data === \"object\") {\n return [\n JSON.stringify(data),\n {\n \"content-type\": \"application/json\"\n }\n ];\n }\n throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes. For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n return windowsPathsNoEscape\n ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null\n ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof AST && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new AST(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt) {\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n ast.push(acc);\n acc = '';\n const ext = new AST(c, ast);\n i = AST.#parseAST(str, ext, i, opt);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new AST(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n if (isExtglobType(c) && str.charAt(i) === '(') {\n part.push(acc);\n acc = '';\n const ext = new AST(c, part);\n part.push(ext);\n i = AST.#parseAST(str, ext, i, opt);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new AST(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new AST(null, undefined, options);\n AST.#parseAST(pattern, ast, 0, options);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this)\n this.#fillNegs();\n if (!this.type) {\n const noEmpty = this.isStart() && this.isEnd();\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string'\n ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n this.#parts = [s];\n this.type = null;\n this.#hasMagic = undefined;\n return [s, unescape(this.toString()), false, false];\n }\n // XXX abstract out this map method\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n ? ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!'\n ? // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@'\n ? ')'\n : this.type === '?'\n ? ')?'\n : this.type === '+' && bodyDotAllowed\n ? ')'\n : this.type === '*' && bodyDotAllowed\n ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n continue;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n continue;\n }\n }\n if (c === '*') {\n if (noEmpty && glob === '*')\n re += starNoEmpty;\n else\n re += star;\n hasMagic = true;\n continue;\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, unescape(glob), !!hasMagic, uflag];\n }\n}\n//# sourceMappingURL=ast.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n assertValidPattern(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch;\n }\n const orig = minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR,\n });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern);\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n regexp;\n constructor(pattern, options = {}) {\n assertValidPattern(pattern);\n options = options || {};\n this.options = options;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n //
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        const options = this.options;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [file[fdi], pattern[pdi]];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    if (pdi > fdi) {\n                        pattern = pattern.slice(pdi);\n                    }\n                    else if (fdi > pdi) {\n                        file = file.slice(fdi);\n                    }\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        this.debug('matchOne', this, { file, pattern });\n        this.debug('matchOne', file.length, pattern.length);\n        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            var p = pattern[pi];\n            var f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false) {\n                return false;\n            }\n            /* c8 ignore stop */\n            if (p === GLOBSTAR) {\n                this.debug('GLOBSTAR', [pattern, p, f]);\n                // \"**\"\n                // a/**/b/**/c would match the following:\n                // a/b/x/y/z/c\n                // a/x/y/z/b/c\n                // a/b/x/b/x/c\n                // a/b/c\n                // To do this, take the rest of the pattern after\n                // the **, and see if it would match the file remainder.\n                // If so, return success.\n                // If not, the ** \"swallows\" a segment, and try again.\n                // This is recursively awful.\n                //\n                // a/**/b/**/c matching a/b/x/y/z/c\n                // - a matches a\n                // - doublestar\n                //   - matchOne(b/x/y/z/c, b/**/c)\n                //     - b matches b\n                //     - doublestar\n                //       - matchOne(x/y/z/c, c) -> no\n                //       - matchOne(y/z/c, c) -> no\n                //       - matchOne(z/c, c) -> no\n                //       - matchOne(c, c) yes, hit\n                var fr = fi;\n                var pr = pi + 1;\n                if (pr === pl) {\n                    this.debug('** at the end');\n                    // a ** at the end will just swallow the rest.\n                    // We have found a match.\n                    // however, it will not swallow /.x, unless\n                    // options.dot is set.\n                    // . and .. are *never* matched by **, for explosively\n                    // exponential reasons.\n                    for (; fi < fl; fi++) {\n                        if (file[fi] === '.' ||\n                            file[fi] === '..' ||\n                            (!options.dot && file[fi].charAt(0) === '.'))\n                            return false;\n                    }\n                    return true;\n                }\n                // ok, let's see if we can swallow whatever we can.\n                while (fr < fl) {\n                    var swallowee = file[fr];\n                    this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee);\n                    // XXX remove this slice.  Just pass the start index.\n                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n                        this.debug('globstar found match!', fr, fl, swallowee);\n                        // found a match.\n                        return true;\n                    }\n                    else {\n                        // can't swallow \".\" or \"..\" ever.\n                        // can only swallow \".foo\" when explicitly asked.\n                        if (swallowee === '.' ||\n                            swallowee === '..' ||\n                            (!options.dot && swallowee.charAt(0) === '.')) {\n                            this.debug('dot detected!', file, fr, pattern, pr);\n                            break;\n                        }\n                        // ** swallows a segment, and continue.\n                        this.debug('globstar swallow a segment, and continue');\n                        fr++;\n                    }\n                }\n                // no match was found.\n                // However, in partial mode, we can't say this is necessarily over.\n                /* c8 ignore start */\n                if (partial) {\n                    // ran out of file\n                    this.debug('\\n>>> no match, partial?', file, fr, pattern, pr);\n                    if (fr === fl) {\n                        return true;\n                    }\n                }\n                /* c8 ignore stop */\n                return false;\n            }\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","\nexport const defaultOptions = {\n    preserveOrder: false,\n    attributeNamePrefix: '@_',\n    attributesGroupName: false,\n    textNodeName: '#text',\n    ignoreAttributes: true,\n    removeNSPrefix: false, // remove NS from tag name or attribute name if true\n    allowBooleanAttributes: false, //a tag can have attributes without any value\n    //ignoreRootElement : false,\n    parseTagValue: true,\n    parseAttributeValue: false,\n    trimValues: true, //Trim string values of tag and attributes\n    cdataPropName: false,\n    numberParseOptions: {\n      hex: true,\n      leadingZeros: true,\n      eNotation: true\n    },\n    tagValueProcessor: function(tagName, val) {\n      return val;\n    },\n    attributeValueProcessor: function(attrName, val) {\n      return val;\n    },\n    stopNodes: [], //nested tags will not be parsed even for errors\n    alwaysCreateTextNode: false,\n    isArray: () => false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n    captureMetaData: false,\n};\n   \nexport const buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexport function merge(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n}\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node, startIndex) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n    constructor(processEntities){\n        this.suppressValidationErr = !processEntities;\n    }\n    \n    readDocType(xmlData, i){\n    \n        const entities = {};\n        if( xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E')\n        {    \n            i = i+9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for(;i') { //Read tag content\n                    if(comment){\n                        if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    }else{\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                    break;\n                    }\n                }else if( xmlData[i] === '['){\n                    hasBody = true;\n                }else{\n                    exp += xmlData[i];\n                }\n            }\n            if(angleBracketsCount !== 0){\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        }else{\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return {entities, i};\n    }\n    readEntityExp(xmlData, i) {    \n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n        \n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n    for(let j=0;j [ , '+', '00', '.123', ..\n        if(match){\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n\n    if(this.options.stopNodes && this.options.stopNodes.length > 0){\n      this.stopNodesExact = new Set();\n      this.stopNodesWildcard = new Set();\n      for(let i = 0; i < this.options.stopNodes.length; i++){\n        const stopNodeExp = this.options.stopNodes[i];\n        if(typeof stopNodeExp !== 'string') continue;\n        if(stopNodeExp.startsWith(\"*.\")){\n          this.stopNodesWildcard.add(stopNodeExp.substring(2));\n        }else{\n          this.stopNodesExact.add(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n          //do nothing\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n          }\n          this.addChild(currentNode, childNode, jPath, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          //console.log(tagExp, tagName)\n          const newTagName = this.options.transformTagName(tagName);\n          if(tagExp === tagName) {\n            tagExp = newTagName\n          }\n          tagName = newTagName;\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        const startIndex = i;\n        if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath\n            );\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath, startIndex);\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              const newTagName = this.options.transformTagName(tagName);\n              if(tagExp === tagName) {\n                tagExp = newTagName\n              }\n              tagName = newTagName;\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex){\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n    //do nothing\n  } else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  }else{\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = currentNode.child.length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName){\n  if(stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n  if(stopNodesExact && stopNodesExact.has(jPath)) return true;\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix){\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n      return String.fromCodePoint(codePoint);\n  } else {\n      return prefix +str + \";\";\n  }\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n      if (tagObj[METADATA_SYMBOL] !== undefined) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData !== \"string\" && xmlData.toString){\n            xmlData = xmlData.toString();\n        }else if(typeof xmlData !== \"string\"){\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        \n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nexport function decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.js'\nimport DeleteComment from '../services/DeleteComment.js'\nimport EditComment from '../services/EditComment.js'\nimport NewComment from '../services/NewComment.js'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Edit an existing comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(resourceType, resourceId, commentId, message) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Delete a comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(resourceType, resourceId, commentId) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.js'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'\nimport client from './DavClient.js'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(resourceType, resourceId, message) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=70317f94&scoped=true\"\nimport script from \"./Comment.vue?vue&type=script&lang=js\"\nexport * from \"./Comment.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"70317f94\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.tag,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted && !_vm.isLimbo),expression:\"!deleted && !isLimbo\"}],tag:\"component\",staticClass:\"comment\",class:{ 'comment--loading': _vm.loading }},[_c('div',{staticClass:\"comment__side\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}})],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__body\"},[_c('div',{staticClass:\"comment__header\"},[_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconPencilOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,3345211262)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onDeleteWithUndo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconTrashCanOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,1034796883)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\\t\")])]:_c('NcActionButton',{on:{\"click\":_vm.onEditCancel},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('NcDateTime',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp,\"ignore-seconds\":true}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('form',{staticClass:\"comment__editor\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"comment__editor-group\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"label\":_vm.editor ? _vm.t('comments', 'New comment') : _vm.t('comments', 'Edit comment'),\"placeholder\":_vm.t('comments', 'Write a comment …'),\"model-value\":_vm.localMessage,\"user-data\":_vm.userData,\"aria-describedby\":\"tab-comments__editor-description\"},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('div',{staticClass:\"comment__submit\"},[_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\",\"type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,758946661)})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__editor-description\",attrs:{\"id\":\"tab-comments__editor-description\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', '@ for mentions, : for emoji, / for smart picker'))+\"\\n\\t\\t\\t\")])]):_c('NcRichText',{staticClass:\"comment__message\",class:{ 'comment__message--expanded': _vm.expanded },attrs:{\"text\":_vm.richContent.message,\"arguments\":_vm.richContent.mentions,\"use-markdown\":\"\"},nativeOn:{\"click\":function($event){return _vm.onExpand.apply(null, arguments)}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n    props: {\n        resourceId: {\n            type: Number,\n            required: true,\n        },\n        resourceType: {\n            type: String,\n            default: 'files',\n        },\n    },\n    data() {\n        return {\n            editorData: {\n                actorDisplayName: getCurrentUser().displayName,\n                actorId: getCurrentUser().uid,\n                key: 'editor',\n            },\n            userData: {},\n            currentResourceId: this.resourceId,\n        };\n    },\n    methods: {\n        /**\n         * Autocomplete `@mentions`\n         *\n         * @param search the query\n         * @param callback the callback to process the results with\n         */\n        async autoComplete(search, callback) {\n            const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n                params: {\n                    search,\n                    itemType: this.resourceType,\n                    itemId: this.currentResourceId,\n                    sorter: 'commenters|share-recipients',\n                    limit: loadState('comments', 'maxAutoCompleteResults'),\n                },\n            });\n            // Save user data so it can be used by the editor to replace mentions\n            data.ocs.data.forEach((user) => {\n                this.userData[user.id] = user;\n            });\n            return callback(Object.values(this.userData));\n        },\n        /**\n         * Make sure we have all mentions as Array of objects\n         *\n         * @param mentions the mentions list\n         */\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        genMentionsData(mentions) {\n            Object.values(mentions)\n                .flat()\n                .forEach((mention) => {\n                this.userData[mention.mentionId] = {\n                    // TODO: support groups\n                    icon: 'icon-user',\n                    id: mention.mentionId,\n                    label: mention.mentionDisplayName,\n                    source: 'users',\n                    primary: getCurrentUser()?.uid === mention.mentionId,\n                };\n            });\n            return this.userData;\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nfunction cancelableRequest(request) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport client from './DavClient.js';\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(resourceType, resourceId, date) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const readMarker = date.toUTCString();\n    return client.customRequest(resourcePath, {\n        method: 'PROPPATCH',\n        data: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n    });\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=6c8c157a&scoped=true\"\nimport script from \"./Comments.vue?vue&type=script&lang=js\"\nexport * from \"./Comments.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6c8c157a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.onVisibilityChange),expression:\"onVisibilityChange\"}],staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"editor\":true,\"user-data\":_vm.userData,\"resource-id\":_vm.currentResourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"name\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMessageReplyTextOutline')]},proxy:true}],null,false,326612300)}):_c('ul',_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"tag\":\"li\",\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"message\":comment.props.message,\"resource-id\":_vm.currentResourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),1),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"name\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,3663249556)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconRefresh')]},proxy:true}],null,false,2997625269)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { n, t } from '@nextcloud/l10n'\nimport { createPinia, PiniaVuePlugin } from 'pinia'\nimport Vue from 'vue'\nimport CommentsApp from '../views/Comments.vue'\nimport logger from '../logger.js'\n\nVue.use(PiniaVuePlugin)\n\n__webpack_nonce__ = getCSPNonce()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} resourceType the comments endpoint type\n\t * @param  {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(resourceType = 'files', options = {}) {\n\t\tconst pinia = createPinia()\n\n\t\t// Merge options and set `resourceType` property\n\t\toptions = {\n\t\t\t...options,\n\t\t\tpropsData: {\n\t\t\t\t...(options.propsData ?? {}),\n\t\t\t\tresourceType,\n\t\t\t},\n\t\t\tpinia,\n\t\t}\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from './logger.js'\nimport CommentsInstance from './services/CommentsInstance.js'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nlogger.debug('OCA.Comments.View initialized')\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tdisplay: flex;\\n\\tgap: 8px;\\n\\tpadding: 5px $comment-padding;\\n\\n\\t&__side {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tflex-direction: column;\\n\\t\\tcontainer-type: inline-size;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tmargin-inline-start: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\ttext-align: end;\\n\\t\\twhite-space: nowrap;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor-group {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__editor-description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-block: var(--default-grid-baseline);\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tbottom: 5px;\\n\\t\\tinset-inline-end: 0;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: normal;\\n\\t\\tmax-height: 200px;\\n\\t\\toverflow: auto;\\n\\t\\tscrollbar-gutter: stable;\\n\\t\\tscrollbar-width: thin;\\n\\t\\tmargin-top: -6px;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t\\t:deep(img) {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.comments {\\n\\tmin-height: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tflex: 1 0;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(segment[1]);\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"849c733a93f5261d3bde\",\"4508\":\"04b1afd183e5ecdd9cae\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"1445efe9cbaf4e4cbcb8\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7062;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7062: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(48439)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","assertError","err","isError","Error","obj","Object","prototype","toString","call","Layerr","constructor","errorOptionsOrMessage","messageText","args","arguments","options","shortMessage","length","cause","slice","join","assign","parseArguments","message","super","defineProperty","value","info","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","output","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","filePath","replaced","replace","encodeURIComponent","split","makePathAbsolute","pathStr","startsWith","normalisePath","normalisedPath","test","substr","extractURLPath","fullURL","urlPath","pathname","joinURL","parts","strArray","resultArray","TypeError","match","first","shift","i","component","push","str","normalize","reduce","nextPart","partIndex","generateDigestAuthHeader","digest","url","uri","indexOf","method","toUpperCase","qop","ncString","nc","ha1","algorithm","user","realm","pass","nonce","cnonce","ha1Hash","md5","toLowerCase","ha1Compute","username","password","ha2","digestResponse","authValues","response","opaque","authHeader","k","responseIndicatesDigestAuth","headers","get","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","EntityLevel","EncodingMode","fromBase64","text","base64","decode","generateBasicAuthHeader","encode","Map","fromCodePoint","codePointAt","root","WorkerGlobalScope","self","window","globalThis","fetch","bind","AuthType","ErrorCode","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","hasDigestAuth","createDigestContext","None","Password","Token","token","token_type","access_token","code","InvalidAuthType","Headers","Request","Response","HOT_PATCHER_TYPE","NOOP","createNewItem","original","methods","final","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","target","allowTargetOverrides","keys","forEach","foreignKey","hasOwnProperty","execute","key","item","result","_this","apply","sequence","isPatched","patch","opts","chain","patchInline","plugin","restore","setFinal","__patcher","isReactNative","TARGET","cloneShallow","getPrototypeOf","proto","isPlainObject","setPrototypeOf","merge","items","nextItem","mergeObjects","obj1","obj2","Array","isArray","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","header","lowerHeader","hasArrayBuffer","ArrayBuffer","objToString","isArrayBuffer","isBuffer","prepareRequestOptions","requestOptions","userOptions","finalOptions","data","signal","httpAgent","httpsAgent","_digest","withCredentials","async","request","requestStandard","ok","status","undefined","requestDigest","requestAuto","re","exec","uid","Math","floor","NONCE_CHARS","random","makeNonce","parseDigestAuth","response2","patcher","body","newHeaders","JSON","stringify","requestDataToFetchBody","credentials","agent","parsedURL","protocol","getFetchOptions","assertValidPattern","pattern","posixClasses","braceEscape","s","rangesToString","ranges","parseClass","glob","position","pos","charAt","negs","sawStart","uflag","escaping","negate","endPos","rangeStart","WHILE","c","cls","unip","u","neg","entries","sranges","snegs","windowsPathsNoEscape","types","Set","isExtglobType","has","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","parent","hasMagic","p","map","n","pop","pp","part","copyIn","toJSON","ret","isStart","unshift","isEnd","pl","clone","ast","opt","inBrace","braceStart","braceNeg","acc","noext","ext","substring","fromGlob","toMMPattern","toRegExpSource","nocase","nocaseMagicOnly","flags","RegExp","_src","_glob","allowDot","dot","noEmpty","src","_","start","aps","needNoTrav","needNoDot","end","repeated","bodyDotAllowed","_hasMagic","filter","needUflag","consumed","magic","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","f","endsWith","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","includes","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","$0","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","len","defaultPlatform","process","env","__MINIMATCH_TESTING_PLATFORM__","platform","sep","GLOBSTAR","Symbol","a","b","defaults","def","orig","unescape","escape","makeRe","braceExpand","list","nobrace","mm","nonull","globMagic","set","nonegate","comment","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","allowWindowsEscape","make","magicalBraces","debug","parseNegate","console","error","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","parse","noglobstar","j","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","splice","prev","levelTwoFileOptimize","didSomething","dd","gss","next","p2","other","splin","matched","partsMatch","emptyGSMatch","ai","bi","which","negateOffset","matchOne","file","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fi","pi","fl","fr","pr","swallowee","hit","m","fastTest","Reflect","twoStar","add","open","close","ex","ff","filename","matchBase","flipNegate","createErrorFromResponse","prefix","statusText","handleResponseCode","processResponsePayload","isDetailed","defaultOptions","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","captureMetaData","nameStartChar","regexName","getAllMatches","string","regex","matches","allmatches","startIndex","lastIndex","index","isName","METADATA_SYMBOL","XmlNode","tagname","child","addChild","node","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","xmlData","entities","angleBracketsCount","hasBody","exp","hasSeq","entityName","readEntityExp","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","startChar","elementName","contentModel","trim","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","hexRegex","numRegex","consider","decimalPoint","eNotationRegx","getIgnoreAttributesFn","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","stopNodesExact","stopNodesWildcard","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","newval","parseValue","tags","attrsRegx","attrStr","oldVal","aName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","lastTagName","lastIndexOf","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","rawTagName","newTagName","lastTag","tagContent","entity","currentTagName","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","parseInt","parse_int","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","toNumber","base","codePoint","prettify","compress","arr","compressedObj","tagObj","property","propName","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","isWhiteSpace","char","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","readAttributeStr","tagClosed","validAttrStrRegxp","validateAttributeString","attrNames","getPositionFromMatch","validateAttrName","validateAmpersand","validateNumberAmpersand","count","lineNumber","msg","line","col","validateTagName","lines","XMLParser","buildOptions","validationOption","tagFound","reachedRoot","tagStartPos","closingTag","attrStrStart","isValid","otg","openPos","afterAmp","t","validate","orderedObjParser","orderedResult","addEntity","PropertyType","displaynameTagParser","path","getPropertyOfType","prop","Original","parseXML","xml","attributeParsers","tagParsers","Promise","resolve","multistatus","normaliseResponse","normaliseResult","attrValue","processor","tagValue","getParser","prepareFileFromProps","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","resourceType","getcontenttype","mimeType","getetag","etag","collection","stat","basename","lastmod","mime","displayname","translateDiskSpace","getStat","details","remoteURL","Accept","Depth","responseData","responseItem","propstat","e","statusLine","statusCodeStr","statusCode","parseStat","parsing","createDirectory","dirPath","recursive","paths","directory","currentPath","getAllDirectories","sort","creating","testPath","createDirectoryRecursively","TRANSFORM_RETAIN_FORMAT","v","toXml","jArray","indentation","format","indentBy","arrToStr","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","suppressUnpairedNode","suppressEmptyNode","attr","attrVal","suppressBooleanAttributes","textValue","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","generateLockXML","ownerHREF","namespace","lockinfo","lockscope","exclusive","locktype","write","owner","href","ns","copy","jObj","arrayNodeName","Date","buildAttrPairStr","arrLen","listTagVal","listTagAttr","Ks","L","closeTag","tagEndExp","piClosingChar","DEFAULT_TIMEOUT","getDAVCompliance","compliance","server","DEFAULT_CONTACT_HREF","getRootPath","generateRemoteUrl","client","authTypeRaw","remoteBasePath","contactHref","remotePath","copyFile","destination","Destination","Overwrite","overwrite","shallow","createReadStream","outStream","PassThroughStream","range","rangeHeader","Range","responseError","callback","setTimeout","getFileStream","then","stream","pipe","catch","emit","createWriteStream","writeStream","maxRedirects","customRequest","deleteFile","exists","getDirectoryContents","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","responseItems","nodes","normaliseHREF","decodeURIComponent","getDirectoryFiles","processGlobFilter","getFileContents","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","Buffer","from","getFileContentsBuffer","getFileDownloadLink","authContents","LinkUnsupportedAuthType","getFileUploadLink","getHeaders","getQuota","quotaUsed","quotaAvail","used","available","parseQuota","lock","refreshToken","timeout","Timeout","If","lockPayload","serverTimeout","moveFile","destinationFilename","putFileContents","contentLength","Readable","byteLength","DataTypeNoLength","calculateDataLength","partialUpdateFileContents","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","searchArbiter","responseText","results","truncated","some","parseSearch","getSearch","setHeaders","unlock","registerAttributeParser","parser","registerTagParser","createClient","requesttoken","onRequestTokenUpdate","getRequestToken","decodeHtmlEntities","passes","DOMParser","decoded","parseFromString","documentElement","textContent","useDeletedCommentLimbo","defineStore","state","idsInLimbo","actions","addId","id","removeId","checkForId","resourceId","required","deleted","editing","loading","computed","mapStores","onEdit","onEditCancel","updateLocalMessage","onEditComment","commentId","commentPath","EditComment","logger","showError","onDeleteWithUndo","deletedCommentLimboStore","timeOutDelete","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","newComment","resourcePath","axios","post","actorDisplayName","getCurrentUser","displayName","actorId","actorType","creationDateTime","toUTCString","objectType","verb","NewComment","localMessage","components","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","NcRichContenteditable","NcRichText","mixins","CommentMixin","inheritAttrs","editor","Boolean","autoComplete","Function","userData","tag","expanded","submitted","isOwnComment","richContent","mentions","NcUserBubble","label","primary","isEmptyMessage","timestamp","isLimbo","watch","beforeMount","onSubmit","$nextTick","$refs","$el","focus","onExpand","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","directives","rawName","expression","class","scopedSlots","_u","fn","proxy","preventDefault","ref","nativeOn","defineComponent","editorData","currentResourceId","generateOcsUrl","params","itemType","itemId","sorter","limit","loadState","ocs","values","genMentionsData","flat","mention","mentionId","icon","mentionDisplayName","source","getComments","datetime","toISOString","offset","Comment","NcEmptyContent","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","done","comments","cancelRequest","hasComments","isFirstLoading","onVisibilityChange","isVisible","date","readMarker","markCommentsAsRead","update","resetState","onScrollBottomReached","abort","controller","AbortController","cancelableRequest","findIndex","_l","$set","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","mixin","OCA","Comments","View","pinia","createPinia","propsData","extend","CommentsApp","balanced","maybeMatch","r","pre","reg","begs","beg","left","right","module","exports","freeGlobal","global","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","input","buffer","padding","charCodeAt","bitStorage","bitCounter","fromCharCode","expand","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseCommaParts","postParts","embrace","isPadded","el","lte","y","gte","isTop","expansions","expansion","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","need","z","___CSS_LOADER_EXPORT___","cached","http","https","validateParams","cb","hasToStringTag","$toString","callBound","isStandardArguments","toStringTag","isLegacyArguments","callee","supportsStandardArguments","isFnRegex","safeRegexTest","getProto","toStr","fnToStr","getGeneratorFunction","GeneratorFunction","hasOwn","gOPD","$exec","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","descriptor","_typeof","iterator","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","create","enumerable","writable","configurable","_setPrototypeOf","Parent","construct","sham","Proxy","_isNativeReflectConstruct","instance","o","__proto__","ObjectPrototypeMutationError","_Error","Constructor","_classCallCheck","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","segments","_loop","idx","currentSegment","remainingSegments","pathToHere","_ret","isLastSegment","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","getOwnPropertyDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","$toLowerCase","$test","$concat","$join","$arrSlice","$floor","bigIntValueOf","BigInt","gOPS","getOwnPropertySymbols","symToString","hasShammedSymbols","isEnumerable","propertyIsEnumerable","gPO","O","addNumericSeparator","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","style","quoteStyle","quoteChar","quote","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attributes","childNodes","xs","singleLineValues","indentedJoin","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","protoTag","stringTag","l","remaining","trailer","quoteRE","lowbyte","lineJoiner","isArr","symMap","syms","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","segment","relative","to","fromParts","toParts","min","samePartsLength","outputParts","_makeLong","dirname","dir","extname","pathObject","isObject","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","array","mapDomain","ucs2decode","extra","counter","ucs2encode","basicToDigit","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","out","basic","oldi","w","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","utils","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","numberStr","parseArrayValue","currentArrayLength","parseKeys","givenKey","valuesParsed","segmentContent","splitKeyIntoSegments","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isNaN","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","existing","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","step","findFlag","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","markOverflow","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","defaultEncoder","kind","mapped","sourceKeys","mergeTarget","targetItem","pairs","query","port","isRegex","$TypeError","listGetNode","isDelete","curr","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","GetIntrinsic","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","host","hostname","req","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","XDomainRequest","checkTypeSupport","responseType","isFunction","ReadableStream","writableStream","WritableStream","abortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","Blob","headersList","keyName","_fetchAbortController","requestTimeout","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","statusValid","_write","chunk","encoding","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusMessage","reject","_resumeFetch","pipeTo","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","_charset","charsetMatch","_read","newData","alloc","Uint8Array","MSStreamReader","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","this_len","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","wrap","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","rState","current","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","pipeline","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","origin","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","whichTypedArray","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","working","isDataViewToString","isDataView","DataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","SharedArrayBuffer","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","getOwnPropertyNames","formatError","braces","formatProperty","formatArray","cur","reduceToSingleString","desc","ar","d","pid","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","__esModule","definition","chunkId","all","promises","script","needAttach","scripts","document","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"comments-comments-app.js?v=b73d7e46a982053b95de","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?87e1","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/apps/comments/src/utils/decodeHtmlEntities.js","webpack:///nextcloud/apps/comments/src/store/deletedCommentLimbo.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7275","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack://nextcloud/./apps/comments/src/components/Comment.vue?d1f7","webpack:///nextcloud/apps/comments/src/mixins/CommentView.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/services/ReadComments.ts","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/comments/src/views/Comments.vue?4d55","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack://nextcloud/./apps/comments/src/views/Comments.vue?0e41","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92\"\nimport script from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\nexport * from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon message-reply-text-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function assertError(err) {\n    if (!isError(err)) {\n        throw new Error(\"Parameter was not an error\");\n    }\n}\nexport function isError(err) {\n    return ((!!err &&\n        typeof err === \"object\" &&\n        objectToString(err) === \"[object Error]\") ||\n        err instanceof Error);\n}\nfunction objectToString(obj) {\n    return Object.prototype.toString.call(obj);\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n    constructor(errorOptionsOrMessage, messageText) {\n        const args = [...arguments];\n        const { options, shortMessage } = parseArguments(args);\n        let message = shortMessage;\n        if (options.cause) {\n            message = `${message}: ${options.cause.message}`;\n        }\n        super(message);\n        this.message = message;\n        if (options.name && typeof options.name === \"string\") {\n            this.name = options.name;\n        }\n        else {\n            this.name = getGlobalName();\n        }\n        if (options.cause) {\n            Object.defineProperty(this, \"_cause\", { value: options.cause });\n        }\n        Object.defineProperty(this, \"_info\", { value: {} });\n        if (options.info && typeof options.info === \"object\") {\n            Object.assign(this._info, options.info);\n        }\n        if (Error.captureStackTrace) {\n            const ctor = options.constructorOpt || this.constructor;\n            Error.captureStackTrace(this, ctor);\n        }\n    }\n    static cause(err) {\n        assertError(err);\n        if (!err._cause)\n            return null;\n        return isError(err._cause)\n            ? err._cause\n            : null;\n    }\n    static fullStack(err) {\n        assertError(err);\n        const cause = Layerr.cause(err);\n        if (cause) {\n            return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n        }\n        return err.stack ?? \"\";\n    }\n    static info(err) {\n        assertError(err);\n        const output = {};\n        const cause = Layerr.cause(err);\n        if (cause) {\n            Object.assign(output, Layerr.info(cause));\n        }\n        if (err._info) {\n            Object.assign(output, err._info);\n        }\n        return output;\n    }\n    toString() {\n        let output = this.name ||\n            this.constructor.name ||\n            this.constructor.prototype.name;\n        if (this.message) {\n            output = `${output}: ${this.message}`;\n        }\n        return output;\n    }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n    let options, shortMessage = \"\";\n    if (args.length === 0) {\n        options = {};\n    }\n    else if (isError(args[0])) {\n        options = {\n            cause: args[0],\n        };\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (args[0] && typeof args[0] === \"object\") {\n        options = Object.assign({}, args[0]);\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (typeof args[0] === \"string\") {\n        options = {};\n        shortMessage = shortMessage = args.join(\" \") || \"\";\n    }\n    else {\n        throw new Error(\"Invalid arguments passed to Layerr\");\n    }\n    return {\n        options,\n        shortMessage,\n    };\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n    return __name;\n}\nexport function setGlobalName(name = null) {\n    __name = name ?? NAME;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n    try {\n        const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n        const formatted = encodeURIComponent(replaced);\n        return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed encoding path\");\n    }\n}\nexport function getAllDirectories(directory) {\n    if (!directory || directory === \"/\")\n        return [];\n    let currentPath = directory;\n    const output = [];\n    do {\n        output.push(currentPath);\n        currentPath = path.dirname(currentPath);\n    } while (currentPath && currentPath !== \"/\");\n    return output;\n}\nexport function makePathAbsolute(pathStr) {\n    return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n    let normalisedPath = pathStr;\n    if (normalisedPath[0] !== \"/\") {\n        normalisedPath = \"/\" + normalisedPath;\n    }\n    if (/^.+\\/$/.test(normalisedPath)) {\n        normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n    }\n    return normalisedPath;\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n    const url = new URL(fullURL);\n    let urlPath = url.pathname;\n    if (urlPath.length <= 0) {\n        urlPath = \"/\";\n    }\n    return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n    return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n        if (partIndex === 0 ||\n            nextPart !== \"/\" ||\n            (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n            output.push(nextPart);\n        }\n        return output;\n    }, []));\n}\nexport function normaliseHREF(href) {\n    try {\n        const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n        return normalisedHref;\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed normalising HREF\");\n    }\n}\n","function normalize (strArray) {\n  var resultArray = [];\n  if (strArray.length === 0) { return ''; }\n\n  if (typeof strArray[0] !== 'string') {\n    throw new TypeError('Url must be a string. Received ' + strArray[0]);\n  }\n\n  // If the first part is a plain protocol, we combine it with the next part.\n  if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n    var first = strArray.shift();\n    strArray[0] = first + strArray[0];\n  }\n\n  // There must be two or three slashes in the file protocol, two slashes in anything else.\n  if (strArray[0].match(/^file:\\/\\/\\//)) {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n  } else {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n  }\n\n  for (var i = 0; i < strArray.length; i++) {\n    var component = strArray[i];\n\n    if (typeof component !== 'string') {\n      throw new TypeError('Url must be a string. Received ' + component);\n    }\n\n    if (component === '') { continue; }\n\n    if (i > 0) {\n      // Removing the starting slashes for each component but the first.\n      component = component.replace(/^[\\/]+/, '');\n    }\n    if (i < strArray.length - 1) {\n      // Removing the ending slashes for each component but the last.\n      component = component.replace(/[\\/]+$/, '');\n    } else {\n      // For the last component we will combine multiple slashes to a single one.\n      component = component.replace(/[\\/]+$/, '/');\n    }\n\n    resultArray.push(component);\n\n  }\n\n  var str = resultArray.join('/');\n  // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n  // remove trailing slash before parameters or hash\n  str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n  // replace ? in parameters with &\n  var parts = str.split('?');\n  str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n  return str;\n}\n\nexport default function urlJoin() {\n  var input;\n\n  if (typeof arguments[0] === 'object') {\n    input = arguments[0];\n  } else {\n    input = [].slice.call(arguments);\n  }\n\n  return normalize(input);\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n    return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n    const url = options.url.replace(\"//\", \"\");\n    const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n    const method = options.method ? options.method.toUpperCase() : \"GET\";\n    const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n    const ncString = `00000000${digest.nc}`.slice(-8);\n    const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n    const ha2 = md5(`${method}:${uri}`);\n    const digestResponse = qop\n        ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n        : md5(`${ha1}:${digest.nonce}:${ha2}`);\n    const authValues = {\n        username: digest.username,\n        realm: digest.realm,\n        nonce: digest.nonce,\n        uri,\n        qop,\n        response: digestResponse,\n        nc: ncString,\n        cnonce: digest.cnonce,\n        algorithm: digest.algorithm,\n        opaque: digest.opaque\n    };\n    const authHeader = [];\n    for (const k in authValues) {\n        if (authValues[k]) {\n            if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n                authHeader.push(`${k}=${authValues[k]}`);\n            }\n            else {\n                authHeader.push(`${k}=\"${authValues[k]}\"`);\n            }\n        }\n    }\n    return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n    let uid = \"\";\n    for (let i = 0; i < NONCE_SIZE; ++i) {\n        uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n    }\n    return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n    const isDigest = responseIndicatesDigestAuth(response);\n    if (!isDigest) {\n        return false;\n    }\n    const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n    for (;;) {\n        const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n        const match = re.exec(authHeader);\n        if (!match) {\n            break;\n        }\n        _digest[match[1]] = match[2] || match[3];\n    }\n    _digest.nc += 1;\n    _digest.cnonce = makeNonce();\n    return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n    const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n    return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n    const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n    if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n        return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n    }\n    return ha1Hash;\n}\n","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n    /** Support only XML entities. */\n    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n    /** Support HTML entities, which are a superset of XML entities. */\n    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n    /**\n     * The output is UTF-8 encoded. Only characters that need escaping within\n     * XML will be escaped.\n     */\n    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n    /**\n     * The output consists only of ASCII characters. Characters that need\n     * escaping within HTML, and characters that aren't ASCII characters will\n     * be escaped.\n     */\n    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n    /**\n     * Encode all characters that have an equivalent entity, as well as all\n     * characters that are not ASCII characters.\n     */\n    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n    /**\n     * Encode all characters that have to be escaped in HTML attributes,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n    /**\n     * Encode all characters that have to be escaped in HTML text,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n    const level = typeof options === \"number\" ? options : options.level;\n    if (level === EntityLevel.HTML) {\n        const mode = typeof options === \"object\" ? options.mode : undefined;\n        return decodeHTML(input, mode);\n    }\n    return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n    var _a;\n    const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n    (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n    return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n    const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n    switch (mode) {\n        case EncodingMode.UTF8: {\n            return escapeUTF8(input);\n        }\n        case EncodingMode.Attribute: {\n            return escapeAttribute(input);\n        }\n        case EncodingMode.Text: {\n            return escapeText(input);\n        }\n        case EncodingMode.ASCII: {\n            return level === EntityLevel.HTML\n                ? encodeNonAsciiHTML(input)\n                : encodeXML(input);\n        }\n        // eslint-disable-next-line unicorn/no-useless-switch-case\n        case EncodingMode.Extensive:\n        default: {\n            return level === EntityLevel.HTML\n                ? encodeHTML(input)\n                : encodeXML(input);\n        }\n    }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n    if (isWeb()) {\n        const txt = document.createElement(\"textarea\");\n        txt.innerHTML = text;\n        return txt.value;\n    }\n    return decodeHTML(text);\n}\nexport function fromBase64(text) {\n    return base64.decode(text);\n}\nexport function toBase64(text) {\n    return base64.encode(text);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n    const encoded = toBase64(`${username}:${password}`);\n    return `Basic ${encoded}`;\n}\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [39, \"'\"],\n    [60, \"<\"],\n    [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&\"],\n    [60, \"<\"],\n    [62, \">\"],\n    [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n    self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n    ? self\n    : typeof window !== \"undefined\"\n        ? window\n        : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n    AuthType[\"Auto\"] = \"auto\";\n    AuthType[\"Digest\"] = \"digest\";\n    AuthType[\"None\"] = \"none\";\n    AuthType[\"Password\"] = \"password\";\n    AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n    ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n    ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n    ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n    ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n    ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n    switch (context.authType) {\n        case AuthType.Auto:\n            if (username && password) {\n                context.headers.Authorization = generateBasicAuthHeader(username, password);\n            }\n            break;\n        case AuthType.Digest:\n            context.digest = createDigestContext(username, password, ha1);\n            break;\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password:\n            context.headers.Authorization = generateBasicAuthHeader(username, password);\n            break;\n        case AuthType.Token:\n            context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n            break;\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.InvalidAuthType\n                }\n            }, `Invalid auth type: ${context.authType}`);\n    }\n}\n","export function generateTokenAuthHeader(token) {\n    return `${token.token_type} ${token.access_token}`;\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n    return {\n        original: method,\n        methods: [method],\n        final: false\n    };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n    constructor() {\n        this._configuration = {\n            registry: {},\n            getEmptyAction: \"null\"\n        };\n        this.__type__ = HOT_PATCHER_TYPE;\n    }\n    /**\n     * Configuration object reference\n     * @readonly\n     */\n    get configuration() {\n        return this._configuration;\n    }\n    /**\n     * The action to take when a non-set method is requested\n     * Possible values: null/throw\n     */\n    get getEmptyAction() {\n        return this.configuration.getEmptyAction;\n    }\n    set getEmptyAction(newAction) {\n        this.configuration.getEmptyAction = newAction;\n    }\n    /**\n     * Control another hot-patcher instance\n     * Force the remote instance to use patched methods from calling instance\n     * @param target The target instance to control\n     * @param allowTargetOverrides Allow the target to override patched methods on\n     * the controller (default is false)\n     * @returns Returns self\n     * @throws {Error} Throws if the target is invalid\n     */\n    control(target, allowTargetOverrides = false) {\n        if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n            throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n        }\n        Object.keys(target.configuration.registry).forEach(foreignKey => {\n            if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n                if (allowTargetOverrides) {\n                    this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n                }\n            }\n            else {\n                this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n            }\n        });\n        target._configuration = this.configuration;\n        return this;\n    }\n    /**\n     * Execute a patched method\n     * @param key The method key\n     * @param args Arguments to pass to the method (optional)\n     * @see HotPatcher#get\n     * @returns The output of the called method\n     */\n    execute(key, ...args) {\n        const method = this.get(key) || NOOP;\n        return method(...args);\n    }\n    /**\n     * Get a method for a key\n     * @param key The method key\n     * @returns Returns the requested function or null if the function\n     * does not exist and the host is configured to return null (and not throw)\n     * @throws {Error} Throws if the configuration specifies to throw and the method\n     * does not exist\n     * @throws {Error} Throws if the `getEmptyAction` value is invalid\n     */\n    get(key) {\n        const item = this.configuration.registry[key];\n        if (!item) {\n            switch (this.getEmptyAction) {\n                case \"null\":\n                    return null;\n                case \"throw\":\n                    throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n                default:\n                    throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n            }\n        }\n        return sequence(...item.methods);\n    }\n    /**\n     * Check if a method has been patched\n     * @param key The function key\n     * @returns True if already patched\n     */\n    isPatched(key) {\n        return !!this.configuration.registry[key];\n    }\n    /**\n     * Patch a method name\n     * @param key The method key to patch\n     * @param method The function to set\n     * @param opts Patch options\n     * @returns Returns self\n     */\n    patch(key, method, opts = {}) {\n        const { chain = false } = opts;\n        if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n            throw new Error(`Failed patching '${key}': Method marked as being final`);\n        }\n        if (typeof method !== \"function\") {\n            throw new Error(`Failed patching '${key}': Provided method is not a function`);\n        }\n        if (chain) {\n            // Add new method to the chain\n            if (!this.configuration.registry[key]) {\n                // New key, create item\n                this.configuration.registry[key] = createNewItem(method);\n            }\n            else {\n                // Existing, push the method\n                this.configuration.registry[key].methods.push(method);\n            }\n        }\n        else {\n            // Replace the original\n            if (this.isPatched(key)) {\n                const { original } = this.configuration.registry[key];\n                this.configuration.registry[key] = Object.assign(createNewItem(method), {\n                    original\n                });\n            }\n            else {\n                this.configuration.registry[key] = createNewItem(method);\n            }\n        }\n        return this;\n    }\n    /**\n     * Patch a method inline, execute it and return the value\n     * Used for patching contents of functions. This method will not apply a patched\n     * function if it has already been patched, allowing for external overrides to\n     * function. It also means that the function is cached so that it is not\n     * instantiated every time the outer function is invoked.\n     * @param key The function key to use\n     * @param method The function to patch (once, only if not patched)\n     * @param args Arguments to pass to the function\n     * @returns The output of the patched function\n     * @example\n     *  function mySpecialFunction(a, b) {\n     *      return hotPatcher.patchInline(\"func\", (a, b) => {\n     *          return a + b;\n     *      }, a, b);\n     *  }\n     */\n    patchInline(key, method, ...args) {\n        if (!this.isPatched(key)) {\n            this.patch(key, method);\n        }\n        return this.execute(key, ...args);\n    }\n    /**\n     * Patch a method (or methods) in sequential-mode\n     * See `patch()` with the option `chain: true`\n     * @see patch\n     * @param key The key to patch\n     * @param methods The methods to patch\n     * @returns Returns self\n     */\n    plugin(key, ...methods) {\n        methods.forEach(method => {\n            this.patch(key, method, { chain: true });\n        });\n        return this;\n    }\n    /**\n     * Restore a patched method if it has been overridden\n     * @param key The method key\n     * @returns Returns self\n     */\n    restore(key) {\n        if (!this.isPatched(key)) {\n            throw new Error(`Failed restoring method: No method present for key: ${key}`);\n        }\n        else if (typeof this.configuration.registry[key].original !== \"function\") {\n            throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n        }\n        this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n        return this;\n    }\n    /**\n     * Set a method as being final\n     * This sets a method as having been finally overridden. Attempts at overriding\n     * again will fail with an error.\n     * @param key The key to make final\n     * @returns Returns self\n     */\n    setFinal(key) {\n        if (!this.configuration.registry.hasOwnProperty(key)) {\n            throw new Error(`Failed marking '${key}' as final: No method found for key`);\n        }\n        this.configuration.registry[key].final = true;\n        return this;\n    }\n}\n","export function sequence(...methods) {\n    if (methods.length === 0) {\n        throw new Error(\"Failed creating sequence: No functions provided\");\n    }\n    return function __executeSequence(...args) {\n        let result = args;\n        const _this = this;\n        while (methods.length > 0) {\n            const method = methods.shift();\n            result = [method.apply(_this, result)];\n        }\n        return result[0];\n    };\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n    if (!__patcher) {\n        __patcher = new HotPatcher();\n    }\n    return __patcher;\n}\n","export function isReactNative() {\n    return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n    return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","export function cloneShallow(obj) {\n    return isPlainObject(obj)\n        ? Object.assign({}, obj)\n        : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n    if (typeof obj !== \"object\" ||\n        obj === null ||\n        Object.prototype.toString.call(obj) != \"[object Object]\") {\n        // Not an object\n        return false;\n    }\n    if (Object.getPrototypeOf(obj) === null) {\n        return true;\n    }\n    let proto = obj;\n    // Find the prototype\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n    let output = null, items = [...args];\n    while (items.length > 0) {\n        const nextItem = items.shift();\n        if (!output) {\n            output = cloneShallow(nextItem);\n        }\n        else {\n            output = mergeObjects(output, nextItem);\n        }\n    }\n    return output;\n}\nfunction mergeObjects(obj1, obj2) {\n    const output = cloneShallow(obj1);\n    Object.keys(obj2).forEach(key => {\n        if (!output.hasOwnProperty(key)) {\n            output[key] = obj2[key];\n            return;\n        }\n        if (Array.isArray(obj2[key])) {\n            output[key] = Array.isArray(output[key])\n                ? [...output[key], ...obj2[key]]\n                : [...obj2[key]];\n        }\n        else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n            output[key] =\n                typeof output[key] === \"object\" && !!output[key]\n                    ? mergeObjects(output[key], obj2[key])\n                    : cloneShallow(obj2[key]);\n        }\n        else {\n            output[key] = obj2[key];\n        }\n    });\n    return output;\n}\n","export function convertResponseHeaders(headers) {\n    const output = {};\n    for (const key of headers.keys()) {\n        output[key] = headers.get(key);\n    }\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n    return (hasArrayBuffer &&\n        (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n    return (value != null &&\n        value.constructor != null &&\n        typeof value.constructor.isBuffer === \"function\" &&\n        value.constructor.isBuffer(value));\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n    let headers = {};\n    // Handle standard options\n    const opts = {\n        method: requestOptions.method\n    };\n    if (requestOptions.headers) {\n        headers = mergeHeaders(headers, requestOptions.headers);\n    }\n    if (typeof requestOptions.data !== \"undefined\") {\n        const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n        opts.body = body;\n        headers = mergeHeaders(headers, newHeaders);\n    }\n    if (requestOptions.signal) {\n        opts.signal = requestOptions.signal;\n    }\n    if (requestOptions.withCredentials) {\n        opts.credentials = \"include\";\n    }\n    // Check for node-specific options\n    if (!isWeb() && !isReactNative()) {\n        if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n            opts.agent = (parsedURL) => {\n                if (parsedURL.protocol === \"http:\") {\n                    return requestOptions.httpAgent || new HTTPAgent();\n                }\n                return requestOptions.httpsAgent || new HTTPSAgent();\n            };\n        }\n    }\n    // Attach headers\n    opts.headers = headers;\n    return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n    const finalOptions = cloneShallow(requestOptions);\n    finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n    if (typeof userOptions.data !== \"undefined\") {\n        finalOptions.data = userOptions.data;\n    }\n    if (userOptions.signal) {\n        finalOptions.signal = userOptions.signal;\n    }\n    if (context.httpAgent) {\n        finalOptions.httpAgent = context.httpAgent;\n    }\n    if (context.httpsAgent) {\n        finalOptions.httpsAgent = context.httpsAgent;\n    }\n    if (context.digest) {\n        finalOptions._digest = context.digest;\n    }\n    if (typeof context.withCredentials === \"boolean\") {\n        finalOptions.withCredentials = context.withCredentials;\n    }\n    return finalOptions;\n}\nexport async function request(requestOptions, context) {\n    if (context.authType === AuthType.Auto) {\n        return requestAuto(requestOptions, context);\n    }\n    if (requestOptions._digest) {\n        return requestDigest(requestOptions);\n    }\n    return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n    const response = await requestStandard(requestOptions);\n    if (response.ok) {\n        context.authType = AuthType.Password;\n        return response;\n    }\n    if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n        context.authType = AuthType.Digest;\n        setupAuth(context, context.username, context.password, undefined, undefined);\n        requestOptions._digest = context.digest;\n        return requestDigest(requestOptions);\n    }\n    return response;\n}\nasync function requestDigest(requestOptions) {\n    // Remove client's digest authentication object from request options\n    const _digest = requestOptions._digest;\n    delete requestOptions._digest;\n    // If client is already using digest authentication, include the digest authorization header\n    if (_digest.hasDigestAuth) {\n        requestOptions = merge(requestOptions, {\n            headers: {\n                Authorization: generateDigestAuthHeader(requestOptions, _digest)\n            }\n        });\n    }\n    // Perform digest request + check\n    const response = await requestStandard(requestOptions);\n    if (response.status == 401) {\n        _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n        if (_digest.hasDigestAuth) {\n            requestOptions = merge(requestOptions, {\n                headers: {\n                    Authorization: generateDigestAuthHeader(requestOptions, _digest)\n                }\n            });\n            const response2 = await requestStandard(requestOptions);\n            if (response2.status == 401) {\n                _digest.hasDigestAuth = false;\n            }\n            else {\n                _digest.nc++;\n            }\n            return response2;\n        }\n    }\n    else {\n        _digest.nc++;\n    }\n    return response;\n}\nfunction requestStandard(requestOptions) {\n    const patcher = getPatcher();\n    return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n    if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n        // @ts-ignore\n        return [data, {}];\n    }\n    if (typeof data === \"string\") {\n        return [data, {}];\n    }\n    else if (isBuffer(data)) {\n        return [data, {}];\n    }\n    else if (isArrayBuffer(data)) {\n        return [data, {}];\n    }\n    else if (data && typeof data === \"object\") {\n        return [\n            JSON.stringify(data),\n            {\n                \"content-type\": \"application/json\"\n            }\n        ];\n    }\n    throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof AST && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new AST(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt) {\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new AST(c, ast);\n                    i = AST.#parseAST(str, ext, i, opt);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new AST(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            if (isExtglobType(c) && str.charAt(i) === '(') {\n                part.push(acc);\n                acc = '';\n                const ext = new AST(c, part);\n                part.push(ext);\n                i = AST.#parseAST(str, ext, i, opt);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new AST(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new AST(null, undefined, options);\n        AST.#parseAST(pattern, ast, 0, options);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this)\n            this.#fillNegs();\n        if (!this.type) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            this.#parts = [s];\n            this.type = null;\n            this.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (noEmpty && glob === '*')\n                    re += starNoEmpty;\n                else\n                    re += star;\n                hasMagic = true;\n                continue;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n//# sourceMappingURL=ast.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        const options = this.options;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [file[fdi], pattern[pdi]];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    if (pdi > fdi) {\n                        pattern = pattern.slice(pdi);\n                    }\n                    else if (fdi > pdi) {\n                        file = file.slice(fdi);\n                    }\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        this.debug('matchOne', this, { file, pattern });\n        this.debug('matchOne', file.length, pattern.length);\n        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            var p = pattern[pi];\n            var f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false) {\n                return false;\n            }\n            /* c8 ignore stop */\n            if (p === GLOBSTAR) {\n                this.debug('GLOBSTAR', [pattern, p, f]);\n                // \"**\"\n                // a/**/b/**/c would match the following:\n                // a/b/x/y/z/c\n                // a/x/y/z/b/c\n                // a/b/x/b/x/c\n                // a/b/c\n                // To do this, take the rest of the pattern after\n                // the **, and see if it would match the file remainder.\n                // If so, return success.\n                // If not, the ** \"swallows\" a segment, and try again.\n                // This is recursively awful.\n                //\n                // a/**/b/**/c matching a/b/x/y/z/c\n                // - a matches a\n                // - doublestar\n                //   - matchOne(b/x/y/z/c, b/**/c)\n                //     - b matches b\n                //     - doublestar\n                //       - matchOne(x/y/z/c, c) -> no\n                //       - matchOne(y/z/c, c) -> no\n                //       - matchOne(z/c, c) -> no\n                //       - matchOne(c, c) yes, hit\n                var fr = fi;\n                var pr = pi + 1;\n                if (pr === pl) {\n                    this.debug('** at the end');\n                    // a ** at the end will just swallow the rest.\n                    // We have found a match.\n                    // however, it will not swallow /.x, unless\n                    // options.dot is set.\n                    // . and .. are *never* matched by **, for explosively\n                    // exponential reasons.\n                    for (; fi < fl; fi++) {\n                        if (file[fi] === '.' ||\n                            file[fi] === '..' ||\n                            (!options.dot && file[fi].charAt(0) === '.'))\n                            return false;\n                    }\n                    return true;\n                }\n                // ok, let's see if we can swallow whatever we can.\n                while (fr < fl) {\n                    var swallowee = file[fr];\n                    this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee);\n                    // XXX remove this slice.  Just pass the start index.\n                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n                        this.debug('globstar found match!', fr, fl, swallowee);\n                        // found a match.\n                        return true;\n                    }\n                    else {\n                        // can't swallow \".\" or \"..\" ever.\n                        // can only swallow \".foo\" when explicitly asked.\n                        if (swallowee === '.' ||\n                            swallowee === '..' ||\n                            (!options.dot && swallowee.charAt(0) === '.')) {\n                            this.debug('dot detected!', file, fr, pattern, pr);\n                            break;\n                        }\n                        // ** swallows a segment, and continue.\n                        this.debug('globstar swallow a segment, and continue');\n                        fr++;\n                    }\n                }\n                // no match was found.\n                // However, in partial mode, we can't say this is necessarily over.\n                /* c8 ignore start */\n                if (partial) {\n                    // ran out of file\n                    this.debug('\\n>>> no match, partial?', file, fr, pattern, pr);\n                    if (fr === fl) {\n                        return true;\n                    }\n                }\n                /* c8 ignore stop */\n                return false;\n            }\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","\nexport const defaultOptions = {\n    preserveOrder: false,\n    attributeNamePrefix: '@_',\n    attributesGroupName: false,\n    textNodeName: '#text',\n    ignoreAttributes: true,\n    removeNSPrefix: false, // remove NS from tag name or attribute name if true\n    allowBooleanAttributes: false, //a tag can have attributes without any value\n    //ignoreRootElement : false,\n    parseTagValue: true,\n    parseAttributeValue: false,\n    trimValues: true, //Trim string values of tag and attributes\n    cdataPropName: false,\n    numberParseOptions: {\n      hex: true,\n      leadingZeros: true,\n      eNotation: true\n    },\n    tagValueProcessor: function(tagName, val) {\n      return val;\n    },\n    attributeValueProcessor: function(attrName, val) {\n      return val;\n    },\n    stopNodes: [], //nested tags will not be parsed even for errors\n    alwaysCreateTextNode: false,\n    isArray: () => false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n    captureMetaData: false,\n};\n   \nexport const buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexport function merge(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n}\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node, startIndex) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n    constructor(processEntities){\n        this.suppressValidationErr = !processEntities;\n    }\n    \n    readDocType(xmlData, i){\n    \n        const entities = {};\n        if( xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E')\n        {    \n            i = i+9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for(;i') { //Read tag content\n                    if(comment){\n                        if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    }else{\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                    break;\n                    }\n                }else if( xmlData[i] === '['){\n                    hasBody = true;\n                }else{\n                    exp += xmlData[i];\n                }\n            }\n            if(angleBracketsCount !== 0){\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        }else{\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return {entities, i};\n    }\n    readEntityExp(xmlData, i) {    \n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n        \n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n    for(let j=0;j [ , '+', '00', '.123', ..\n        if(match){\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n\n    if(this.options.stopNodes && this.options.stopNodes.length > 0){\n      this.stopNodesExact = new Set();\n      this.stopNodesWildcard = new Set();\n      for(let i = 0; i < this.options.stopNodes.length; i++){\n        const stopNodeExp = this.options.stopNodes[i];\n        if(typeof stopNodeExp !== 'string') continue;\n        if(stopNodeExp.startsWith(\"*.\")){\n          this.stopNodesWildcard.add(stopNodeExp.substring(2));\n        }else{\n          this.stopNodesExact.add(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n          //do nothing\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n          }\n          this.addChild(currentNode, childNode, jPath, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          //console.log(tagExp, tagName)\n          const newTagName = this.options.transformTagName(tagName);\n          if(tagExp === tagName) {\n            tagExp = newTagName\n          }\n          tagName = newTagName;\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        const startIndex = i;\n        if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath\n            );\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath, startIndex);\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              const newTagName = this.options.transformTagName(tagName);\n              if(tagExp === tagName) {\n                tagExp = newTagName\n              }\n              tagName = newTagName;\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex){\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n    //do nothing\n  } else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  }else{\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = currentNode.child.length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName){\n  if(stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n  if(stopNodesExact && stopNodesExact.has(jPath)) return true;\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix){\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n      return String.fromCodePoint(codePoint);\n  } else {\n      return prefix +str + \";\";\n  }\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n      if (tagObj[METADATA_SYMBOL] !== undefined) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData !== \"string\" && xmlData.toString){\n            xmlData = xmlData.toString();\n        }else if(typeof xmlData !== \"string\"){\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        \n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","const EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nexport function decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.js'\nimport DeleteComment from '../services/DeleteComment.js'\nimport EditComment from '../services/EditComment.js'\nimport NewComment from '../services/NewComment.js'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Edit an existing comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(resourceType, resourceId, commentId, message) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Delete a comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(resourceType, resourceId, commentId) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.js'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'\nimport client from './DavClient.js'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(resourceType, resourceId, message) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=70317f94&scoped=true\"\nimport script from \"./Comment.vue?vue&type=script&lang=js\"\nexport * from \"./Comment.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"70317f94\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.tag,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted && !_vm.isLimbo),expression:\"!deleted && !isLimbo\"}],tag:\"component\",staticClass:\"comment\",class:{ 'comment--loading': _vm.loading }},[_c('div',{staticClass:\"comment__side\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}})],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__body\"},[_c('div',{staticClass:\"comment__header\"},[_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconPencilOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,3345211262)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onDeleteWithUndo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconTrashCanOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,1034796883)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\\t\")])]:_c('NcActionButton',{on:{\"click\":_vm.onEditCancel},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('NcDateTime',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp,\"ignore-seconds\":true}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('form',{staticClass:\"comment__editor\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"comment__editor-group\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"label\":_vm.editor ? _vm.t('comments', 'New comment') : _vm.t('comments', 'Edit comment'),\"placeholder\":_vm.t('comments', 'Write a comment …'),\"model-value\":_vm.localMessage,\"user-data\":_vm.userData,\"aria-describedby\":\"tab-comments__editor-description\"},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('div',{staticClass:\"comment__submit\"},[_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\",\"type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,758946661)})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__editor-description\",attrs:{\"id\":\"tab-comments__editor-description\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', '@ for mentions, : for emoji, / for smart picker'))+\"\\n\\t\\t\\t\")])]):_c('NcRichText',{staticClass:\"comment__message\",class:{ 'comment__message--expanded': _vm.expanded },attrs:{\"text\":_vm.richContent.message,\"arguments\":_vm.richContent.mentions,\"use-markdown\":\"\"},nativeOn:{\"click\":function($event){return _vm.onExpand.apply(null, arguments)}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n    props: {\n        resourceId: {\n            type: Number,\n            required: true,\n        },\n        resourceType: {\n            type: String,\n            default: 'files',\n        },\n    },\n    data() {\n        return {\n            editorData: {\n                actorDisplayName: getCurrentUser().displayName,\n                actorId: getCurrentUser().uid,\n                key: 'editor',\n            },\n            userData: {},\n            currentResourceId: this.resourceId,\n        };\n    },\n    methods: {\n        /**\n         * Autocomplete `@mentions`\n         *\n         * @param search the query\n         * @param callback the callback to process the results with\n         */\n        async autoComplete(search, callback) {\n            const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n                params: {\n                    search,\n                    itemType: this.resourceType,\n                    itemId: this.currentResourceId,\n                    sorter: 'commenters|share-recipients',\n                    limit: loadState('comments', 'maxAutoCompleteResults'),\n                },\n            });\n            // Save user data so it can be used by the editor to replace mentions\n            data.ocs.data.forEach((user) => {\n                this.userData[user.id] = user;\n            });\n            return callback(Object.values(this.userData));\n        },\n        /**\n         * Make sure we have all mentions as Array of objects\n         *\n         * @param mentions the mentions list\n         */\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        genMentionsData(mentions) {\n            Object.values(mentions)\n                .flat()\n                .forEach((mention) => {\n                this.userData[mention.mentionId] = {\n                    // TODO: support groups\n                    icon: 'icon-user',\n                    id: mention.mentionId,\n                    label: mention.mentionDisplayName,\n                    source: 'users',\n                    primary: getCurrentUser()?.uid === mention.mentionId,\n                };\n            });\n            return this.userData;\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nfunction cancelableRequest(request) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport client from './DavClient.js';\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(resourceType, resourceId, date) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const readMarker = date.toUTCString();\n    return client.customRequest(resourcePath, {\n        method: 'PROPPATCH',\n        data: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n    });\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=6c8c157a&scoped=true\"\nimport script from \"./Comments.vue?vue&type=script&lang=js\"\nexport * from \"./Comments.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6c8c157a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.onVisibilityChange),expression:\"onVisibilityChange\"}],staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"editor\":true,\"user-data\":_vm.userData,\"resource-id\":_vm.currentResourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"name\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMessageReplyTextOutline')]},proxy:true}],null,false,326612300)}):_c('ul',_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"tag\":\"li\",\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"message\":comment.props.message,\"resource-id\":_vm.currentResourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),1),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"name\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,3663249556)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconRefresh')]},proxy:true}],null,false,2997625269)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { n, t } from '@nextcloud/l10n'\nimport { createPinia, PiniaVuePlugin } from 'pinia'\nimport Vue from 'vue'\nimport CommentsApp from '../views/Comments.vue'\nimport logger from '../logger.js'\n\nVue.use(PiniaVuePlugin)\n\n__webpack_nonce__ = getCSPNonce()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} resourceType the comments endpoint type\n\t * @param  {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(resourceType = 'files', options = {}) {\n\t\tconst pinia = createPinia()\n\n\t\t// Merge options and set `resourceType` property\n\t\toptions = {\n\t\t\t...options,\n\t\t\tpropsData: {\n\t\t\t\t...(options.propsData ?? {}),\n\t\t\t\tresourceType,\n\t\t\t},\n\t\t\tpinia,\n\t\t}\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from './logger.js'\nimport CommentsInstance from './services/CommentsInstance.js'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nlogger.debug('OCA.Comments.View initialized')\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tdisplay: flex;\\n\\tgap: 8px;\\n\\tpadding: 5px $comment-padding;\\n\\n\\t&__side {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tflex-direction: column;\\n\\t\\tcontainer-type: inline-size;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tmargin-inline-start: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\ttext-align: end;\\n\\t\\twhite-space: nowrap;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor-group {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__editor-description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-block: var(--default-grid-baseline);\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tbottom: 5px;\\n\\t\\tinset-inline-end: 0;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: normal;\\n\\t\\tmax-height: 200px;\\n\\t\\toverflow: auto;\\n\\t\\tscrollbar-gutter: stable;\\n\\t\\tscrollbar-width: thin;\\n\\t\\tmargin-top: -6px;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t\\t:deep(img) {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.comments {\\n\\tmin-height: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tflex: 1 0;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"849c733a93f5261d3bde\",\"4508\":\"04b1afd183e5ecdd9cae\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"1445efe9cbaf4e4cbcb8\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7062;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7062: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(48439)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","assertError","err","isError","Error","obj","Object","prototype","toString","call","Layerr","constructor","errorOptionsOrMessage","messageText","args","arguments","options","shortMessage","length","cause","slice","join","assign","parseArguments","message","super","defineProperty","value","info","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","output","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","filePath","replaced","replace","encodeURIComponent","split","makePathAbsolute","pathStr","startsWith","normalisePath","normalisedPath","test","substr","extractURLPath","fullURL","urlPath","pathname","joinURL","parts","strArray","resultArray","TypeError","match","first","shift","i","component","push","str","normalize","reduce","nextPart","partIndex","generateDigestAuthHeader","digest","url","uri","indexOf","method","toUpperCase","qop","ncString","nc","ha1","algorithm","user","realm","pass","nonce","cnonce","ha1Hash","md5","toLowerCase","ha1Compute","username","password","ha2","digestResponse","authValues","response","opaque","authHeader","k","responseIndicatesDigestAuth","headers","get","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","EntityLevel","EncodingMode","fromBase64","text","base64","decode","generateBasicAuthHeader","encode","Map","fromCodePoint","codePointAt","root","WorkerGlobalScope","self","window","globalThis","fetch","bind","AuthType","ErrorCode","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","hasDigestAuth","createDigestContext","None","Password","Token","token","token_type","access_token","code","InvalidAuthType","Headers","Request","Response","HOT_PATCHER_TYPE","NOOP","createNewItem","original","methods","final","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","target","allowTargetOverrides","keys","forEach","foreignKey","hasOwnProperty","execute","key","item","result","_this","apply","sequence","isPatched","patch","opts","chain","patchInline","plugin","restore","setFinal","__patcher","isReactNative","TARGET","cloneShallow","getPrototypeOf","proto","isPlainObject","setPrototypeOf","merge","items","nextItem","mergeObjects","obj1","obj2","Array","isArray","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","header","lowerHeader","hasArrayBuffer","ArrayBuffer","objToString","isArrayBuffer","isBuffer","prepareRequestOptions","requestOptions","userOptions","finalOptions","data","signal","httpAgent","httpsAgent","_digest","withCredentials","async","request","requestStandard","ok","status","undefined","requestDigest","requestAuto","re","exec","uid","Math","floor","NONCE_CHARS","random","makeNonce","parseDigestAuth","response2","patcher","body","newHeaders","JSON","stringify","requestDataToFetchBody","credentials","agent","parsedURL","protocol","getFetchOptions","assertValidPattern","pattern","posixClasses","braceEscape","s","rangesToString","ranges","parseClass","glob","position","pos","charAt","negs","sawStart","uflag","escaping","negate","endPos","rangeStart","WHILE","c","cls","unip","u","neg","entries","sranges","snegs","windowsPathsNoEscape","types","Set","isExtglobType","has","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","parent","hasMagic","p","map","n","pop","pp","part","copyIn","toJSON","ret","isStart","unshift","isEnd","pl","clone","ast","opt","inBrace","braceStart","braceNeg","acc","noext","ext","substring","fromGlob","toMMPattern","toRegExpSource","nocase","nocaseMagicOnly","flags","RegExp","_src","_glob","allowDot","dot","noEmpty","src","_","start","aps","needNoTrav","needNoDot","end","repeated","bodyDotAllowed","_hasMagic","filter","needUflag","consumed","magic","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","f","endsWith","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","includes","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","$0","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","len","defaultPlatform","process","env","__MINIMATCH_TESTING_PLATFORM__","platform","sep","GLOBSTAR","Symbol","a","b","defaults","def","orig","unescape","escape","makeRe","braceExpand","list","nobrace","mm","nonull","globMagic","set","nonegate","comment","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","allowWindowsEscape","make","magicalBraces","debug","parseNegate","console","error","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","parse","noglobstar","j","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","splice","prev","levelTwoFileOptimize","didSomething","dd","gss","next","p2","other","splin","matched","partsMatch","emptyGSMatch","ai","bi","which","negateOffset","matchOne","file","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fi","pi","fl","fr","pr","swallowee","hit","m","fastTest","Reflect","twoStar","add","open","close","ex","ff","filename","matchBase","flipNegate","createErrorFromResponse","prefix","statusText","handleResponseCode","processResponsePayload","isDetailed","defaultOptions","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","captureMetaData","nameStartChar","regexName","getAllMatches","string","regex","matches","allmatches","startIndex","lastIndex","index","isName","METADATA_SYMBOL","XmlNode","tagname","child","addChild","node","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","xmlData","entities","angleBracketsCount","hasBody","exp","hasSeq","entityName","readEntityExp","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","startChar","elementName","contentModel","trim","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","hexRegex","numRegex","consider","decimalPoint","eNotationRegx","getIgnoreAttributesFn","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","stopNodesExact","stopNodesWildcard","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","newval","parseValue","tags","attrsRegx","attrStr","oldVal","aName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","lastTagName","lastIndexOf","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","rawTagName","newTagName","lastTag","tagContent","entity","currentTagName","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","parseInt","parse_int","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","toNumber","base","codePoint","prettify","compress","arr","compressedObj","tagObj","property","propName","newJpath","isLeaf","isLeafTag","assignAttributes","attrMap","jpath","atrrName","propCount","isWhiteSpace","char","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","readAttributeStr","tagClosed","validAttrStrRegxp","validateAttributeString","attrNames","getPositionFromMatch","validateAttrName","validateAmpersand","validateNumberAmpersand","count","lineNumber","msg","line","col","validateTagName","lines","XMLParser","buildOptions","validationOption","tagFound","reachedRoot","tagStartPos","closingTag","attrStrStart","isValid","otg","openPos","afterAmp","t","validate","orderedObjParser","orderedResult","addEntity","PropertyType","displaynameTagParser","path","getPropertyOfType","prop","Original","parseXML","xml","attributeParsers","tagParsers","Promise","resolve","multistatus","normaliseResponse","normaliseResult","attrValue","processor","tagValue","getParser","prepareFileFromProps","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","resourceType","getcontenttype","mimeType","getetag","etag","collection","stat","basename","lastmod","mime","displayname","translateDiskSpace","getStat","details","remoteURL","Accept","Depth","responseData","responseItem","propstat","e","statusLine","statusCodeStr","statusCode","parseStat","parsing","createDirectory","dirPath","recursive","paths","directory","currentPath","getAllDirectories","sort","creating","testPath","createDirectoryRecursively","TRANSFORM_RETAIN_FORMAT","v","toXml","jArray","indentation","format","indentBy","arrToStr","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","suppressUnpairedNode","suppressEmptyNode","attr","attrVal","suppressBooleanAttributes","textValue","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","generateLockXML","ownerHREF","namespace","lockinfo","lockscope","exclusive","locktype","write","owner","href","ns","copy","jObj","arrayNodeName","Date","buildAttrPairStr","arrLen","listTagVal","listTagAttr","Ks","L","closeTag","tagEndExp","piClosingChar","DEFAULT_TIMEOUT","getDAVCompliance","compliance","server","DEFAULT_CONTACT_HREF","getRootPath","generateRemoteUrl","client","authTypeRaw","remoteBasePath","contactHref","remotePath","copyFile","destination","Destination","Overwrite","overwrite","shallow","createReadStream","outStream","PassThroughStream","range","rangeHeader","Range","responseError","callback","setTimeout","getFileStream","then","stream","pipe","catch","emit","createWriteStream","writeStream","maxRedirects","customRequest","deleteFile","exists","getDirectoryContents","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","responseItems","nodes","normaliseHREF","decodeURIComponent","getDirectoryFiles","processGlobFilter","getFileContents","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","Buffer","from","getFileContentsBuffer","getFileDownloadLink","authContents","LinkUnsupportedAuthType","getFileUploadLink","getHeaders","getQuota","quotaUsed","quotaAvail","used","available","parseQuota","lock","refreshToken","timeout","Timeout","If","lockPayload","serverTimeout","moveFile","destinationFilename","putFileContents","contentLength","Readable","byteLength","DataTypeNoLength","calculateDataLength","partialUpdateFileContents","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","searchArbiter","responseText","results","truncated","some","parseSearch","getSearch","setHeaders","unlock","registerAttributeParser","parser","registerTagParser","createClient","requesttoken","onRequestTokenUpdate","getRequestToken","decodeHtmlEntities","passes","DOMParser","decoded","parseFromString","documentElement","textContent","useDeletedCommentLimbo","defineStore","state","idsInLimbo","actions","addId","id","removeId","checkForId","resourceId","required","deleted","editing","loading","computed","mapStores","onEdit","onEditCancel","updateLocalMessage","onEditComment","commentId","commentPath","EditComment","logger","showError","onDeleteWithUndo","deletedCommentLimboStore","timeOutDelete","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","newComment","resourcePath","axios","post","actorDisplayName","getCurrentUser","displayName","actorId","actorType","creationDateTime","toUTCString","objectType","verb","NewComment","localMessage","components","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","NcRichContenteditable","NcRichText","mixins","CommentMixin","inheritAttrs","editor","Boolean","autoComplete","Function","userData","tag","expanded","submitted","isOwnComment","richContent","mentions","NcUserBubble","label","primary","isEmptyMessage","timestamp","isLimbo","watch","beforeMount","onSubmit","$nextTick","$refs","$el","focus","onExpand","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","directives","rawName","expression","class","scopedSlots","_u","fn","proxy","preventDefault","ref","nativeOn","defineComponent","editorData","currentResourceId","generateOcsUrl","params","itemType","itemId","sorter","limit","loadState","ocs","values","genMentionsData","flat","mention","mentionId","icon","mentionDisplayName","source","getComments","datetime","toISOString","offset","Comment","NcEmptyContent","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","done","comments","cancelRequest","hasComments","isFirstLoading","onVisibilityChange","isVisible","date","readMarker","markCommentsAsRead","update","resetState","onScrollBottomReached","abort","controller","AbortController","cancelableRequest","findIndex","_l","$set","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","mixin","OCA","Comments","View","pinia","createPinia","propsData","extend","CommentsApp","balanced","maybeMatch","r","pre","reg","begs","beg","left","right","module","exports","freeGlobal","global","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","input","buffer","padding","charCodeAt","bitStorage","bitCounter","fromCharCode","expand","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseCommaParts","postParts","embrace","isPadded","el","lte","y","gte","isTop","expansions","expansion","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","need","z","___CSS_LOADER_EXPORT___","cached","http","https","validateParams","cb","hasToStringTag","$toString","callBound","isStandardArguments","toStringTag","isLegacyArguments","callee","supportsStandardArguments","isFnRegex","safeRegexTest","getProto","toStr","fnToStr","getGeneratorFunction","GeneratorFunction","hasOwn","gOPD","$exec","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","descriptor","_typeof","iterator","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","create","enumerable","writable","configurable","_setPrototypeOf","Parent","construct","sham","Proxy","_isNativeReflectConstruct","instance","o","__proto__","ObjectPrototypeMutationError","_Error","Constructor","_classCallCheck","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","segments","_loop","idx","currentSegment","remainingSegments","pathToHere","_ret","isLastSegment","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","getOwnPropertyDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","$toLowerCase","$test","$concat","$join","$arrSlice","$floor","bigIntValueOf","BigInt","gOPS","getOwnPropertySymbols","symToString","hasShammedSymbols","isEnumerable","propertyIsEnumerable","gPO","O","addNumericSeparator","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","style","quoteStyle","quoteChar","quote","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attributes","childNodes","xs","singleLineValues","indentedJoin","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","protoTag","stringTag","l","remaining","trailer","quoteRE","lowbyte","lineJoiner","isArr","symMap","syms","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","segment","relative","to","fromParts","toParts","min","samePartsLength","outputParts","_makeLong","dirname","dir","extname","pathObject","isObject","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","array","mapDomain","ucs2decode","extra","counter","ucs2encode","basicToDigit","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","out","basic","oldi","w","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","utils","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","numberStr","parseArrayValue","currentArrayLength","parseKeys","givenKey","valuesParsed","segmentContent","splitKeyIntoSegments","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isValidArrayIndex","isNaN","markOverflow","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","existing","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","step","findFlag","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","defaultEncoder","kind","mapped","nextIndex","sourceKeys","combined","mergeTarget","targetItem","keyNum","pairs","query","port","isRegex","$TypeError","listGetNode","isDelete","curr","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","GetIntrinsic","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","host","hostname","req","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","XDomainRequest","checkTypeSupport","responseType","isFunction","ReadableStream","writableStream","WritableStream","abortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","Blob","headersList","keyName","_fetchAbortController","requestTimeout","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","statusValid","_write","chunk","encoding","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusMessage","reject","_resumeFetch","pipeTo","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","_charset","charsetMatch","_read","newData","alloc","Uint8Array","MSStreamReader","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","this_len","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","wrap","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","rState","current","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","pipeline","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","origin","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","whichTypedArray","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","working","isDataViewToString","isDataView","DataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","SharedArrayBuffer","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","getOwnPropertyNames","formatError","braces","formatProperty","formatArray","cur","reduceToSingleString","desc","ar","d","pid","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","__esModule","definition","chunkId","all","promises","script","needAttach","scripts","document","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/comments-comments-tab.js b/dist/comments-comments-tab.js
index 14ee414b4a672..848a7f4bb3775 100644
--- a/dist/comments-comments-tab.js
+++ b/dist/comments-comments-tab.js
@@ -1,2 +1,2 @@
-(()=>{var t,e,r,n={96689(t,e,r){"use strict";r.d(e,{A:()=>n});const n=(0,r(35947).YK)().setApp("comments").detectUser().build()},35550(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(21777),o=r(82415),i=r(17003);const s=(0,o.UU)((0,i.e)());function a(t){s.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,n.zo)(a),a((0,n.do)());const u=s},17003(t,e,r){"use strict";r.d(e,{e:()=>o});var n=r(63814);function o(){return(0,n.dC)("dav/comments")}},80609(t,e,r){"use strict";var n=r(21777),o=r(35810),i=r(53334),s=r(26422),a=r(10810),u=r(85471),l=r(51651),c=r(96689),f=r(35906);let h,p;u.Ay.use(a.R2);var d=r(81222);r.nc=(0,n.aV)();const g="comments_files-sidebar-tab";(0,d.C)("comments","activityEnabled",!1)&&void 0!==window.OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:n})=>{const o=(0,a.Ey)();if(!h){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(4906)]).then(r.bind(r,44906));h=u.Ay.extend(t)}p=new h({el:t,pinia:o,propsData:{reloadCallback:n,resourceId:e.fileid}}),c.A.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{p&&p.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:n})=>{const{data:o}=await(0,f.v)({resourceType:"files",resourceId:t.fileid},{limit:e,offset:n??0});c.A.debug("Loaded comments",{node:t,comments:o});const{default:i}=await Promise.all([r.e(4208),r.e(3556),r.e(7039)]).then(r.bind(r,57039)),s=u.Ay.extend(i);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,l.A)(e.props?.creationDateTime).toDate().getTime(),mount(r,{reload:n}){this._CommentsViewInstance=new s({el:r,propsData:{comment:e,resourceId:t.fileid,reloadCallback:n}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),c.A.info("Comments plugin registered for Activity sidebar action")}):(0,o.rS)({id:"comments",displayName:(0,i.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:g,async onInit(){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(8124)]).then(r.bind(r,38124));u.Ay.use(a.R2),u.Ay.mixin({pinia:(0,a.Ey)()});const e=(0,s.A)(u.Ay,t);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(g,e)}})},35906(t,e,r){"use strict";r.d(e,{e:()=>a,v:()=>u});var n=r(82415),o=r(5e3),i=r(90176),s=r(35550);const a=20;async function u({resourceType:t,resourceId:e},r){const u=["",t,e].join("/"),l=r.datetime?`${r.datetime.toISOString()}`:"",c=await s.A.customRequest(u,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??a}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${l}\n\t\t\t`,...r}),f=await c.text(),h=function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return(0,i.ch)(r,r.id.toString(),e)})}(await(0,n.h4)(f),!0);return(0,o.hq)(c,h,!0)}},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,u=r.indexOf(t),l=r.indexOf(e,u+1),c=u;if(u>=0&&l>0){if(t===e)return[u,l];for(n=[],i=r.length;c>=0&&!a;)c==u?(n.push(c),u=r.indexOf(t,c+1)):1==n.length?a=[n.pop(),l]:((o=n.pop())=0?u:l;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,u="",l=-1,c=t.length-i;++l>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(l)<<8,r=t.charCodeAt(++l),u+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(l),u+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),u},decode:function(t){var e=(t=String(t).replace(u,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",l=-1;++l>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return l}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),y(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(u)}(t),!0).map(c)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function l(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function c(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(u).join(".")}function f(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var u=f(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function h(t){return"{"+t+"}"}function p(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function y(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?y(o.post,!1):[""];if(/\$$/.test(o.pre))for(var u=0;u=0;if(!E&&!x)return o.post.match(/,(?!,).*\}/)?y(t=o.pre+"{"+o.body+s+o.post):[t];if(E)m=o.body.split(/\.\./);else if(1===(m=f(o.body)).length&&1===(m=y(m[0],!1).map(h)).length)return a.map(function(t){return o.pre+m[0]+t});if(E){var S=l(m[0]),O=l(m[1]),_=Math.max(m[0].length,m[1].length),A=3==m.length?Math.abs(l(m[2])):1,T=d;O0){var k=new Array(P+1).join("0");R=N<0?"-"+k+R.slice(1):k+R}}b.push(R)}}else{b=[];for(var C=0;Ce},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),u=n("Function.prototype.toString"),l=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=l();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var u=o("RegExp.prototype.exec"),l={},c=function(){throw l},f={toString:c,valueOf:c};"symbol"==typeof Symbol.toPrimitive&&(f[Symbol.toPrimitive]=c),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{u(t,f)}catch(t){return t===l}}}else{var h=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!u(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=u(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=a&&u&&"function"==typeof u.get?u.get:null,c=a&&Set.prototype.forEach,f="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,y=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,E=String.prototype.toLowerCase,x=RegExp.prototype.test,S=Array.prototype.concat,O=Array.prototype.join,_=Array.prototype.slice,A=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,j=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,R="function"==typeof Symbol&&"object"==typeof Symbol.iterator,P="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,k=Object.prototype.propertyIsEnumerable,C=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-A(-t):A(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function q(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function F(t){return v.call(String(t),/"/g,""")}function H(t){return!P||!("object"==typeof t&&(P in t||void 0!==t[P]))}function W(t){return"[object Array]"===K(t)&&H(t)}function B(t){return"[object RegExp]"===K(t)&&H(t)}function V(t){if(R)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var u=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof u&&"symbol"!==u)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return Y(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var A=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=A&&A>0&&"object"==typeof e)return W(e)?"[Array]":"[Object]";var j,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=O.call(Array(t.indent+1)," ")}return{base:r,prev:O.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(X(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=_.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!B(e)){var G=function(t){if(t.name)return t.name;var e=m.call(y.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(Z.length>0?" { "+O.call(Z,", ")+" }":"")}if(V(e)){var nt=R?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||R?nt:Q(nt)}if((j=e)&&"object"==typeof j&&("undefined"!=typeof HTMLElement&&j instanceof HTMLElement||"string"==typeof j.nodeName&&"function"==typeof j.getAttribute)){for(var ot="<"+E.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(W(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+O.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&H(t)}(e)){var ut=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||k.call(e,"cause")?0===ut.length?"["+String(e)+"]":"{ ["+String(e)+"] "+O.call(ut,", ")+" }":"{ ["+String(e)+"] "+O.call(S.call("[cause]: "+U(e.cause),ut),", ")+" }"}if("object"==typeof e&&u){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:A-n});if("symbol"!==u&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{l.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return s&&s.call(e,function(t,r){lt.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),lt,L)}if(function(t){if(!l||!t||"object"!=typeof t)return!1;try{l.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return c&&c.call(e,function(t){ct.push(U(t,e))}),tt("Set",l.call(e),ct,L)}if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return J("WeakMap");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return J("WeakSet");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{return p.call(t),!0}catch(t){}return!1}(e))return J("WeakRef");if(function(t){return"[object Number]"===K(t)&&H(t)}(e))return Q(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Q(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&H(t)}(e))return Q(d.call(e));if(function(t){return"[object String]"===K(t)&&H(t)}(e))return Q(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&H(t)}(e)&&!B(e)){var ft=rt(e,U),ht=C?C(e)===Object.prototype:e instanceof Object||e.constructor===Object,pt=e instanceof Object?"":"null prototype",dt=!ht&&P&&Object(e)===e&&P in e?b.call(K(e),8,-1):pt?"Object":"",gt=(ht||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||pt?"["+O.call(S.call([],dt||[],pt||[]),": ")+"] ":"");return 0===ft.length?gt+"{}":L?gt+"{"+et(ft,L)+"}":gt+"{ "+O.call(ft,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function X(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Y(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,q(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Q(t){return"Object("+t+")"}function J(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):O.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+O.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=W(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},u.normalize=function(t){var e=u.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},u.isAbsolute=function(t){return"/"===t.charAt(0)},u.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=u.resolve(t).substr(1),e=u.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,p=String.fromCharCode;function d(t){throw new RangeError(f[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function y(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(c,".")).split("."),e).join(".")}function m(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+p(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function E(t,e,r){var n=0;for(t=r?h(t/700):t>>1,t+=h(t/e);t>455;n+=a)t=h(t/35);return h(n+36*t/(t+38))}function x(t){var e,r,n,o,i,u,l,c,f,p,g=[],y=t.length,m=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=y&&d("invalid-input"),((c=v(t.charCodeAt(o++)))>=a||c>h((s-m)/u))&&d("overflow"),m+=c*u,!(c<(f=l<=x?1:l>=x+26?26:l-x));l+=a)u>h(s/(p=a-f))&&d("overflow"),u*=p;x=E(m-i,e=g.length+1,0==i),h(m/e)>s-w&&d("overflow"),w+=h(m/e),m%=e,g.splice(m++,0,w)}return b(g)}function S(t){var e,r,n,o,i,u,l,c,f,g,y,b,v,x,S,O=[];for(b=(t=m(t)).length,e=128,r=0,i=72,u=0;u=e&&yh((s-r)/(v=n+1))&&d("overflow"),r+=(l-e)*v,e=l,u=0;us&&d("overflow"),y==e){for(c=r,f=a;!(c<(g=f<=i?1:f>=i+26?26:f-i));f+=a)S=c-g,x=a-g,O.push(p(w(g+S%x,0))),c=h(S/x);O.push(p(w(c,0))),i=E(r,v,n==o),r=0,++n}++r,++e}return O.join("")}i={version:"1.4.1",ucs2:{decode:m,encode:b},decode:x,encode:S,toASCII:function(t){return y(t,function(t){return l.test(t)?"xn--"+S(t):t})},toUnicode:function(t){return y(t,function(t){return u.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},u=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},l=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a.push(s)}for(var u=0;null!==(i=n.exec(r))&&u0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:u(e,r,i),l=t.length-1;l>=0;--l){var c,f=t[l];if("[]"===f&&r.parseArrays)c=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{c=r.plainObjects?{__proto__:null}:{};var h="["===f.charAt(0)&&"]"===f.charAt(f.length-1)?f.slice(1,-1):f,p=r.decodeDotInKeys?h.replace(/%2E/g,"."):h,d=parseInt(p,10);r.parseArrays||""!==p?!isNaN(d)&&f!==p&&String(d)===p&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(c=[])[d]=a:"__proto__"!==p&&(c[p]=a):c={0:a}}a=c}return a}(s,e,r,i)}};t.exports=function(t,e){var r=function(t){if(!t)return s;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.decodeDotInKeys&&"boolean"!=typeof t.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(void 0!==t.throwOnLimitExceeded&&"boolean"!=typeof t.throwOnLimitExceeded)throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var e=void 0===t.charset?s.charset:t.charset,r=void 0===t.duplicates?s.duplicates:t.duplicates;if("combine"!==r&&"first"!==r&&"last"!==r)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===t.allowDots?!0===t.decodeDotInKeys||s.allowDots:!!t.allowDots,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:s.allowEmptyArrays,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:s.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:s.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:s.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:s.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:s.comma,decodeDotInKeys:"boolean"==typeof t.decodeDotInKeys?t.decodeDotInKeys:s.decodeDotInKeys,decoder:"function"==typeof t.decoder?t.decoder:s.decoder,delimiter:"string"==typeof t.delimiter||n.isRegExp(t.delimiter)?t.delimiter:s.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:s.depth,duplicates:r,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:s.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:s.plainObjects,strictDepth:"boolean"==typeof t.strictDepth?!!t.strictDepth:s.strictDepth,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:s.strictNullHandling,throwOnLimitExceeded:"boolean"==typeof t.throwOnLimitExceeded&&t.throwOnLimitExceeded}}(e);if(""===t||null==t)return r.plainObjects?{__proto__:null}:{};for(var c="string"==typeof t?function(t,e){var r={__proto__:null},l=e.ignoreQueryPrefix?t.replace(/^\?/,""):t;l=l.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var c=e.parameterLimit===1/0?void 0:e.parameterLimit,f=l.split(e.delimiter,e.throwOnLimitExceeded?c+1:c);if(e.throwOnLimitExceeded&&f.length>c)throw new RangeError("Parameter limit exceeded. Only "+c+" parameter"+(1===c?"":"s")+" allowed.");var h,p=-1,d=e.charset;if(e.charsetSentinel)for(h=0;h-1&&(y=i(y)?[y]:y),null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],y,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=y)}}return r}(t,r):t,f=r.plainObjects?{__proto__:null}:{},h=Object.keys(c),p=0;p0?A.join(",")||null:void 0}];else if(u(y))P=y;else{var C=Object.keys(A);P=m?C.sort(m):C}var I=h?String(r).replace(/\./g,"%2E"):String(r),M=s&&u(A)&&1===A.length?I+"[]":I;if(a&&u(A)&&0===A.length)return M+"[]";for(var L=0;L0?E+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),u=function(t,e){return a.set(t,e),t},l=function(t){return a.has(t)},c=function(t){return a.get(t)},f=function(t,e){a.set(t,e)},h=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),p=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?u(p(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(u,u+d):s,c=[],f=0;f=48&&p<=57||p>=65&&p<=90||p>=97&&p<=122||i===n.RFC1738&&(40===p||41===p)?c[c.length]=l.charAt(f):p<128?c[c.length]=h[p]:p<2048?c[c.length]=h[192|p>>6]+h[128|63&p]:p<55296||p>=57344?c[c.length]=h[224|p>>12]+h[128|p>>6&63]+h[128|63&p]:(f+=1,p=65536+((1023&p)<<10|1023&l.charCodeAt(f)),c[c.length]=h[240|p>>18]+h[128|p>>12&63]+h[128|p>>6&63]+h[128|63&p])}a+=c.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:l,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;ne._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(l.result.slice(e._pos)))),e._pos=l.result.byteLength)},l.onload=function(){t(!0),e.push(null)},l.readAsArrayBuffer(n)}e._xhr.readyState===u.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,u;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var l=("number"!=typeof u&&(u=0),u+1>(a=t).length||-1===a.indexOf(".",u)?"argument":"property");s='The "'.concat(t,'" ').concat(l," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var i=r(52341),s=r(9573);r(56698)(c,i);for(var a=o(s.prototype),u=0;u0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===u.prototype||(e=function(t){return u.from(t)}(e)),n)a.endEmitted?x(t,new E):T(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):k(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,k(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=j?t=j:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(P,t))}function P(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function k(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(C,t,e))}function C(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(q,e,t))}function q(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function F(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},_.prototype._read=function(t){x(this,new w("_read()"))},_.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:u;function u(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",p),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",u),r.removeListener("end",g),r.removeListener("data",f),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",l);var c=!1;function f(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==F(n.pipes,t))&&!c&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){i("onerror",e),g(),t.removeListener("error",h),0===s(t,"error")&&x(t,e)}function p(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",p),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",f),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",p),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},_.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?R(this):n.reading||o.nextTick(M,this))),r},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},_.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},_.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},_.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(t,e,r){r(new g("_write()"))},_.prototype._writev=null,_.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,P(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),_.prototype.destroy=f.destroy,_.prototype._undestroy=f.undestroy,_.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),u=Symbol("lastReject"),l=Symbol("error"),c=Symbol("ended"),f=Symbol("lastPromise"),h=Symbol("handlePromise"),p=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[p].read();null!==r&&(t[f]=null,t[a]=null,t[u]=null,e(d(r,!1)))}}function y(t){o.nextTick(g,t)}var m=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[p]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(d(void 0,!0));if(this[p].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[l]?r(t[l]):e(d(void 0,!0))})});var r,n=this[f];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[c]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var i=this[p].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[h])}return this[f]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[p].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),m);t.exports=function(t){var e,r=Object.create(b,(i(e={},p,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,u,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,h,{value:function(t,e){var n=r[p].read();n?(r[f]=null,r[a]=null,r[u]=null,t(d(n,!1))):(r[a]=t,r[u]=e)},writable:!0}),e));return r[f]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[u];return null!==e&&(r[f]=null,r[a]=null,r[u]=null,e(t)),void(r[l]=t)}var n=r[a];null!==n&&(r[f]=null,r[a]=null,r[u]=null,n(d(void 0,!0))),r[c]=!0}),t.on("readable",y.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return u.alloc(0);for(var e=u.allocUnsafe(t>>>0),r=this.head,n=0;r;)f(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=u.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:c,value:function(t,e){return l(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return a||u?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){c||(c=t),t&&h.forEach(u),i||(h.forEach(u),f(c))})});return e.reduce(l)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function f(t){return(t||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new m(unescape(t.pathname),{});else if("string"===o)for(e in n=new m(t,{}),p)delete n[e];else if("object"===o){for(e in t)e in p||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function y(t,e){t=(t=f(t)).replace(s,""),e=e||{};var r,n=l.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],u=0;return i?a?(r=n[2]+n[3]+n[4],u=n[2].length+n[3].length):(r=n[2]+n[4],u=n[2].length):a?(r=n[3]+n[4],u=n[3].length):r=n[4],"file:"===o?u>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):u>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:r}}function m(t,e,r){if(t=(t=f(t)).replace(s,""),!(this instanceof m))return new m(t,e,r);var i,a,u,l,p,b,v=h.slice(),w=typeof e,E=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=y(t||"",e=d(e))).protocol&&!a.slashes,E.slashes=a.slashes||i&&e.slashes,E.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(E.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),c=["%","/","?",";","#"].concat(l),f=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?k+="x":k+=P[C];if(!k.match(h)){var M=N.slice(0,A),L=N.slice(A+1),D=P.match(p);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[E])for(A=0,R=l.length;A0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var O=x.slice(-1)[0],_=(r.host||t.host||x.length>1)&&("."===O||".."===O)||""===O,A=0,T=x.length;T>=0;T--)"."===(O=x[T])?x.splice(T,1):".."===O?(x.splice(T,1),A++):A&&(x.splice(T,1),A--);if(!w&&!E)for(;A--;A)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),_&&"/"!==x.join("/").substr(-1)&&x.push("");var j,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return S&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(j=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var u="undefined"!=typeof BigInt,l="undefined"!=typeof Symbol,c=a(Object.prototype.toString),f=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),p=a(Boolean.prototype.valueOf);if(u)var d=a(BigInt.prototype.valueOf);if(l)var g=a(Symbol.prototype.valueOf);function y(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function m(t){return"[object Map]"===c(t)}function b(t){return"[object Set]"===c(t)}function v(t){return"[object WeakMap]"===c(t)}function w(t){return"[object WeakSet]"===c(t)}function E(t){return"[object ArrayBuffer]"===c(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(E.working?E(t):t instanceof ArrayBuffer)}function S(t){return"[object DataView]"===c(t)}function O(t){return"undefined"!=typeof DataView&&(S.working?S(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||O(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},m.working="undefined"!=typeof Map&&m(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(m.working?m(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},E.working="undefined"!=typeof ArrayBuffer&&E(new ArrayBuffer),e.isArrayBuffer=x,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=O;var _="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function A(t){return"[object SharedArrayBuffer]"===c(t)}function T(t){return void 0!==_&&(void 0===A.working&&(A.working=A(new _)),A.working?A(t):t instanceof _)}function j(t){return y(t,f)}function N(t){return y(t,h)}function R(t){return y(t,p)}function P(t){return u&&y(t,d)}function k(t){return l&&y(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=j,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=P,e.isSymbolObject=k,e.isBoxedPrimitive=function(t){return j(t)||N(t)||R(t)||P(t)||k(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=c),h(n,t,n.depth)}function c(t,e){var r=l.styles[e];return r?"["+l.colors[r][0]+"m"+t+"["+l.colors[r][1]+"m":t}function f(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&_(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=h(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),O(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(r);if(0===s.length){if(_(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(S(r))return t.stylize(Date.prototype.toString.call(r),"date");if(O(r))return p(r)}var l,c="",f=!1,x=["{","}"];return g(r)&&(f=!0,x=["[","]"]),_(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),E(r)&&(c=" "+RegExp.prototype.toString.call(r)),S(r)&&(c=" "+Date.prototype.toUTCString.call(r)),O(r)&&(c=" "+p(r)),0!==s.length||f&&0!=r.length?n<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),l=f?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(l,c,x)):x[0]+c+x[1]}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=m(r)?h(t,u.value,null):h(t,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return"  "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return"   "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function m(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function E(t){return x(t)&&"[object RegExp]"===A(t)}function x(t){return"object"==typeof t&&null!==t}function S(t){return x(t)&&"[object Date]"===A(t)}function O(t){return x(t)&&("[object Error]"===A(t)||t instanceof Error)}function _(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=y,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=E,e.types.isRegExp=E,e.isObject=x,e.isDate=S,e.types.isDate=S,e.isError=O,e.types.isNativeError=O,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var j=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),j[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function P(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;io});const n="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,o=n.fetch.bind(n);n.Headers,n.Request,n.Response},72984(t,e,r){"use strict";function n(t){return"function"==typeof t?t:Array.isArray(t)?e=>{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},69031(t,e,r){"use strict";r.d(e,{Eo:()=>s,Xe:()=>i,yQ:()=>a});const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new RegExp("^["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function i(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;ti});var n=r(69031);const o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t,e){e=Object.assign({},o,e);const r=[];let n=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let o=0;o"!==t[o]&&" "!==t[o]&&"\t"!==t[o]&&"\n"!==t[o]&&"\r"!==t[o];o++)m+=t[o];if(m=m.trim(),"/"===m[m.length-1]&&(m=m.substring(0,m.length-1),o--),!g(m)){let e;return e=0===m.trim().length?"Invalid space after '<'.":"Tag '"+m+"' is an invalid name.",p("InvalidTag",e,y(t,o))}const b=l(t,o);if(!1===b)return p("InvalidAttr","Attributes for '"+m+"' have open quote.",y(t,o));let v=b.value;if(o=b.index,"/"===v[v.length-1]){const r=o-v.length;v=v.substring(0,v.length-1);const i=f(v,e);if(!0!==i)return p(i.err.code,i.err.msg,y(t,r+i.err.line));n=!0}else if(d){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+m+"' doesn't have proper closing.",y(t,o));if(v.trim().length>0)return p("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",y(t,c));if(0===r.length)return p("InvalidTag","Closing tag '"+m+"' has not been opened.",y(t,c));{const e=r.pop();if(m!==e.tagName){let r=y(t,e.tagStartPos);return p("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+m+"'.",y(t,c))}0==r.length&&(i=!0)}}else{const s=f(v,e);if(!0!==s)return p(s.err.code,s.err.msg,y(t,o-v.length+s.err.line));if(!0===i)return p("InvalidXml","Multiple possible root nodes found.",y(t,o));-1!==e.unpairedTags.indexOf(m)||r.push({tagName:m,tagStartPos:c}),n=!0}for(o++;o0)||p("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)}function s(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function a(t,e){const r=e;for(;e5&&"xml"===n)return p("InvalidXml","XML declaration allowed only at the start of the document.",y(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function u(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function l(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const c=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function f(t,e){const r=(0,n.Xe)(t,c),o={};for(let t=0;ts});var n=r(85697),o=r(72984);const i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:"  ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(t){this.options=Object.assign({},i,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=(0,o.A)(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=l),this.processTextOrObjNode=a,this.options.format?(this.indentate=u,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function a(t,e,r,n){const o=this.j2x(t,r+1,n.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,r):this.buildObjectNode(o.val,e,o.attrStr,r)}function u(t){return this.options.indentBy.repeat(t)}function l(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}s.prototype.build=function(t){return this.options.preserveOrder?(0,n.A)(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(t,e,r){let n="",o="";const i=r.join(".");for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s))if(void 0===t[s])this.isAttribute(s)&&(o+="");else if(null===t[s])this.isAttribute(s)||s===this.options.cdataPropName?o+="":"?"===s[0]?o+=this.indentate(e)+"<"+s+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+s+"/"+this.tagEndChar;else if(t[s]instanceof Date)o+=this.buildTextValNode(t[s],s,"",e);else if("object"!=typeof t[s]){const r=this.isAttribute(s);if(r&&!this.ignoreAttributesFn(r,i))n+=this.buildAttrPairStr(r,""+t[s]);else if(!r)if(s===this.options.textNodeName){let e=this.options.tagValueProcessor(s,""+t[s]);o+=this.replaceEntitiesValue(e)}else o+=this.buildTextValNode(t[s],s,"",e)}else if(Array.isArray(t[s])){const n=t[s].length;let i="",a="";for(let u=0;u"+t+o}},s.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e0&&(r="\n"),o(t,e,"",r)}function o(t,e,r,n){let l="",c=!1;for(let f=0;f`,c=!1;continue}if(p===e.commentPropName){l+=n+`\x3c!--${h[p][0][e.textNodeName]}--\x3e`,c=!0;continue}if("?"===p[0]){const t=s(h[":@"],e),r="?xml"===p?"":n;let o=h[p][0][e.textNodeName];o=0!==o.length?" "+o:"",l+=r+`<${p}${o}${t}?>`,c=!0;continue}let g=n;""!==g&&(g+=e.indentBy);const y=n+`<${p}${s(h[":@"],e)}`,m=o(h[p],e,d,g);-1!==e.unpairedTags.indexOf(p)?e.suppressUnpairedNode?l+=y+">":l+=y+"/>":m&&0!==m.length||!e.suppressEmptyNode?m&&m.endsWith(">")?l+=y+`>${m}${n}`:(l+=y+">",m&&""!==n&&(m.includes("/>")||m.includes("`):l+=y+"/>",c=!0}return l}function i(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;rn})},25003(t,e,r){"use strict";r.d(e,{A:()=>o});var n=r(69031);class o{constructor(t){this.suppressValidationErr=!t}readDocType(t,e){const r={};if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let n=1,o=!1,i=!1,a="";for(;e"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]?o=!0:a+=t[e];else{if(o&&s(t,"!ENTITY",e)){let n,o;e+=7,[n,o,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===o.indexOf("&")&&(r[n]={regx:RegExp(`&${n};`,"g"),val:o})}else if(o&&s(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(o&&s(t,"!ATTLIST",e))e+=8;else if(o&&s(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!s(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}n++,a=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=i(t,e);let r="";for(;e{for(;eo});const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1},o=function(t){return Object.assign({},n,t)}},79781(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(69031),o=r(13127),i=r(25003),s=r(60524),a=r(72984);class u{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>S(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>S(e,16,"&#x")}},this.addExternalEntities=l,this.parseXml=d,this.parseTextData=c,this.resolveNameSpace=f,this.buildAttributesMap=p,this.isItStopNode=b,this.replaceEntitiesValue=y,this.readStopNodeData=E,this.saveTextToParentTag=m,this.addChild=g,this.ignoreAttributesFn=(0,a.A)(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t));const n=this.options.tagValueProcessor(e,t,r,o,i);return null==n?t:typeof n!=typeof t||n!==t?n:this.options.trimValues||t.trim()===t?x(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function f(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const h=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function p(t,e){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=(0,n.Xe)(t,h),o=r.length,i={};for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),r&&(n=this.saveTextToParentTag(n,r,s));const a=s.substring(s.lastIndexOf(".")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);let u=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(u=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf("."),s=s.substring(0,u),r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=w(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,s),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new o.A(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,s)),this.addChild(r,t,s,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=v(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,s),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=a.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=v(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,s);let a=this.parseTextData(o,r.tagname,s,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,a),i=e+2}else{let a=w(t,i,this.options.removeNSPrefix),u=a.tagName;const l=a.rawTagName;let c=a.tagExp,f=a.attrExpPresent,h=a.closeIndex;if(this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,s,!1));const p=r;p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(r=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),u!==e.tagname&&(s+=s?"."+u:u);const d=i;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,s,u)){let e="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),i=a.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))i=a.closeIndex;else{const r=this.readStopNodeData(t,l,h+1);if(!r)throw new Error(`Unexpected end of ${l}`);i=r.i,e=r.tagContent}const n=new o.A(u);u!==c&&f&&(n[":@"]=this.buildAttributesMap(c,s)),e&&(e=this.parseTextData(e,u,s,!0,f,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),n.add(this.options.textNodeName,e),this.addChild(r,n,s,d)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){if("/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}const t=new o.A(u);u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),s=s.substr(0,s.lastIndexOf("."))}else{const t=new o.A(u);this.tagsNodeStack.push(r),u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),r=t}n="",i=h}}else n+=t[i];return e.child};function g(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.updateTag(e.tagname,r,e[":@"]);!1===o||("string"==typeof o?(e.tagname=o,t.addChild(e,n)):t.addChild(e,n))}const y=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const r=this.docTypeEntities[e];t=t.replace(r.regx,r.val)}for(let e in this.lastEntities){const r=this.lastEntities[e];t=t.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const r=this.htmlEntities[e];t=t.replace(r.regex,r.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function m(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function b(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function v(t,e,r,n){const o=t.indexOf(e,r);if(-1===o)throw new Error(n);return o+e.length-1}function w(t,e,r,n=">"){const o=function(t,e,r=">"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=v(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=v(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=v(t,"]]>",r,"StopNode is not closed.")-2;else{const n=w(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function x(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&(0,s.A)(t,r)}return(0,n.yQ)(t)?t:""}function S(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}},1912(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(60341),o=r(79781),i=r(35382),s=r(86301),a=r(13127);class u{constructor(t){this.externalEntities={},this.options=(0,n.D)(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const r=(0,s.t)(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new o.A(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:(0,i.A)(n,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return a.A.getMetaDataSymbol()}}},35382(t,e,r){"use strict";r.d(e,{A:()=>o});const n=r(13127).A.getMetaDataSymbol();function o(t,e){return i(t,e)}function i(t,e,r){let o;const l={};for(let c=0;c0&&(l[e.textNodeName]=o):void 0!==o&&(l[e.textNodeName]=o),l}function s(t){const e=Object.keys(t);for(let t=0;to}),n="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class o{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][n]={startIndex:e})}static getMetaDataSymbol(){return n}}},21657(t,e,r){"use strict";function n(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}r.d(e,{K:()=>n})},19621(t,e,r){"use strict";r.d(e,{T:()=>a});var n=r(21657);const o="@@HOTPATCHER",i=()=>{};function s(t){return{original:t,methods:[t],final:!1}}class a{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=o}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==o)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||i)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return(0,n.K)(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=s(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(s(e),{original:r})}else this.configuration.registry[t]=s(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}},93028(t,e,r){"use strict";function n(t){if(!o(t))throw new Error("Parameter was not an error")}function o(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}r.d(e,{b:()=>o,t:()=>n})},11163(t,e,r){"use strict";r.d(e,{z:()=>n});function n(){return"Layerr"}},42294(t,e,r){"use strict";r.d(e,{GU:()=>n.G});var n=r(17601)},17601(t,e,r){"use strict";r.d(e,{G:()=>s});var n=r(93028),o=r(11163),i=r(78049);class s extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:s}=(0,i.W)(r);let a=s;if(n.cause&&(a=`${a}: ${n.cause.message}`),super(a),this.message=a,n.name&&"string"==typeof n.name?this.name=n.name:this.name=(0,o.z)(),n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,n.t)(t),t._cause&&(0,n.b)(t._cause)?t._cause:null}static fullStack(t){(0,n.t)(t);const e=s.cause(t);return e?`${t.stack}\ncaused by: ${s.fullStack(e)}`:t.stack??""}static info(t){(0,n.t)(t);const e={},r=s.cause(t);return r&&Object.assign(e,s.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},78049(t,e,r){"use strict";r.d(e,{W:()=>o});var n=r(93028);function o(t){let e,r="";if(0===t.length)e={};else if((0,n.b)(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}},60524(t,e,r){"use strict";r.d(e,{A:()=>s});const n=/^[-+]?0x[a-fA-F0-9]+$/,o=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function s(t,e={}){if(e=Object.assign({},i,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&n.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(a);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const n=o.exec(r);if(n){const o=n[1]||"",i=n[2];let a=(s=n[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substring(0,s.length-1)),s):s;const u=o?"."===t[i.length+1]:"."===t[i.length];if(!e.leadingZeros&&(i.length>1||1===i.length&&!u))return t;{const n=Number(r),s=String(n);if(0===n)return n;if(-1!==s.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===s||s===a||s===`${o}${a}`?n:t;let u=i?a:r;return i?u===s||o+u===s?n:t:u===s||u===o+s?n:t}}return t}var s}const a=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/},406(t,e,r){"use strict";function n(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}r.d(e,{A:()=>n})},19396(t,e,r){"use strict";r.d(e,{V:()=>o});var n=r(57221);function o(t,e){return`Basic ${(0,n.nk)(`${t}:${e}`)}`}},90036(t,e,r){"use strict";r.d(e,{C8:()=>i,Wb:()=>a,XX:()=>s,oD:()=>u});var n=r(83503),o=r(35658);function i(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}function s(t,e){const r=t.url.replace("//",""),i=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),s=t.method?t.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),c=n(`${s}:${i}`),f=n(a?`${l}:${e.nonce}:${u}:${e.cnonce}:${a}:${c}`:`${l}:${e.nonce}:${c}`),h={username:e.username,realm:e.realm,nonce:e.nonce,uri:i,qop:a,response:f,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in h)h[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${h[t]}`):p.push(`${t}="${h[t]}"`));return`Digest ${p.join(", ")}`}function a(t,e){if(!u(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function u(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},36942(t,e,r){"use strict";r.d(e,{e:()=>u});var n=r(42294),o=r(90036),i=r(19396),s=r(89793),a=r(38374);function u(t,e,r,u,l){switch(t.authType){case a.hT.Auto:e&&r&&(t.headers.Authorization=(0,i.V)(e,r));break;case a.hT.Digest:t.digest=(0,o.C8)(e,r,l);break;case a.hT.None:break;case a.hT.Password:t.headers.Authorization=(0,i.V)(e,r);break;case a.hT.Token:t.headers.Authorization=(0,s.O)(u);break;default:throw new n.GU({info:{code:a.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},89793(t,e,r){"use strict";function n(t){return`${t.token_type} ${t.access_token}`}r.d(e,{O:()=>n})},47397(t,e,r){"use strict";r.d(e,{m:()=>i});const n="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function i(t){return n&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},53850(t,e,r){"use strict";function n(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}r.d(e,{P:()=>n})},22921(t,e,r){"use strict";function n(){return"string"==typeof TARGET&&"react-native"===TARGET}function o(){return"string"==typeof TARGET&&"web"===TARGET}r.d(e,{H:()=>o,l:()=>n})},84819(t,e,r){"use strict";r.d(e,{G:()=>i});var n=r(19621);let o=null;function i(){return o||(o=new n.T),o}},84997(t,e,r){"use strict";r.d(e,{U:()=>O});var n=r(85394),o=r(36942),i=r(50335),s=r(28161),a=r(68476),u=r(76374),l=r(77101),c=r(75892),f=r(74419),h=r(17658),p=r(39615),d=r(86772),g=r(84830),y=r(80156),m=r(77087),b=r(30047),v=r(81838),w=r(10524),E=r(90176),x=r(38374);const S="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function O(t,e={}){const{authType:r=null,remoteBasePath:O,contactHref:_=S,ha1:A,headers:T={},httpAgent:j,httpsAgent:N,password:R,token:P,username:k,withCredentials:C}=e;let I=r;I||(I=k||R?x.hT.Password:x.hT.None);const M={authType:I,remoteBasePath:O,contactHref:_,ha1:A,headers:Object.assign({},T),httpAgent:j,httpsAgent:N,password:R,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[E.jp]},remotePath:(0,n.wB)(t),remoteURL:t,token:P,username:k,withCredentials:C};return(0,o.e)(M,k,R,P,A),{copyFile:(t,e,r)=>(0,i.m)(M,t,e,r),createDirectory:(t,e)=>(0,s.c)(M,t,e),createReadStream:(t,e)=>(0,a.V)(M,t,e),createWriteStream:(t,e,r)=>(0,a.o)(M,t,e,r),customRequest:(t,e)=>(0,u.J)(M,t,e),deleteFile:(t,e)=>(0,l.W)(M,t,e),exists:(t,e)=>(0,c.t)(M,t,e),getDirectoryContents:(t,e)=>(0,f.A)(M,t,e),getFileContents:(t,e)=>(0,h.F)(M,t,e),getFileDownloadLink:t=>(0,h.b)(M,t),getFileUploadLink:t=>(0,b.w)(M,t),getHeaders:()=>Object.assign({},M.headers),getQuota:t=>(0,d.T)(M,t),lock:(t,e)=>(0,p.s)(M,t,e),moveFile:(t,e,r)=>(0,m.m)(M,t,e,r),putFileContents:(t,e,r)=>(0,b.g)(M,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>(0,v.V)(M,t,e,r,n,o),getDAVCompliance:t=>(0,w.p)(M,t),search:(t,e)=>(0,y.T)(M,t,e),setHeaders:t=>{M.headers=Object.assign({},t)},stat:(t,e)=>(0,g.z)(M,t,e),unlock:(t,e,r)=>(0,p.T)(M,t,e,r),registerAttributeParser:t=>{M.parsing.attributeParsers.push(t)},registerTagParser:t=>{M.parsing.tagParsers.push(t)}}}},82415(t,e,r){"use strict";r.d(e,{UU:()=>n.U,h4:()=>o.h4});var n=r(84997),o=(r(38374),r(90176));r(71922),r(5e3)},50335(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T",Depth:a.shallow?"0":"infinity"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},28161(t,e,r){"use strict";r.d(e,{c:()=>u});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3),a=r(84830);async function u(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=(0,o.xi)((0,o.qb)(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let i=!1;for(const o of n)if(i)await u(t,o,{...r,recursive:!1});else try{if("directory"!==(await(0,a.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;i=!0,await u(t,o,{...r,recursive:!1})}}(t,e,r);const l=(0,i.H)({url:(0,n.oq)(t.remoteURL,(f=(0,o.O0)(e),f.endsWith("/")?f:f+"/")),method:"MKCOL"},t,r),c=await(0,i.E)(l,t);var f;(0,s.HT)(t,c)}},68476(t,e,r){"use strict";r.d(e,{V:()=>l,o:()=>c});var n=r(88310),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);const u=()=>{};function l(t,e,r={}){const u=new(0,n.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const u=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:n},t,r),l=await(0,s.E)(u,t);if((0,a.HT)(t,l),n.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return r.callback&&setTimeout(()=>{r.callback(l)},0),l.body}(t,e,r).then(t=>{t.pipe(u)}).catch(t=>{u.emit("error",t)}),u}function c(t,e,r={},l=u){const c=new(0,n.PassThrough),f={};!1===r.overwrite&&(f["If-None-Match"]="*");const h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:f,data:c,maxRedirects:0},t,r);return(0,s.E)(h,t).then(e=>(0,a.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{c.emit("error",t)}),c}},76374(t,e,r){"use strict";r.d(e,{J:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r){r.url||(r.url=(0,n.oq)(t.remoteURL,(0,o.O0)(e)));const a=(0,i.H)(r,t,{}),u=await(0,i.E)(a,t);return(0,s.HT)(t,u),u}},77101(t,e,r){"use strict";r.d(e,{W:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,r),u=await(0,i.E)(a,t);(0,s.HT)(t,u)}},74419(t,e,r){"use strict";r.d(e,{A:()=>l});var n=r(12692),o=r(85394),i=r(36236),s=r(90176),a=r(89062),u=r(5e3);async function l(t,e,r={}){const l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),c=await(0,a.E)(l,t);(0,u.HT)(t,c);const f=await c.text();if(!f)throw new Error("Failed parsing directory contents: Empty response");const h=await(0,s.h4)(f,t.parsing),p=(0,i.dU)(e);let d=function(t,e,r,a=!1,u=!1){const l=n.join(e,"/"),{multistatus:{response:c}}=t,f=c.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:r}}=t,u="/"===l?decodeURIComponent((0,i.qb)(e)):(0,i.qb)(n.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,s.ch)(r,u,a)});return u?f:f.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(h,(0,i.dU)(t.remoteBasePath||t.remotePath),p,r.details,r.includeSelf);return r.glob&&(d=(0,u.eh)(d,r.glob)),(0,u.hq)(c,d,r.details)}},75892(t,e,r){"use strict";r.d(e,{t:()=>o});var n=r(84830);async function o(t,e,r={}){try{return await(0,n.z)(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}},10524(t,e,r){"use strict";r.d(e,{p:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,r),u=await(0,i.E)(a,t);try{(0,s.HT)(t,u)}catch(t){throw t}return{compliance:(u.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:u.headers.get("Server")??""}}},17658(t,e,r){"use strict";r.d(e,{F:()=>p,b:()=>d});var n=r(42294),o=r(85394),i=r(36236),s=r(57221),a=r(22921),u=r(89062),l=r(5e3),c=r(38374),f=r(62045).hp;const h=t=>t;async function p(t,e,r={}){const{format:s="binary"}=r;if("binary"!==s&&"text"!==s)throw new n.GU({info:{code:c.O4.InvalidOutputFormat}},`Invalid output format: ${s}`);return"text"===s?async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[h]},t,r),s=await(0,u.E)(n,t);(0,l.HT)(t,s);const a=await s.text();return(0,l.hq)(s,a,r.details)}(t,e,r):async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET"},t,r),s=await(0,u.E)(n,t);let c;return(0,l.HT)(t,s),c=(0,a.H)()||(0,a.l)()?await s.arrayBuffer():f.from(await s.arrayBuffer()),(0,l.hq)(s,c,r.details)}(t,e,r)}function d(t,e){let r=(0,o.oq)(t.remoteURL,(0,i.O0)(e));const a=/^https:/i.test(r)?"https":"http";switch(t.authType){case c.hT.None:break;case c.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,s.Ey)(e);r=r.replace(/^https?:\/\//,`${a}://${n}@`);break}default:throw new n.GU({info:{code:c.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},86772(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(89062),o=r(5e3),i=r(90176),s=r(85394),a=r(7815);async function u(t,e={}){const r=e.path||"/",u=(0,n.H)({url:(0,s.oq)(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,n.E)(u,t);(0,o.HT)(t,l);const c=await l.text(),f=await(0,i.h4)(c,t.parsing),h=(0,a.K)(f);return(0,o.hq)(l,h,e.details)}},39615(t,e,r){"use strict";r.d(e,{T:()=>f,s:()=>c});var n=r(26602),o=r(85394),i=r(36236),s=r(27562),a=r(89062),u=r(5e3);const l="Infinite, Second-4100000000";async function c(t,e,r={}){const{refreshToken:c,timeout:f=l}=r,h={Accept:"text/plain,application/xml",Timeout:f};c&&(h.If=c);const p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"LOCK",headers:h,data:(0,s.A)(t.contactHref)},t,r),d=await(0,a.E)(p,t);(0,u.HT)(t,d);const g=await d.text(),y=(0,s.o)(g),m=n.get(y,"prop.lockdiscovery.activelock.locktoken.href"),b=n.get(y,"prop.lockdiscovery.activelock.timeout");if(!m)throw(0,u.YQ)(d,"No lock token received: ");return{token:m,serverTimeout:b}}async function f(t,e,r,n={}){const s=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),l=await(0,a.E)(s,t);if((0,u.HT)(t,l),204!==l.status&&200!==l.status)throw(0,u.YQ)(l)}},77087(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},81838(t,e,r){"use strict";r.d(e,{V:()=>c});var n=r(42294),o=r(85394),i=r(36236),s=r(89062),a=r(5e3),u=r(10524),l=r(38374);async function c(t,e,r,c,f,h={}){const p=await(0,u.p)(t,e,h);if(p.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(u-r+1),"X-Update-Range":`bytes=${r}-${u}`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PATCH",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);if(p.server.includes("Apache")&&p.compliance.includes(""))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/octet-stream","Content-Length":""+(u-r+1),"Content-Range":`bytes ${r}-${u}/*`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);throw new n.GU({info:{code:l.O4.NotSupported}},"Not supported")}},30047(t,e,r){"use strict";r.d(e,{g:()=>p,w:()=>d});var n=r(42294),o=r(88310),i=r(57221),s=r(85394),a=r(36236),u=r(71922),l=r(22921),c=r(89062),f=r(5e3),h=r(38374);async function p(t,e,r,n={}){const{contentLength:i=!0,overwrite:h=!0}=n,p={"Content-Type":"application/octet-stream"};!(0,l.H)()&&!(0,l.l)()&&void 0!==o&&void 0!==o?.Readable&&r instanceof o.Readable||!1===i||(p["Content-Length"]="number"==typeof i?`${i}`:`${(0,u.J)(r)}`),h||(p["If-None-Match"]="*");const d=(0,c.H)({url:(0,s.oq)(t.remoteURL,(0,a.O0)(e)),method:"PUT",headers:p,data:r},t,n),g=await(0,c.E)(d,t);try{(0,f.HT)(t,g)}catch(t){const e=t;if(412!==e.status||h)throw e;return!1}return!0}function d(t,e){let r=`${(0,s.oq)(t.remoteURL,(0,a.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(r)?"https":"http";switch(t.authType){case h.hT.None:break;case h.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,i.Ey)(e);r=r.replace(/^https?:\/\//,`${o}://${n}@`);break}default:throw new n.GU({info:{code:h.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},80156(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.KA)(h,e,u);return(0,a.hq)(c,p,u)}},84830(t,e,r){"use strict";r.d(e,{z:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.ky)(h,e,u);return(0,a.hq)(c,p,u)}},89062(t,e,r){"use strict";r.d(e,{E:()=>g,H:()=>d});var n=r(11568),o=r(11083),i=r(97192),s=r(84819),a=r(22921),u=r(90036),l=r(79275),c=r(79605),f=r(39299),h=r(38374),p=r(36942);function d(t,e,r){const n=(0,l.q)(t);return n.headers=(0,c.l)(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function g(t,e){return e.authType===h.hT.Auto?async function(t,e){const r=await m(t);return r.ok?(e.authType=h.hT.Password,r):401==r.status&&(0,u.oD)(r)?(e.authType=h.hT.Digest,(0,p.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,y(t)):r}(t,e):t._digest?y(t):m(t)}async function y(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}}));const r=await m(t);if(401==r.status){if(e.hasDigestAuth=(0,u.Wb)(r,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}});const r=await m(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function m(t){const e=(0,s.G)();return e.patchInline("request",t=>e.patchInline("fetch",i.hd,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=(0,c.l)(e,t.headers)),void 0!==t.data){const[n,o]=(0,f.P)(t.data);r.body=n,e=(0,c.l)(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),(0,a.H)()||(0,a.l)()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new n.Agent:t.httpsAgent||new o.Agent),r.headers=e,r}(t)),t)}},5e3(t,e,r){"use strict";r.d(e,{HT:()=>s,YQ:()=>i,eh:()=>a,hq:()=>u});var n=r(44916),o=r(79605);function i(t,e=""){const r=new Error(`${e}Invalid response: ${t.status} ${t.statusText}`);return r.status=t.status,r.response=t,r}function s(t,e){const{status:r}=e;if(401===r&&t.digest)return e;if(r>=400)throw i(e);return e}function a(t,e){return t.filter(t=>(0,n.xF)(t.filename,e,{matchBase:!0}))}function u(t,e,r=!1){return r?{data:e,headers:t.headers?(0,o.N)(t.headers):{},status:t.status,statusText:t.statusText}:e}},39299(t,e,r){"use strict";r.d(e,{P:()=>a});var n=r(88310),o=r(47397),i=r(53850),s=r(22921);function a(t){if(!(0,s.H)()&&!(0,s.l)()&&t instanceof n.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,i.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},35658(t,e,r){"use strict";r.d(e,{M:()=>o});var n=r(83503);function o(t,e,r,o,i,s,a){const u=a||n(`${e}:${r}:${o}`);return t&&"md5-sess"===t.toLowerCase()?n(`${u}:${i}:${s}`):u}},90176(t,e,r){"use strict";r.d(e,{KA:()=>p,ch:()=>f,h4:()=>c,i5:()=>d,jp:()=>u,ky:()=>h});var n,o=r(12692),i=r(1912),s=r(26602),a=r(36236);function u(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function l(t,e,r=n.Original){const o=s.get(t,e);return"array"===r&&!1===Array.isArray(o)?[o]:"object"===r&&Array.isArray(o)?o[0]:o}function c(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[u]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return s.set(r,"multistatus.response",l(r,"multistatus.response",n.Array)),s.set(r,"multistatus.response",s.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?s.set(e,"status",l(e,"status",n.Object)):(s.set(e,"propstat",l(e,"propstat",n.Object)),s.set(e,"propstat.prop",l(e,"propstat.prop",n.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new i.A({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function f(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:i="0",resourcetype:s=null,getcontenttype:a=null,getetag:u=null}=t,l=s&&"object"==typeof s&&void 0!==s.collection?"directory":"file",c={filename:e,basename:o.basename(e),lastmod:n,size:parseInt(i,10),type:l,etag:"string"==typeof u?u.replace(/"/g,""):null};return"file"===l&&(c.mime=a&&"string"==typeof a?a.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function h(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,u,l]=i.split(" ",3),c=parseInt(u,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return f(o,(0,a.qb)(e),r)}function p(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith((0,a.O0)(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(f(t.propstat.prop,e,r))}),n}function d(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}!function(t){t.Array="array",t.Object="object",t.Original="original"}(n||(n={}))},57221(t,e,r){"use strict";r.d(e,{Ey:()=>o,nk:()=>i});var n=r(85914);function o(t){return n.decode(t)}function i(t){return n.encode(t)}r(15723)},79605(t,e,r){"use strict";function n(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function o(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}r.d(e,{N:()=>n,l:()=>o})},79275(t,e,r){"use strict";function n(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function o(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?i(e,t):n(t)}return e}function i(t,e){const r=n(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?i(r[t],e[t]):n(e[t]):r[t]=e[t]:r[t]=e[t]}),r}r.d(e,{h:()=>o,q:()=>n})},36236(t,e,r){"use strict";r.d(e,{O0:()=>a,dU:()=>l,qb:()=>c,xi:()=>u});var n=r(42294),o=r(12692);const i="__PATH_SEPARATOR_POSIX__",s="__PATH_SEPARATOR_WINDOWS__";function a(t){try{const e=t.replace(/\//g,i).replace(/\\\\/g,s);return encodeURIComponent(e).split(s).join("\\\\").split(i).join("/")}catch(t){throw new n.GU(t,"Failed encoding path")}}function u(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=o.dirname(e)}while(e&&"/"!==e);return r}function l(t){return t.startsWith("/")?t:"/"+t}function c(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}},7815(t,e,r){"use strict";r.d(e,{K:()=>o});var n=r(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":o}}}=e;return void 0!==r&&void 0!==o?{used:parseInt(String(r),10),available:(0,n.i5)(o)}:null}catch(t){}return null}},71922(t,e,r){"use strict";r.d(e,{J:()=>u});var n=r(42294),o=r(67691),i=r(47397),s=r(53850),a=r(38374);function u(t){if((0,i.m)(t))return t.byteLength;if((0,s.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new n.GU({info:{code:a.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},85394(t,e,r){"use strict";r.d(e,{S8:()=>l,oq:()=>u,wB:()=>a});var n=r(61160),o=r(42294),i=r(406),s=r(36236);function a(t){let e=new n(t).pathname;return e.length<=0&&(e="/"),(0,s.qb)(e)}function u(...t){return(0,i.A)(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},27562(t,e,r){"use strict";r.d(e,{A:()=>i,o:()=>a});var n=r(1912),o=r(99111);function i(t){return new o.A({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=s(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}function a(t){return new n.A({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},38374(t,e,r){"use strict";var n,o;r.d(e,{O4:()=>o,hT:()=>n}),r(97192),function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(n||(n={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(o||(o={}))},27341(t,e,r){"use strict";new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint},26549(t,e,r){"use strict";var n,o,i,s;r(75780),r(92148),r(27341),function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(n||(n={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(i||(i={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(s||(s={}))},13197(t,e,r){"use strict";r(91573),r(40144)},40144(t,e,r){"use strict";new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])},75780(t,e,r){},92148(t,e,r){},91573(t,e,r){},15723(t,e,r){"use strict";var n,o;r(26549),r(13197),r(40144),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(n||(n={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(o||(o={}))},84300(t,e,r){"use strict";r.d(e,{f:()=>n});const n=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")}},17908(t,e,r){"use strict";r.d(e,{d:()=>g});var n=r(73733),o=r(24754);const i=new Set(["!","?","+","*","@"]),s=t=>i.has(t),a="(?!\\.)",u=new Set(["[","."]),l=new Set(["..","."]),c=new Set("().*{}+?[]^$\\!"),f=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),h="[^/]",p=h+"*?",d=h+"+?";class g{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#u;#l;#c=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?r:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#l?this.#l:this.type?this.#l=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#l=this.#n.map(t=>String(t)).join("")}#f(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?g.#p(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let i="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!l.has(this.#n[0]))){const r=u,o=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));i=o?"(?!(?:^|/)\\.\\.?(?:$|/))":s?a:""}let s="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(s="(?:$|\\/)"),[i+n+s,(0,o.x)(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let i=this.#d(e);if(this.isStart()&&this.isEnd()&&!i&&"!"!==this.type){const t=this.toString();return this.#n=[t],this.type=null,this.#e=void 0,[t,(0,o.x)(this.toString()),!1,!1]}let s=!r||t||e?"":this.#d(!0);s===i&&(s=""),s&&(i=`(?:${i})(?:${s})*?`);let c="";return c="!"===this.type&&this.#c?(this.isStart()&&!e?a:"")+d:n+i+("!"===this.type?"))"+(!this.isStart()||e||t?"":a)+p+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&s?")":"*"===this.type&&s?")?":`)${this.type}`),[c,(0,o.x)(i),this.#e=!!this.#e,this.#r]}#d(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#p(t,e,r=!1){let i=!1,s="",a=!1;for(let o=0;os});const n={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=t=>t.replace(/[[\]\\-]/g,"\\$&"),i=t=>t.join(""),s=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const s=[],a=[];let u=r+1,l=!1,c=!1,f=!1,h=!1,p=r,d="";t:for(;ud?s.push(o(d)+"-"+o(e)):e===d&&s.push(o(e)),d="",u++):t.startsWith("-]",u+1)?(s.push(o(e+"-")),u+=2):t.startsWith("-",u+1)?(d=e,u+=2):(s.push(o(e)),u++)}else f=!0,u++}else h=!0,u++}if(pn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&")},44916(t,e,r){"use strict";r.d(e,{xF:()=>l});var n=r(68928),o=r(84300),i=r(17908),s=r(25093),a=r(24754),u=r(65606);const l=(t,e,r={})=>((0,o.f)(e),!(!r.nocomment&&"#"===e.charAt(0))&&new L(e,r).match(t)),c=/^\*+([^+@!?\*\[\(]*)$/,f=t=>e=>!e.startsWith(".")&&e.endsWith(t),h=t=>e=>e.endsWith(t),p=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),d=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),g=/^\*+\.\*+$/,y=t=>!t.startsWith(".")&&t.includes("."),m=t=>"."!==t&&".."!==t&&t.includes("."),b=/^\.\*+$/,v=t=>"."!==t&&".."!==t&&t.startsWith("."),w=/^\*+$/,E=t=>0!==t.length&&!t.startsWith("."),x=t=>0!==t.length&&"."!==t&&".."!==t,S=/^\?+([^+@!?\*\[\(]*)?$/,O=([t,e=""])=>{const r=j([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},_=([t,e=""])=>{const r=N([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},A=([t,e=""])=>{const r=N([t]);return e?t=>r(t)&&t.endsWith(e):r},T=([t,e=""])=>{const r=j([t]);return e?t=>r(t)&&t.endsWith(e):r},j=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},N=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},R="object"==typeof u&&u?"object"==typeof u.env&&u.env&&u.env.__MINIMATCH_TESTING_PLATFORM__||u.platform:"posix",P="win32"===R?"\\":"/";l.sep=P;const k=Symbol("globstar **");l.GLOBSTAR=k,l.filter=(t,e={})=>r=>l(r,t,e);const C=(t,e={})=>Object.assign({},t,e);l.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return l;const e=l;return Object.assign((r,n,o={})=>e(r,n,C(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,C(t,r))}static defaults(r){return e.defaults(C(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,C(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,C(t,n))}},unescape:(r,n={})=>e.unescape(r,C(t,n)),escape:(r,n={})=>e.escape(r,C(t,n)),filter:(r,n={})=>e.filter(r,C(t,n)),defaults:r=>e.defaults(C(t,r)),makeRe:(r,n={})=>e.makeRe(r,C(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,C(t,n)),match:(r,n,o={})=>e.match(r,n,C(t,o)),sep:e.sep,GLOBSTAR:k})};const I=(t,e={})=>((0,o.f)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:n(t));l.braceExpand=I,l.makeRe=(t,e={})=>new L(t,e).makeRe(),l.match=(t,e,r={})=>{const n=new L(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const M=/[?*]|[+@!]\(.*?\)|\[|\]/;class L{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){(0,o.f)(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||R,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&M.test(t[2])||M.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const u=r.slice(0);u[n]="**",t.push(u),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;ni?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var i=0,s=0,a=t.length,u=e.length;i>> no match, partial?",t,f,e,h),f!==a))}let o;if("string"==typeof l?(o=c===l,this.debug("string match",l,c,o)):(o=l.test(c),this.debug("pattern match",l,c,o)),!o)return!1}if(i===a&&s===u)return!0;if(i===a)return r;if(s===u)return i===a-1&&""===t[i];throw new Error("wtf?")}braceExpand(){return I(this.pattern,this.options)}parse(t){(0,o.f)(t);const e=this.options;if("**"===t)return k;if(""===t)return"";let r,n=null;(r=t.match(w))?n=e.dot?x:E:(r=t.match(c))?n=(e.nocase?e.dot?d:p:e.dot?h:f)(r[1]):(r=t.match(S))?n=(e.nocase?e.dot?_:O:e.dot?A:T)(r):(r=t.match(g))?n=e.dot?m:y:(r=t.match(b))&&(n=v);const s=i.d.fromGlob(t,this.options).toMMPattern();return n&&"object"==typeof s&&Reflect.defineProperty(s,"test",{value:n}),s}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,r=e.noglobstar?"[^/]*?":e.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",n=new Set(e.nocase?["i"]:[]);let o=t.map(t=>{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===k?k:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===k&&i!==k&&(void 0===i?void 0!==o&&o!==k?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==k&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=k))}),e.filter(t=>t!==k).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;tn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,t=[],i.O=(e,r,n,o)=>{if(!r){var s=1/0;for(c=0;c=o)&&Object.keys(i.O).every(t=>i.O[t](r[u]))?r.splice(u--,1):(a=!1,o0&&t[c-1][2]>o;c--)t[c]=t[c-1];t[c]=[r,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,r)=>(i.f[r](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"849c733a93f5261d3bde",3556:"57d00a12b4953e229068",4508:"04b1afd183e5ecdd9cae",4906:"75718b28aced26adc4af",5448:"71cfe268d6f1213c4735",5528:"1445efe9cbaf4e4cbcb8",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7039:"be7eefcb933f99fc5b1f",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8124:"75a422293ae2add34a10",8815:"9a5c507c75429c9c04e4"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},r="nextcloud-ui-legacy:",i.l=(t,n,o,s)=>{if(e[t])e[t].push(n);else{var a,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),r)return r(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),u&&document.head.appendChild(a)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var s=i.p+i.u(e),a=new Error;i.l(s,r=>{if(i.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,n[1](a)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[s,a,u]=r,l=0;if(s.some(e=>0!==t[e])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(u)var c=u(i)}for(e&&e(r);li(80609));s=i.O(s)})();
-//# sourceMappingURL=comments-comments-tab.js.map?v=1bc08b4eeae97866baab
\ No newline at end of file
+(()=>{var t,e,r,n={96689(t,e,r){"use strict";r.d(e,{A:()=>n});const n=(0,r(35947).YK)().setApp("comments").detectUser().build()},35550(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(21777),o=r(82415),i=r(17003);const s=(0,o.UU)((0,i.e)());function a(t){s.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,n.zo)(a),a((0,n.do)());const u=s},17003(t,e,r){"use strict";r.d(e,{e:()=>o});var n=r(63814);function o(){return(0,n.dC)("dav/comments")}},80609(t,e,r){"use strict";var n=r(21777),o=r(35810),i=r(53334),s=r(26422),a=r(10810),u=r(85471),l=r(51651),c=r(96689),f=r(35906);let h,p;u.Ay.use(a.R2);var d=r(81222);r.nc=(0,n.aV)();const g="comments_files-sidebar-tab";(0,d.C)("comments","activityEnabled",!1)&&void 0!==window.OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:n})=>{const o=(0,a.Ey)();if(!h){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(4906)]).then(r.bind(r,44906));h=u.Ay.extend(t)}p=new h({el:t,pinia:o,propsData:{reloadCallback:n,resourceId:e.fileid}}),c.A.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{p&&p.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:n})=>{const{data:o}=await(0,f.v)({resourceType:"files",resourceId:t.fileid},{limit:e,offset:n??0});c.A.debug("Loaded comments",{node:t,comments:o});const{default:i}=await Promise.all([r.e(4208),r.e(3556),r.e(7039)]).then(r.bind(r,57039)),s=u.Ay.extend(i);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,l.A)(e.props?.creationDateTime).toDate().getTime(),mount(r,{reload:n}){this._CommentsViewInstance=new s({el:r,propsData:{comment:e,resourceId:t.fileid,reloadCallback:n}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),c.A.info("Comments plugin registered for Activity sidebar action")}):(0,o.rS)({id:"comments",displayName:(0,i.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:g,async onInit(){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(8124)]).then(r.bind(r,38124));u.Ay.use(a.R2),u.Ay.mixin({pinia:(0,a.Ey)()});const e=(0,s.A)(u.Ay,t);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(g,e)}})},35906(t,e,r){"use strict";r.d(e,{e:()=>a,v:()=>u});var n=r(82415),o=r(5e3),i=r(90176),s=r(35550);const a=20;async function u({resourceType:t,resourceId:e},r){const u=["",t,e].join("/"),l=r.datetime?`${r.datetime.toISOString()}`:"",c=await s.A.customRequest(u,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??a}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${l}\n\t\t\t`,...r}),f=await c.text(),h=function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return(0,i.ch)(r,r.id.toString(),e)})}(await(0,n.h4)(f),!0);return(0,o.hq)(c,h,!0)}},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,u=r.indexOf(t),l=r.indexOf(e,u+1),c=u;if(u>=0&&l>0){if(t===e)return[u,l];for(n=[],i=r.length;c>=0&&!a;)c==u?(n.push(c),u=r.indexOf(t,c+1)):1==n.length?a=[n.pop(),l]:((o=n.pop())=0?u:l;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,u="",l=-1,c=t.length-i;++l>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(l)<<8,r=t.charCodeAt(++l),u+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(l),u+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),u},decode:function(t){var e=(t=String(t).replace(u,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",l=-1;++l>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return l}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),y(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(u)}(t),!0).map(c)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function l(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function c(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(u).join(".")}function f(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var u=f(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function h(t){return"{"+t+"}"}function p(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function y(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?y(o.post,!1):[""];if(/\$$/.test(o.pre))for(var u=0;u=0;if(!E&&!x)return o.post.match(/,(?!,).*\}/)?y(t=o.pre+"{"+o.body+s+o.post):[t];if(E)m=o.body.split(/\.\./);else if(1===(m=f(o.body)).length&&1===(m=y(m[0],!1).map(h)).length)return a.map(function(t){return o.pre+m[0]+t});if(E){var S=l(m[0]),O=l(m[1]),_=Math.max(m[0].length,m[1].length),A=3==m.length?Math.abs(l(m[2])):1,T=d;O0){var k=new Array(P+1).join("0");R=N<0?"-"+k+R.slice(1):k+R}}b.push(R)}}else{b=[];for(var C=0;Ce},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),u=n("Function.prototype.toString"),l=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=l();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var u=o("RegExp.prototype.exec"),l={},c=function(){throw l},f={toString:c,valueOf:c};"symbol"==typeof Symbol.toPrimitive&&(f[Symbol.toPrimitive]=c),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{u(t,f)}catch(t){return t===l}}}else{var h=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!u(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=u(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=a&&u&&"function"==typeof u.get?u.get:null,c=a&&Set.prototype.forEach,f="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,p="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,y=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,E=String.prototype.toLowerCase,x=RegExp.prototype.test,S=Array.prototype.concat,O=Array.prototype.join,_=Array.prototype.slice,A=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,j=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,R="function"==typeof Symbol&&"object"==typeof Symbol.iterator,P="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,k=Object.prototype.propertyIsEnumerable,C=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-A(-t):A(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function q(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function F(t){return v.call(String(t),/"/g,""")}function H(t){return!P||!("object"==typeof t&&(P in t||void 0!==t[P]))}function W(t){return"[object Array]"===K(t)&&H(t)}function B(t){return"[object RegExp]"===K(t)&&H(t)}function V(t){if(R)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var u=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof u&&"symbol"!==u)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return Y(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var A=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=A&&A>0&&"object"==typeof e)return W(e)?"[Array]":"[Object]";var j,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=O.call(Array(t.indent+1)," ")}return{base:r,prev:O.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(X(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=_.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!B(e)){var G=function(t){if(t.name)return t.name;var e=m.call(y.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(Z.length>0?" { "+O.call(Z,", ")+" }":"")}if(V(e)){var nt=R?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||R?nt:Q(nt)}if((j=e)&&"object"==typeof j&&("undefined"!=typeof HTMLElement&&j instanceof HTMLElement||"string"==typeof j.nodeName&&"function"==typeof j.getAttribute)){for(var ot="<"+E.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(W(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+O.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&H(t)}(e)){var ut=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||k.call(e,"cause")?0===ut.length?"["+String(e)+"]":"{ ["+String(e)+"] "+O.call(ut,", ")+" }":"{ ["+String(e)+"] "+O.call(S.call("[cause]: "+U(e.cause),ut),", ")+" }"}if("object"==typeof e&&u){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:A-n});if("symbol"!==u&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{l.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return s&&s.call(e,function(t,r){lt.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),lt,L)}if(function(t){if(!l||!t||"object"!=typeof t)return!1;try{l.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return c&&c.call(e,function(t){ct.push(U(t,e))}),tt("Set",l.call(e),ct,L)}if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return J("WeakMap");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return J("WeakSet");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{return p.call(t),!0}catch(t){}return!1}(e))return J("WeakRef");if(function(t){return"[object Number]"===K(t)&&H(t)}(e))return Q(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Q(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&H(t)}(e))return Q(d.call(e));if(function(t){return"[object String]"===K(t)&&H(t)}(e))return Q(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&H(t)}(e)&&!B(e)){var ft=rt(e,U),ht=C?C(e)===Object.prototype:e instanceof Object||e.constructor===Object,pt=e instanceof Object?"":"null prototype",dt=!ht&&P&&Object(e)===e&&P in e?b.call(K(e),8,-1):pt?"Object":"",gt=(ht||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||pt?"["+O.call(S.call([],dt||[],pt||[]),": ")+"] ":"");return 0===ft.length?gt+"{}":L?gt+"{"+et(ft,L)+"}":gt+"{ "+O.call(ft,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function X(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Y(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,q(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Q(t){return"Object("+t+")"}function J(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):O.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+O.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=W(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},u.normalize=function(t){var e=u.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},u.isAbsolute=function(t){return"/"===t.charAt(0)},u.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=u.resolve(t).substr(1),e=u.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,p=String.fromCharCode;function d(t){throw new RangeError(f[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function y(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(c,".")).split("."),e).join(".")}function m(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=p((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+p(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function E(t,e,r){var n=0;for(t=r?h(t/700):t>>1,t+=h(t/e);t>455;n+=a)t=h(t/35);return h(n+36*t/(t+38))}function x(t){var e,r,n,o,i,u,l,c,f,p,g=[],y=t.length,m=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=y&&d("invalid-input"),((c=v(t.charCodeAt(o++)))>=a||c>h((s-m)/u))&&d("overflow"),m+=c*u,!(c<(f=l<=x?1:l>=x+26?26:l-x));l+=a)u>h(s/(p=a-f))&&d("overflow"),u*=p;x=E(m-i,e=g.length+1,0==i),h(m/e)>s-w&&d("overflow"),w+=h(m/e),m%=e,g.splice(m++,0,w)}return b(g)}function S(t){var e,r,n,o,i,u,l,c,f,g,y,b,v,x,S,O=[];for(b=(t=m(t)).length,e=128,r=0,i=72,u=0;u=e&&yh((s-r)/(v=n+1))&&d("overflow"),r+=(l-e)*v,e=l,u=0;us&&d("overflow"),y==e){for(c=r,f=a;!(c<(g=f<=i?1:f>=i+26?26:f-i));f+=a)S=c-g,x=a-g,O.push(p(w(g+S%x,0))),c=h(S/x);O.push(p(w(c,0))),i=E(r,v,n==o),r=0,++n}++r,++e}return O.join("")}i={version:"1.4.1",ucs2:{decode:m,encode:b},decode:x,encode:S,toASCII:function(t){return y(t,function(t){return l.test(t)?"xn--"+S(t):t})},toUnicode:function(t){return y(t,function(t){return u.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},u=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},l=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a[a.length]=s}for(var u=0;null!==(i=n.exec(r))&&u0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:u(e,r,i),l=t.length-1;l>=0;--l){var c,f=t[l];if("[]"===f&&r.parseArrays)c=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{c=r.plainObjects?{__proto__:null}:{};var h="["===f.charAt(0)&&"]"===f.charAt(f.length-1)?f.slice(1,-1):f,p=r.decodeDotInKeys?h.replace(/%2E/g,"."):h,d=parseInt(p,10),g=!isNaN(d)&&f!==p&&String(d)===p&&d>=0&&r.parseArrays;if(r.parseArrays||""!==p)if(g&&dc)throw new RangeError("Parameter limit exceeded. Only "+c+" parameter"+(1===c?"":"s")+" allowed.");var h,p=-1,d=e.charset;if(e.charsetSentinel)for(h=0;h-1&&(y=i(y)?[y]:y),e.comma&&i(y)&&y.length>e.arrayLimit){if(e.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");y=n.combine([],y,e.arrayLimit,e.plainObjects)}if(null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],y,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=y)}}return r}(t,r):t,f=r.plainObjects?{__proto__:null}:{},h=Object.keys(c),p=0;p0?A.join(",")||null:void 0}];else if(u(y))P=y;else{var C=Object.keys(A);P=m?C.sort(m):C}var I=h?String(r).replace(/\./g,"%2E"):String(r),M=s&&u(A)&&1===A.length?I+"[]":I;if(a&&u(A)&&0===A.length)return M+"[]";for(var L=0;L0?E+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),u=function(t,e){return a.set(t,e),t},l=function(t){return a.has(t)},c=function(t){return a.get(t)},f=function(t,e){a.set(t,e)},h=function(){for(var t=[],e=0;e<256;++e)t[t.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return t}(),p=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?u(p(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(u,u+d):s,c=[],f=0;f=48&&p<=57||p>=65&&p<=90||p>=97&&p<=122||i===n.RFC1738&&(40===p||41===p)?c[c.length]=l.charAt(f):p<128?c[c.length]=h[p]:p<2048?c[c.length]=h[192|p>>6]+h[128|63&p]:p<55296||p>=57344?c[c.length]=h[224|p>>12]+h[128|p>>6&63]+h[128|63&p]:(f+=1,p=65536+((1023&p)<<10|1023&l.charCodeAt(f)),c[c.length]=h[240|p>>18]+h[128|p>>12&63]+h[128|p>>6&63]+h[128|63&p])}a+=c.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:l,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},markOverflow:u,maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;nn.arrayLimit)return u(p(e.concat(r),n),o);e[o]=r}else{if(!e||"object"!=typeof e)return[e,r];if(l(e)){var a=c(e)+1;e[a]=r,f(e,a)}else(n&&(n.plainObjects||n.allowPrototypes)||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e){if(l(r)){for(var h=Object.keys(r),d=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},g=0;gn.arrayLimit?u(p(y,n),y.length-1):y}var m=e;return s(e)&&!s(r)&&(m=p(e,n)),s(e)&&s(r)?(r.forEach(function(r,o){if(i.call(e,o)){var s=e[o];s&&"object"==typeof s&&r&&"object"==typeof r?e[o]=t(s,r,n):e[e.length]=r}else e[o]=r}),e):Object.keys(r).reduce(function(e,o){var s=r[o];if(i.call(e,o)?e[o]=t(e[o],s,n):e[o]=s,l(r)&&!l(e)&&u(e,c(r)),l(e)){var a=parseInt(o,10);String(a)===o&&a>=0&&a>c(e)&&f(e,a)}return e},m)}}},73992(t,e){"use strict";var r=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var n,i,s=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((n=t[i])||null!=n&&!isNaN(n)||(n=""),i=o(i),n=o(n),null===i||null===n)continue;s.push(i+"="+n)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,o={};e=r.exec(t);){var i=n(e[1]),s=n(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},92063(t){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},99721(t,e,r){"use strict";var n=r(36556),o=r(14035),i=n("RegExp.prototype.exec"),s=r(69675);t.exports=function(t){if(!o(t))throw new s("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},14803(t,e,r){"use strict";var n=r(58859),o=r(69675),i=function(t,e,r){for(var n,o=t;null!=(n=o.next);o=n)if(n.key===e)return o.next=n.next,r||(n.next=t.next,t.next=n),n};t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new o("Side channel does not contain "+n(t))},delete:function(e){var r=t&&t.next,n=function(t,e){if(t)return i(t,e,!0)}(t,e);return n&&r&&r===n&&(t=void 0),!!n},get:function(e){return function(t,e){if(t){var r=i(t,e);return r&&r.value}}(t,e)},has:function(e){return function(t,e){return!!t&&!!i(t,e)}(t,e)},set:function(e,r){t||(t={next:void 0}),function(t,e,r){var n=i(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(t,e,r)}};return e}},80507(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(69675),a=n("%Map%",!0),u=o("Map.prototype.get",!0),l=o("Map.prototype.set",!0),c=o("Map.prototype.has",!0),f=o("Map.prototype.delete",!0),h=o("Map.prototype.size",!0);t.exports=!!a&&function(){var t,e={assert:function(t){if(!e.has(t))throw new s("Side channel does not contain "+i(t))},delete:function(e){if(t){var r=f(t,e);return 0===h(t)&&(t=void 0),r}return!1},get:function(e){if(t)return u(t,e)},has:function(e){return!!t&&c(t,e)},set:function(e,r){t||(t=new a),l(t,e,r)}};return e}},72271(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(80507),a=r(69675),u=n("%WeakMap%",!0),l=o("WeakMap.prototype.get",!0),c=o("WeakMap.prototype.set",!0),f=o("WeakMap.prototype.has",!0),h=o("WeakMap.prototype.delete",!0);t.exports=u?function(){var t,e,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},delete:function(r){if(u&&r&&("object"==typeof r||"function"==typeof r)){if(t)return h(t,r)}else if(s&&e)return e.delete(r);return!1},get:function(r){return u&&r&&("object"==typeof r||"function"==typeof r)&&t?l(t,r):e&&e.get(r)},has:function(r){return u&&r&&("object"==typeof r||"function"==typeof r)&&t?f(t,r):!!e&&e.has(r)},set:function(r,n){u&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new u),c(t,r,n)):s&&(e||(e=s()),e.set(r,n))}};return r}:s},920(t,e,r){"use strict";var n=r(69675),o=r(58859),i=r(14803),s=r(80507),a=r(72271)||s||i;t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new n("Side channel does not contain "+o(t))},delete:function(e){return!!t&&t.delete(e)},get:function(e){return t&&t.get(e)},has:function(e){return!!t&&t.has(e)},set:function(e,r){t||(t=a()),t.set(e,r)}};return e}},11568(t,e,r){var n=r(55537),o=r(6917),i=r(57510),s=r(86866),a=r(88835),u=e;u.request=function(t,e){t="string"==typeof t?a.parse(t):i(t);var r=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||r,s=t.hostname||t.host,u=t.port,l=t.path||"/";s&&-1!==s.indexOf(":")&&(s="["+s+"]"),t.url=(s?o+"//"+s:"")+(u?":"+u:"")+l,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var c=new n(t);return e&&c.on("response",e),c},u.get=function(t,e){var r=u.request(t,e);return r.end(),r},u.ClientRequest=n,u.IncomingMessage=o.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=s,u.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},6688(t,e){var r;function n(){if(void 0!==r)return r;if(globalThis.XMLHttpRequest){r=new globalThis.XMLHttpRequest;try{r.open("GET",globalThis.XDomainRequest?"/":"https://example.com")}catch(t){r=null}}else r=null;return r}function o(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(globalThis.fetch)&&i(globalThis.ReadableStream),e.writableStream=i(globalThis.WritableStream),e.abortController=i(globalThis.AbortController),e.arraybuffer=e.fetch||o("arraybuffer"),e.msstream=!e.fetch&&o("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&o("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),r=null},55537(t,e,r){var n=r(62045).hp,o=r(65606),i=r(6688),s=r(56698),a=r(6917),u=r(63242),l=a.IncomingMessage,c=a.readyStates,f=t.exports=function(t){var e,r=this;u.Writable.call(r),r._opts=t,r._body=[],r._headers={},t.auth&&r.setHeader("Authorization","Basic "+n.from(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){r.setHeader(e,t.headers[e])});var o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!i.abortController)o=!1,e=!0;else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!i.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}r._mode=function(t,e){return i.fetch&&e?"fetch":i.mozchunkedarraybuffer?"moz-chunked-arraybuffer":i.msstream?"ms-stream":i.arraybuffer&&t?"arraybuffer":"text"}(e,o),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",function(){r._onFinish()})};s(f,u.Writable),f.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===h.indexOf(r)&&(this._headers[r]={name:t,value:e})},f.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},f.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},f.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts;"timeout"in e&&0!==e.timeout&&t.setTimeout(e.timeout);var r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=new Blob(t._body,{type:(r["content-type"]||{}).value||""}));var s=[];if(Object.keys(r).forEach(function(t){var e=r[t].name,n=r[t].value;Array.isArray(n)?n.forEach(function(t){s.push([e,t])}):s.push([e,n])}),"fetch"===t._mode){var a=null;if(i.abortController){var u=new AbortController;a=u.signal,t._fetchAbortController=u,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=globalThis.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}globalThis.fetch(t._opts.url,{method:t._opts.method,headers:s,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:a}).then(function(e){t._fetchResponse=e,t._resetTimers(!1),t._connect()},function(e){t._resetTimers(!0),t._destroyed||t.emit("error",e)})}else{var l=t._xhr=new globalThis.XMLHttpRequest;try{l.open(t._opts.method,t._opts.url,!0)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}"responseType"in l&&(l.responseType=t._mode),"withCredentials"in l&&(l.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in l&&l.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(l.timeout=e.requestTimeout,l.ontimeout=function(){t.emit("requestTimeout")}),s.forEach(function(t){l.setRequestHeader(t[0],t[1])}),t._response=null,l.onreadystatechange=function(){switch(l.readyState){case c.LOADING:case c.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(l.onprogress=function(){t._onXHRProgress()}),l.onerror=function(){t._destroyed||(t._resetTimers(!0),t.emit("error",new Error("XHR error")))};try{l.send(n)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}}}},f.prototype._onXHRProgress=function(){var t=this;t._resetTimers(!1),function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress(t._resetTimers.bind(t)))},f.prototype._connect=function(){var t=this;t._destroyed||(t._response=new l(t._xhr,t._fetchResponse,t._mode,t._resetTimers.bind(t)),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},f.prototype._write=function(t,e,r){this._body.push(t),r()},f.prototype._resetTimers=function(t){var e=this;globalThis.clearTimeout(e._socketTimer),e._socketTimer=null,t?(globalThis.clearTimeout(e._fetchTimer),e._fetchTimer=null):e._socketTimeout&&(e._socketTimer=globalThis.setTimeout(function(){e.emit("timeout")},e._socketTimeout))},f.prototype.abort=f.prototype.destroy=function(t){var e=this;e._destroyed=!0,e._resetTimers(!0),e._response&&(e._response._destroyed=!0),e._xhr?e._xhr.abort():e._fetchAbortController&&e._fetchAbortController.abort(),t&&e.emit("error",t)},f.prototype.end=function(t,e,r){"function"==typeof t&&(r=t,t=void 0),u.Writable.prototype.end.call(this,t,e,r)},f.prototype.setTimeout=function(t,e){var r=this;e&&r.once("timeout",e),r._socketTimeout=t,r._resetTimers(!1)},f.prototype.flushHeaders=function(){},f.prototype.setNoDelay=function(){},f.prototype.setSocketKeepAlive=function(){};var h=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},6917(t,e,r){var n=r(65606),o=r(62045).hp,i=r(6688),s=r(56698),a=r(63242),u=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},l=e.IncomingMessage=function(t,e,r,s){var u=this;if(a.Readable.call(u),u._mode=r,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",function(){n.nextTick(function(){u.emit("close")})}),"fetch"===r){if(u._fetchResponse=e,u.url=e.url,u.statusCode=e.status,u.statusMessage=e.statusText,e.headers.forEach(function(t,e){u.headers[e.toLowerCase()]=t,u.rawHeaders.push(e,t)}),i.writableStream){var l=new WritableStream({write:function(t){return s(!1),new Promise(function(e,r){u._destroyed?r():u.push(o.from(t))?e():u._resumeFetch=e})},close:function(){s(!0),u._destroyed||u.push(null)},abort:function(t){s(!0),u._destroyed||u.emit("error",t)}});try{return void e.body.pipeTo(l).catch(function(t){s(!0),u._destroyed||u.emit("error",t)})}catch(t){}}var c=e.body.getReader();!function t(){c.read().then(function(e){u._destroyed||(s(e.done),e.done?u.push(null):(u.push(o.from(e.value)),t()))}).catch(function(t){s(!0),u._destroyed||u.emit("error",t)})}()}else if(u._xhr=t,u._pos=0,u.url=t.responseURL,u.statusCode=t.status,u.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var r=e[1].toLowerCase();"set-cookie"===r?(void 0===u.headers[r]&&(u.headers[r]=[]),u.headers[r].push(e[2])):void 0!==u.headers[r]?u.headers[r]+=", "+e[2]:u.headers[r]=e[2],u.rawHeaders.push(e[1],e[2])}}),u._charset="x-user-defined",!i.overrideMimeType){var f=u.rawHeaders["mime-type"];if(f){var h=f.match(/;\s*charset=([^;])(;|$)/);h&&(u._charset=h[1].toLowerCase())}u._charset||(u._charset="utf-8")}};s(l,a.Readable),l.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},l.prototype._onXHRProgress=function(t){var e=this,r=e._xhr,n=null;switch(e._mode){case"text":if((n=r.responseText).length>e._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(l.result.slice(e._pos)))),e._pos=l.result.byteLength)},l.onload=function(){t(!0),e.push(null)},l.readAsArrayBuffer(n)}e._xhr.readyState===u.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,u;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var l=("number"!=typeof u&&(u=0),u+1>(a=t).length||-1===a.indexOf(".",u)?"argument":"property");s='The "'.concat(t,'" ').concat(l," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var i=r(52341),s=r(9573);r(56698)(c,i);for(var a=o(s.prototype),u=0;u0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===u.prototype||(e=function(t){return u.from(t)}(e)),n)a.endEmitted?x(t,new E):T(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):k(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,k(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=j?t=j:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(P,t))}function P(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function k(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(C,t,e))}function C(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(q,e,t))}function q(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function F(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},_.prototype._read=function(t){x(this,new w("_read()"))},_.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:u;function u(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",p),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",u),r.removeListener("end",g),r.removeListener("data",f),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",l);var c=!1;function f(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==F(n.pipes,t))&&!c&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){i("onerror",e),g(),t.removeListener("error",h),0===s(t,"error")&&x(t,e)}function p(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",p),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",f),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",p),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},_.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?R(this):n.reading||o.nextTick(M,this))),r},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},_.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},_.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},_.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(t,e,r){r(new g("_write()"))},_.prototype._writev=null,_.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,P(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),_.prototype.destroy=f.destroy,_.prototype._undestroy=f.undestroy,_.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),u=Symbol("lastReject"),l=Symbol("error"),c=Symbol("ended"),f=Symbol("lastPromise"),h=Symbol("handlePromise"),p=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[p].read();null!==r&&(t[f]=null,t[a]=null,t[u]=null,e(d(r,!1)))}}function y(t){o.nextTick(g,t)}var m=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[p]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(d(void 0,!0));if(this[p].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[l]?r(t[l]):e(d(void 0,!0))})});var r,n=this[f];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[c]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var i=this[p].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[h])}return this[f]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[p].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),m);t.exports=function(t){var e,r=Object.create(b,(i(e={},p,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,u,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,h,{value:function(t,e){var n=r[p].read();n?(r[f]=null,r[a]=null,r[u]=null,t(d(n,!1))):(r[a]=t,r[u]=e)},writable:!0}),e));return r[f]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[u];return null!==e&&(r[f]=null,r[a]=null,r[u]=null,e(t)),void(r[l]=t)}var n=r[a];null!==n&&(r[f]=null,r[a]=null,r[u]=null,n(d(void 0,!0))),r[c]=!0}),t.on("readable",y.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return u.alloc(0);for(var e=u.allocUnsafe(t>>>0),r=this.head,n=0;r;)f(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=u.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:c,value:function(t,e){return l(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return a||u?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){c||(c=t),t&&h.forEach(u),i||(h.forEach(u),f(c))})});return e.reduce(l)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function f(t){return(t||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new m(unescape(t.pathname),{});else if("string"===o)for(e in n=new m(t,{}),p)delete n[e];else if("object"===o){for(e in t)e in p||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function y(t,e){t=(t=f(t)).replace(s,""),e=e||{};var r,n=l.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],u=0;return i?a?(r=n[2]+n[3]+n[4],u=n[2].length+n[3].length):(r=n[2]+n[4],u=n[2].length):a?(r=n[3]+n[4],u=n[3].length):r=n[4],"file:"===o?u>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):u>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:r}}function m(t,e,r){if(t=(t=f(t)).replace(s,""),!(this instanceof m))return new m(t,e,r);var i,a,u,l,p,b,v=h.slice(),w=typeof e,E=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=y(t||"",e=d(e))).protocol&&!a.slashes,E.slashes=a.slashes||i&&e.slashes,E.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(E.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),c=["%","/","?",";","#"].concat(l),f=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?k+="x":k+=P[C];if(!k.match(h)){var M=N.slice(0,A),L=N.slice(A+1),D=P.match(p);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[E])for(A=0,R=l.length;A0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var O=x.slice(-1)[0],_=(r.host||t.host||x.length>1)&&("."===O||".."===O)||""===O,A=0,T=x.length;T>=0;T--)"."===(O=x[T])?x.splice(T,1):".."===O?(x.splice(T,1),A++):A&&(x.splice(T,1),A--);if(!w&&!E)for(;A--;A)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),_&&"/"!==x.join("/").substr(-1)&&x.push("");var j,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return S&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(j=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=j.shift(),r.hostname=j.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var u="undefined"!=typeof BigInt,l="undefined"!=typeof Symbol,c=a(Object.prototype.toString),f=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),p=a(Boolean.prototype.valueOf);if(u)var d=a(BigInt.prototype.valueOf);if(l)var g=a(Symbol.prototype.valueOf);function y(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function m(t){return"[object Map]"===c(t)}function b(t){return"[object Set]"===c(t)}function v(t){return"[object WeakMap]"===c(t)}function w(t){return"[object WeakSet]"===c(t)}function E(t){return"[object ArrayBuffer]"===c(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(E.working?E(t):t instanceof ArrayBuffer)}function S(t){return"[object DataView]"===c(t)}function O(t){return"undefined"!=typeof DataView&&(S.working?S(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||O(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},m.working="undefined"!=typeof Map&&m(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(m.working?m(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},E.working="undefined"!=typeof ArrayBuffer&&E(new ArrayBuffer),e.isArrayBuffer=x,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=O;var _="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function A(t){return"[object SharedArrayBuffer]"===c(t)}function T(t){return void 0!==_&&(void 0===A.working&&(A.working=A(new _)),A.working?A(t):t instanceof _)}function j(t){return y(t,f)}function N(t){return y(t,h)}function R(t){return y(t,p)}function P(t){return u&&y(t,d)}function k(t){return l&&y(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=j,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=P,e.isSymbolObject=k,e.isBoxedPrimitive=function(t){return j(t)||N(t)||R(t)||P(t)||k(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=c),h(n,t,n.depth)}function c(t,e){var r=l.styles[e];return r?"["+l.colors[r][0]+"m"+t+"["+l.colors[r][1]+"m":t}function f(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&_(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=h(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),O(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(r);if(0===s.length){if(_(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(S(r))return t.stylize(Date.prototype.toString.call(r),"date");if(O(r))return p(r)}var l,c="",f=!1,x=["{","}"];return g(r)&&(f=!0,x=["[","]"]),_(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),E(r)&&(c=" "+RegExp.prototype.toString.call(r)),S(r)&&(c=" "+Date.prototype.toUTCString.call(r)),O(r)&&(c=" "+p(r)),0!==s.length||f&&0!=r.length?n<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),l=f?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(l,c,x)):x[0]+c+x[1]}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=m(r)?h(t,u.value,null):h(t,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return"  "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return"   "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function m(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function E(t){return x(t)&&"[object RegExp]"===A(t)}function x(t){return"object"==typeof t&&null!==t}function S(t){return x(t)&&"[object Date]"===A(t)}function O(t){return x(t)&&("[object Error]"===A(t)||t instanceof Error)}function _(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=y,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=E,e.types.isRegExp=E,e.isObject=x,e.isDate=S,e.types.isDate=S,e.isError=O,e.types.isNativeError=O,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var j=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),j[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function P(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;io});const n="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,o=n.fetch.bind(n);n.Headers,n.Request,n.Response},72984(t,e,r){"use strict";function n(t){return"function"==typeof t?t:Array.isArray(t)?e=>{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},69031(t,e,r){"use strict";r.d(e,{Eo:()=>s,Xe:()=>i,yQ:()=>a});const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new RegExp("^["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function i(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;ti});var n=r(69031);const o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t,e){e=Object.assign({},o,e);const r=[];let n=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let o=0;o"!==t[o]&&" "!==t[o]&&"\t"!==t[o]&&"\n"!==t[o]&&"\r"!==t[o];o++)m+=t[o];if(m=m.trim(),"/"===m[m.length-1]&&(m=m.substring(0,m.length-1),o--),!g(m)){let e;return e=0===m.trim().length?"Invalid space after '<'.":"Tag '"+m+"' is an invalid name.",p("InvalidTag",e,y(t,o))}const b=l(t,o);if(!1===b)return p("InvalidAttr","Attributes for '"+m+"' have open quote.",y(t,o));let v=b.value;if(o=b.index,"/"===v[v.length-1]){const r=o-v.length;v=v.substring(0,v.length-1);const i=f(v,e);if(!0!==i)return p(i.err.code,i.err.msg,y(t,r+i.err.line));n=!0}else if(d){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+m+"' doesn't have proper closing.",y(t,o));if(v.trim().length>0)return p("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",y(t,c));if(0===r.length)return p("InvalidTag","Closing tag '"+m+"' has not been opened.",y(t,c));{const e=r.pop();if(m!==e.tagName){let r=y(t,e.tagStartPos);return p("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+m+"'.",y(t,c))}0==r.length&&(i=!0)}}else{const s=f(v,e);if(!0!==s)return p(s.err.code,s.err.msg,y(t,o-v.length+s.err.line));if(!0===i)return p("InvalidXml","Multiple possible root nodes found.",y(t,o));-1!==e.unpairedTags.indexOf(m)||r.push({tagName:m,tagStartPos:c}),n=!0}for(o++;o0)||p("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)}function s(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function a(t,e){const r=e;for(;e5&&"xml"===n)return p("InvalidXml","XML declaration allowed only at the start of the document.",y(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function u(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function l(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const c=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function f(t,e){const r=(0,n.Xe)(t,c),o={};for(let t=0;ts});var n=r(85697),o=r(72984);const i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:"  ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(t){this.options=Object.assign({},i,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=(0,o.A)(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=l),this.processTextOrObjNode=a,this.options.format?(this.indentate=u,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function a(t,e,r,n){const o=this.j2x(t,r+1,n.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,r):this.buildObjectNode(o.val,e,o.attrStr,r)}function u(t){return this.options.indentBy.repeat(t)}function l(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}s.prototype.build=function(t){return this.options.preserveOrder?(0,n.A)(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(t,e,r){let n="",o="";const i=r.join(".");for(let s in t)if(Object.prototype.hasOwnProperty.call(t,s))if(void 0===t[s])this.isAttribute(s)&&(o+="");else if(null===t[s])this.isAttribute(s)||s===this.options.cdataPropName?o+="":"?"===s[0]?o+=this.indentate(e)+"<"+s+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+s+"/"+this.tagEndChar;else if(t[s]instanceof Date)o+=this.buildTextValNode(t[s],s,"",e);else if("object"!=typeof t[s]){const r=this.isAttribute(s);if(r&&!this.ignoreAttributesFn(r,i))n+=this.buildAttrPairStr(r,""+t[s]);else if(!r)if(s===this.options.textNodeName){let e=this.options.tagValueProcessor(s,""+t[s]);o+=this.replaceEntitiesValue(e)}else o+=this.buildTextValNode(t[s],s,"",e)}else if(Array.isArray(t[s])){const n=t[s].length;let i="",a="";for(let u=0;u"+t+o}},s.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e0&&(r="\n"),o(t,e,"",r)}function o(t,e,r,n){let l="",c=!1;for(let f=0;f`,c=!1;continue}if(p===e.commentPropName){l+=n+`\x3c!--${h[p][0][e.textNodeName]}--\x3e`,c=!0;continue}if("?"===p[0]){const t=s(h[":@"],e),r="?xml"===p?"":n;let o=h[p][0][e.textNodeName];o=0!==o.length?" "+o:"",l+=r+`<${p}${o}${t}?>`,c=!0;continue}let g=n;""!==g&&(g+=e.indentBy);const y=n+`<${p}${s(h[":@"],e)}`,m=o(h[p],e,d,g);-1!==e.unpairedTags.indexOf(p)?e.suppressUnpairedNode?l+=y+">":l+=y+"/>":m&&0!==m.length||!e.suppressEmptyNode?m&&m.endsWith(">")?l+=y+`>${m}${n}`:(l+=y+">",m&&""!==n&&(m.includes("/>")||m.includes("`):l+=y+"/>",c=!0}return l}function i(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;rn})},25003(t,e,r){"use strict";r.d(e,{A:()=>o});var n=r(69031);class o{constructor(t){this.suppressValidationErr=!t}readDocType(t,e){const r={};if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let n=1,o=!1,i=!1,a="";for(;e"===t[e]){if(i?"-"===t[e-1]&&"-"===t[e-2]&&(i=!1,n--):n--,0===n)break}else"["===t[e]?o=!0:a+=t[e];else{if(o&&s(t,"!ENTITY",e)){let n,o;e+=7,[n,o,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===o.indexOf("&")&&(r[n]={regx:RegExp(`&${n};`,"g"),val:o})}else if(o&&s(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(o&&s(t,"!ATTLIST",e))e+=8;else if(o&&s(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!s(t,"!--",e))throw new Error("Invalid DOCTYPE");i=!0}n++,a=""}if(0!==n)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=i(t,e);let r="";for(;e{for(;eo});const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1},o=function(t){return Object.assign({},n,t)}},79781(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(69031),o=r(13127),i=r(25003),s=r(60524),a=r(72984);class u{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>S(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>S(e,16,"&#x")}},this.addExternalEntities=l,this.parseXml=d,this.parseTextData=c,this.resolveNameSpace=f,this.buildAttributesMap=p,this.isItStopNode=b,this.replaceEntitiesValue=y,this.readStopNodeData=E,this.saveTextToParentTag=m,this.addChild=g,this.ignoreAttributesFn=(0,a.A)(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t));const n=this.options.tagValueProcessor(e,t,r,o,i);return null==n?t:typeof n!=typeof t||n!==t?n:this.options.trimValues||t.trim()===t?x(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function f(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const h=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function p(t,e){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const r=(0,n.Xe)(t,h),o=r.length,i={};for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),r&&(n=this.saveTextToParentTag(n,r,s));const a=s.substring(s.lastIndexOf(".")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);let u=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(u=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=s.lastIndexOf("."),s=s.substring(0,u),r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=w(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,s),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new o.A(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,s)),this.addChild(r,t,s,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=v(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,s),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=a.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=v(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,s);let a=this.parseTextData(o,r.tagname,s,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,a),i=e+2}else{let a=w(t,i,this.options.removeNSPrefix),u=a.tagName;const l=a.rawTagName;let c=a.tagExp,f=a.attrExpPresent,h=a.closeIndex;if(this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,s,!1));const p=r;p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(r=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),u!==e.tagname&&(s+=s?"."+u:u);const d=i;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,s,u)){let e="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),i=a.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))i=a.closeIndex;else{const r=this.readStopNodeData(t,l,h+1);if(!r)throw new Error(`Unexpected end of ${l}`);i=r.i,e=r.tagContent}const n=new o.A(u);u!==c&&f&&(n[":@"]=this.buildAttributesMap(c,s)),e&&(e=this.parseTextData(e,u,s,!0,f,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),n.add(this.options.textNodeName,e),this.addChild(r,n,s,d)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){if("/"===u[u.length-1]?(u=u.substr(0,u.length-1),s=s.substr(0,s.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName){const t=this.options.transformTagName(u);c===u&&(c=t),u=t}const t=new o.A(u);u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),s=s.substr(0,s.lastIndexOf("."))}else{const t=new o.A(u);this.tagsNodeStack.push(r),u!==c&&f&&(t[":@"]=this.buildAttributesMap(c,s)),this.addChild(r,t,s,d),r=t}n="",i=h}}else n+=t[i];return e.child};function g(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.updateTag(e.tagname,r,e[":@"]);!1===o||("string"==typeof o?(e.tagname=o,t.addChild(e,n)):t.addChild(e,n))}const y=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const r=this.docTypeEntities[e];t=t.replace(r.regx,r.val)}for(let e in this.lastEntities){const r=this.lastEntities[e];t=t.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const r=this.htmlEntities[e];t=t.replace(r.regex,r.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function m(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function b(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function v(t,e,r,n){const o=t.indexOf(e,r);if(-1===o)throw new Error(n);return o+e.length-1}function w(t,e,r,n=">"){const o=function(t,e,r=">"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=v(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=v(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=v(t,"]]>",r,"StopNode is not closed.")-2;else{const n=w(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function x(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&(0,s.A)(t,r)}return(0,n.yQ)(t)?t:""}function S(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}},1912(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(60341),o=r(79781),i=r(35382),s=r(86301),a=r(13127);class u{constructor(t){this.externalEntities={},this.options=(0,n.D)(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const r=(0,s.t)(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new o.A(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:(0,i.A)(n,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return a.A.getMetaDataSymbol()}}},35382(t,e,r){"use strict";r.d(e,{A:()=>o});const n=r(13127).A.getMetaDataSymbol();function o(t,e){return i(t,e)}function i(t,e,r){let o;const l={};for(let c=0;c0&&(l[e.textNodeName]=o):void 0!==o&&(l[e.textNodeName]=o),l}function s(t){const e=Object.keys(t);for(let t=0;to}),n="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class o{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][n]={startIndex:e})}static getMetaDataSymbol(){return n}}},21657(t,e,r){"use strict";function n(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}r.d(e,{K:()=>n})},19621(t,e,r){"use strict";r.d(e,{T:()=>a});var n=r(21657);const o="@@HOTPATCHER",i=()=>{};function s(t){return{original:t,methods:[t],final:!1}}class a{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=o}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==o)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||i)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return(0,n.K)(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=s(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(s(e),{original:r})}else this.configuration.registry[t]=s(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}},93028(t,e,r){"use strict";function n(t){if(!o(t))throw new Error("Parameter was not an error")}function o(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}r.d(e,{b:()=>o,t:()=>n})},11163(t,e,r){"use strict";r.d(e,{z:()=>n});function n(){return"Layerr"}},42294(t,e,r){"use strict";r.d(e,{GU:()=>n.G});var n=r(17601)},17601(t,e,r){"use strict";r.d(e,{G:()=>s});var n=r(93028),o=r(11163),i=r(78049);class s extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:s}=(0,i.W)(r);let a=s;if(n.cause&&(a=`${a}: ${n.cause.message}`),super(a),this.message=a,n.name&&"string"==typeof n.name?this.name=n.name:this.name=(0,o.z)(),n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,n.t)(t),t._cause&&(0,n.b)(t._cause)?t._cause:null}static fullStack(t){(0,n.t)(t);const e=s.cause(t);return e?`${t.stack}\ncaused by: ${s.fullStack(e)}`:t.stack??""}static info(t){(0,n.t)(t);const e={},r=s.cause(t);return r&&Object.assign(e,s.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},78049(t,e,r){"use strict";r.d(e,{W:()=>o});var n=r(93028);function o(t){let e,r="";if(0===t.length)e={};else if((0,n.b)(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}},60524(t,e,r){"use strict";r.d(e,{A:()=>s});const n=/^[-+]?0x[a-fA-F0-9]+$/,o=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function s(t,e={}){if(e=Object.assign({},i,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&n.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(a);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const n=o.exec(r);if(n){const o=n[1]||"",i=n[2];let a=(s=n[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substring(0,s.length-1)),s):s;const u=o?"."===t[i.length+1]:"."===t[i.length];if(!e.leadingZeros&&(i.length>1||1===i.length&&!u))return t;{const n=Number(r),s=String(n);if(0===n)return n;if(-1!==s.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===s||s===a||s===`${o}${a}`?n:t;let u=i?a:r;return i?u===s||o+u===s?n:t:u===s||u===o+s?n:t}}return t}var s}const a=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/},406(t,e,r){"use strict";function n(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}r.d(e,{A:()=>n})},19396(t,e,r){"use strict";r.d(e,{V:()=>o});var n=r(57221);function o(t,e){return`Basic ${(0,n.nk)(`${t}:${e}`)}`}},90036(t,e,r){"use strict";r.d(e,{C8:()=>i,Wb:()=>a,XX:()=>s,oD:()=>u});var n=r(83503),o=r(35658);function i(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}function s(t,e){const r=t.url.replace("//",""),i=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),s=t.method?t.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),c=n(`${s}:${i}`),f=n(a?`${l}:${e.nonce}:${u}:${e.cnonce}:${a}:${c}`:`${l}:${e.nonce}:${c}`),h={username:e.username,realm:e.realm,nonce:e.nonce,uri:i,qop:a,response:f,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in h)h[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${h[t]}`):p.push(`${t}="${h[t]}"`));return`Digest ${p.join(", ")}`}function a(t,e){if(!u(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function u(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},36942(t,e,r){"use strict";r.d(e,{e:()=>u});var n=r(42294),o=r(90036),i=r(19396),s=r(89793),a=r(38374);function u(t,e,r,u,l){switch(t.authType){case a.hT.Auto:e&&r&&(t.headers.Authorization=(0,i.V)(e,r));break;case a.hT.Digest:t.digest=(0,o.C8)(e,r,l);break;case a.hT.None:break;case a.hT.Password:t.headers.Authorization=(0,i.V)(e,r);break;case a.hT.Token:t.headers.Authorization=(0,s.O)(u);break;default:throw new n.GU({info:{code:a.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},89793(t,e,r){"use strict";function n(t){return`${t.token_type} ${t.access_token}`}r.d(e,{O:()=>n})},47397(t,e,r){"use strict";r.d(e,{m:()=>i});const n="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function i(t){return n&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},53850(t,e,r){"use strict";function n(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}r.d(e,{P:()=>n})},22921(t,e,r){"use strict";function n(){return"string"==typeof TARGET&&"react-native"===TARGET}function o(){return"string"==typeof TARGET&&"web"===TARGET}r.d(e,{H:()=>o,l:()=>n})},84819(t,e,r){"use strict";r.d(e,{G:()=>i});var n=r(19621);let o=null;function i(){return o||(o=new n.T),o}},84997(t,e,r){"use strict";r.d(e,{U:()=>O});var n=r(85394),o=r(36942),i=r(50335),s=r(28161),a=r(68476),u=r(76374),l=r(77101),c=r(75892),f=r(74419),h=r(17658),p=r(39615),d=r(86772),g=r(84830),y=r(80156),m=r(77087),b=r(30047),v=r(81838),w=r(10524),E=r(90176),x=r(38374);const S="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function O(t,e={}){const{authType:r=null,remoteBasePath:O,contactHref:_=S,ha1:A,headers:T={},httpAgent:j,httpsAgent:N,password:R,token:P,username:k,withCredentials:C}=e;let I=r;I||(I=k||R?x.hT.Password:x.hT.None);const M={authType:I,remoteBasePath:O,contactHref:_,ha1:A,headers:Object.assign({},T),httpAgent:j,httpsAgent:N,password:R,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[E.jp]},remotePath:(0,n.wB)(t),remoteURL:t,token:P,username:k,withCredentials:C};return(0,o.e)(M,k,R,P,A),{copyFile:(t,e,r)=>(0,i.m)(M,t,e,r),createDirectory:(t,e)=>(0,s.c)(M,t,e),createReadStream:(t,e)=>(0,a.V)(M,t,e),createWriteStream:(t,e,r)=>(0,a.o)(M,t,e,r),customRequest:(t,e)=>(0,u.J)(M,t,e),deleteFile:(t,e)=>(0,l.W)(M,t,e),exists:(t,e)=>(0,c.t)(M,t,e),getDirectoryContents:(t,e)=>(0,f.A)(M,t,e),getFileContents:(t,e)=>(0,h.F)(M,t,e),getFileDownloadLink:t=>(0,h.b)(M,t),getFileUploadLink:t=>(0,b.w)(M,t),getHeaders:()=>Object.assign({},M.headers),getQuota:t=>(0,d.T)(M,t),lock:(t,e)=>(0,p.s)(M,t,e),moveFile:(t,e,r)=>(0,m.m)(M,t,e,r),putFileContents:(t,e,r)=>(0,b.g)(M,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>(0,v.V)(M,t,e,r,n,o),getDAVCompliance:t=>(0,w.p)(M,t),search:(t,e)=>(0,y.T)(M,t,e),setHeaders:t=>{M.headers=Object.assign({},t)},stat:(t,e)=>(0,g.z)(M,t,e),unlock:(t,e,r)=>(0,p.T)(M,t,e,r),registerAttributeParser:t=>{M.parsing.attributeParsers.push(t)},registerTagParser:t=>{M.parsing.tagParsers.push(t)}}}},82415(t,e,r){"use strict";r.d(e,{UU:()=>n.U,h4:()=>o.h4});var n=r(84997),o=(r(38374),r(90176));r(71922),r(5e3)},50335(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T",Depth:a.shallow?"0":"infinity"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},28161(t,e,r){"use strict";r.d(e,{c:()=>u});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3),a=r(84830);async function u(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=(0,o.xi)((0,o.qb)(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let i=!1;for(const o of n)if(i)await u(t,o,{...r,recursive:!1});else try{if("directory"!==(await(0,a.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;i=!0,await u(t,o,{...r,recursive:!1})}}(t,e,r);const l=(0,i.H)({url:(0,n.oq)(t.remoteURL,(f=(0,o.O0)(e),f.endsWith("/")?f:f+"/")),method:"MKCOL"},t,r),c=await(0,i.E)(l,t);var f;(0,s.HT)(t,c)}},68476(t,e,r){"use strict";r.d(e,{V:()=>l,o:()=>c});var n=r(88310),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);const u=()=>{};function l(t,e,r={}){const u=new(0,n.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const u=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:n},t,r),l=await(0,s.E)(u,t);if((0,a.HT)(t,l),n.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return r.callback&&setTimeout(()=>{r.callback(l)},0),l.body}(t,e,r).then(t=>{t.pipe(u)}).catch(t=>{u.emit("error",t)}),u}function c(t,e,r={},l=u){const c=new(0,n.PassThrough),f={};!1===r.overwrite&&(f["If-None-Match"]="*");const h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:f,data:c,maxRedirects:0},t,r);return(0,s.E)(h,t).then(e=>(0,a.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{c.emit("error",t)}),c}},76374(t,e,r){"use strict";r.d(e,{J:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r){r.url||(r.url=(0,n.oq)(t.remoteURL,(0,o.O0)(e)));const a=(0,i.H)(r,t,{}),u=await(0,i.E)(a,t);return(0,s.HT)(t,u),u}},77101(t,e,r){"use strict";r.d(e,{W:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,r),u=await(0,i.E)(a,t);(0,s.HT)(t,u)}},74419(t,e,r){"use strict";r.d(e,{A:()=>l});var n=r(12692),o=r(85394),i=r(36236),s=r(90176),a=r(89062),u=r(5e3);async function l(t,e,r={}){const l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),c=await(0,a.E)(l,t);(0,u.HT)(t,c);const f=await c.text();if(!f)throw new Error("Failed parsing directory contents: Empty response");const h=await(0,s.h4)(f,t.parsing),p=(0,i.dU)(e);let d=function(t,e,r,a=!1,u=!1){const l=n.join(e,"/"),{multistatus:{response:c}}=t,f=c.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:r}}=t,u="/"===l?decodeURIComponent((0,i.qb)(e)):(0,i.qb)(n.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,s.ch)(r,u,a)});return u?f:f.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(h,(0,i.dU)(t.remoteBasePath||t.remotePath),p,r.details,r.includeSelf);return r.glob&&(d=(0,u.eh)(d,r.glob)),(0,u.hq)(c,d,r.details)}},75892(t,e,r){"use strict";r.d(e,{t:()=>o});var n=r(84830);async function o(t,e,r={}){try{return await(0,n.z)(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}},10524(t,e,r){"use strict";r.d(e,{p:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,r),u=await(0,i.E)(a,t);try{(0,s.HT)(t,u)}catch(t){throw t}return{compliance:(u.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:u.headers.get("Server")??""}}},17658(t,e,r){"use strict";r.d(e,{F:()=>p,b:()=>d});var n=r(42294),o=r(85394),i=r(36236),s=r(57221),a=r(22921),u=r(89062),l=r(5e3),c=r(38374),f=r(62045).hp;const h=t=>t;async function p(t,e,r={}){const{format:s="binary"}=r;if("binary"!==s&&"text"!==s)throw new n.GU({info:{code:c.O4.InvalidOutputFormat}},`Invalid output format: ${s}`);return"text"===s?async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[h]},t,r),s=await(0,u.E)(n,t);(0,l.HT)(t,s);const a=await s.text();return(0,l.hq)(s,a,r.details)}(t,e,r):async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET"},t,r),s=await(0,u.E)(n,t);let c;return(0,l.HT)(t,s),c=(0,a.H)()||(0,a.l)()?await s.arrayBuffer():f.from(await s.arrayBuffer()),(0,l.hq)(s,c,r.details)}(t,e,r)}function d(t,e){let r=(0,o.oq)(t.remoteURL,(0,i.O0)(e));const a=/^https:/i.test(r)?"https":"http";switch(t.authType){case c.hT.None:break;case c.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,s.Ey)(e);r=r.replace(/^https?:\/\//,`${a}://${n}@`);break}default:throw new n.GU({info:{code:c.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},86772(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(89062),o=r(5e3),i=r(90176),s=r(85394),a=r(7815);async function u(t,e={}){const r=e.path||"/",u=(0,n.H)({url:(0,s.oq)(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,n.E)(u,t);(0,o.HT)(t,l);const c=await l.text(),f=await(0,i.h4)(c,t.parsing),h=(0,a.K)(f);return(0,o.hq)(l,h,e.details)}},39615(t,e,r){"use strict";r.d(e,{T:()=>f,s:()=>c});var n=r(26602),o=r(85394),i=r(36236),s=r(27562),a=r(89062),u=r(5e3);const l="Infinite, Second-4100000000";async function c(t,e,r={}){const{refreshToken:c,timeout:f=l}=r,h={Accept:"text/plain,application/xml",Timeout:f};c&&(h.If=c);const p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"LOCK",headers:h,data:(0,s.A)(t.contactHref)},t,r),d=await(0,a.E)(p,t);(0,u.HT)(t,d);const g=await d.text(),y=(0,s.o)(g),m=n.get(y,"prop.lockdiscovery.activelock.locktoken.href"),b=n.get(y,"prop.lockdiscovery.activelock.timeout");if(!m)throw(0,u.YQ)(d,"No lock token received: ");return{token:m,serverTimeout:b}}async function f(t,e,r,n={}){const s=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),l=await(0,a.E)(s,t);if((0,u.HT)(t,l),204!==l.status&&200!==l.status)throw(0,u.YQ)(l)}},77087(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},81838(t,e,r){"use strict";r.d(e,{V:()=>c});var n=r(42294),o=r(85394),i=r(36236),s=r(89062),a=r(5e3),u=r(10524),l=r(38374);async function c(t,e,r,c,f,h={}){const p=await(0,u.p)(t,e,h);if(p.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(u-r+1),"X-Update-Range":`bytes=${r}-${u}`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PATCH",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);if(p.server.includes("Apache")&&p.compliance.includes(""))return await async function(t,e,r,u,c,f={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const h={"Content-Type":"application/octet-stream","Content-Length":""+(u-r+1),"Content-Range":`bytes ${r}-${u}/*`},p=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:h,data:c},t,f),d=await(0,s.E)(p,t);(0,a.HT)(t,d)}(t,e,r,c,f,h);throw new n.GU({info:{code:l.O4.NotSupported}},"Not supported")}},30047(t,e,r){"use strict";r.d(e,{g:()=>p,w:()=>d});var n=r(42294),o=r(88310),i=r(57221),s=r(85394),a=r(36236),u=r(71922),l=r(22921),c=r(89062),f=r(5e3),h=r(38374);async function p(t,e,r,n={}){const{contentLength:i=!0,overwrite:h=!0}=n,p={"Content-Type":"application/octet-stream"};!(0,l.H)()&&!(0,l.l)()&&void 0!==o&&void 0!==o?.Readable&&r instanceof o.Readable||!1===i||(p["Content-Length"]="number"==typeof i?`${i}`:`${(0,u.J)(r)}`),h||(p["If-None-Match"]="*");const d=(0,c.H)({url:(0,s.oq)(t.remoteURL,(0,a.O0)(e)),method:"PUT",headers:p,data:r},t,n),g=await(0,c.E)(d,t);try{(0,f.HT)(t,g)}catch(t){const e=t;if(412!==e.status||h)throw e;return!1}return!0}function d(t,e){let r=`${(0,s.oq)(t.remoteURL,(0,a.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(r)?"https":"http";switch(t.authType){case h.hT.None:break;case h.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,i.Ey)(e);r=r.replace(/^https?:\/\//,`${o}://${n}@`);break}default:throw new n.GU({info:{code:h.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},80156(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.KA)(h,e,u);return(0,a.hq)(c,p,u)}},84830(t,e,r){"use strict";r.d(e,{z:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const f=await c.text(),h=await(0,n.h4)(f,t.parsing),p=(0,n.ky)(h,e,u);return(0,a.hq)(c,p,u)}},89062(t,e,r){"use strict";r.d(e,{E:()=>g,H:()=>d});var n=r(11568),o=r(11083),i=r(97192),s=r(84819),a=r(22921),u=r(90036),l=r(79275),c=r(79605),f=r(39299),h=r(38374),p=r(36942);function d(t,e,r){const n=(0,l.q)(t);return n.headers=(0,c.l)(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function g(t,e){return e.authType===h.hT.Auto?async function(t,e){const r=await m(t);return r.ok?(e.authType=h.hT.Password,r):401==r.status&&(0,u.oD)(r)?(e.authType=h.hT.Digest,(0,p.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,y(t)):r}(t,e):t._digest?y(t):m(t)}async function y(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}}));const r=await m(t);if(401==r.status){if(e.hasDigestAuth=(0,u.Wb)(r,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}});const r=await m(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function m(t){const e=(0,s.G)();return e.patchInline("request",t=>e.patchInline("fetch",i.hd,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=(0,c.l)(e,t.headers)),void 0!==t.data){const[n,o]=(0,f.P)(t.data);r.body=n,e=(0,c.l)(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),(0,a.H)()||(0,a.l)()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new n.Agent:t.httpsAgent||new o.Agent),r.headers=e,r}(t)),t)}},5e3(t,e,r){"use strict";r.d(e,{HT:()=>s,YQ:()=>i,eh:()=>a,hq:()=>u});var n=r(44916),o=r(79605);function i(t,e=""){const r=new Error(`${e}Invalid response: ${t.status} ${t.statusText}`);return r.status=t.status,r.response=t,r}function s(t,e){const{status:r}=e;if(401===r&&t.digest)return e;if(r>=400)throw i(e);return e}function a(t,e){return t.filter(t=>(0,n.xF)(t.filename,e,{matchBase:!0}))}function u(t,e,r=!1){return r?{data:e,headers:t.headers?(0,o.N)(t.headers):{},status:t.status,statusText:t.statusText}:e}},39299(t,e,r){"use strict";r.d(e,{P:()=>a});var n=r(88310),o=r(47397),i=r(53850),s=r(22921);function a(t){if(!(0,s.H)()&&!(0,s.l)()&&t instanceof n.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,i.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},35658(t,e,r){"use strict";r.d(e,{M:()=>o});var n=r(83503);function o(t,e,r,o,i,s,a){const u=a||n(`${e}:${r}:${o}`);return t&&"md5-sess"===t.toLowerCase()?n(`${u}:${i}:${s}`):u}},90176(t,e,r){"use strict";r.d(e,{KA:()=>p,ch:()=>f,h4:()=>c,i5:()=>d,jp:()=>u,ky:()=>h});var n,o=r(12692),i=r(1912),s=r(26602),a=r(36236);function u(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function l(t,e,r=n.Original){const o=s.get(t,e);return"array"===r&&!1===Array.isArray(o)?[o]:"object"===r&&Array.isArray(o)?o[0]:o}function c(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[u]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return s.set(r,"multistatus.response",l(r,"multistatus.response",n.Array)),s.set(r,"multistatus.response",s.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?s.set(e,"status",l(e,"status",n.Object)):(s.set(e,"propstat",l(e,"propstat",n.Object)),s.set(e,"propstat.prop",l(e,"propstat.prop",n.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new i.A({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function f(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:i="0",resourcetype:s=null,getcontenttype:a=null,getetag:u=null}=t,l=s&&"object"==typeof s&&void 0!==s.collection?"directory":"file",c={filename:e,basename:o.basename(e),lastmod:n,size:parseInt(i,10),type:l,etag:"string"==typeof u?u.replace(/"/g,""):null};return"file"===l&&(c.mime=a&&"string"==typeof a?a.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function h(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,u,l]=i.split(" ",3),c=parseInt(u,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return f(o,(0,a.qb)(e),r)}function p(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith((0,a.O0)(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(f(t.propstat.prop,e,r))}),n}function d(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}!function(t){t.Array="array",t.Object="object",t.Original="original"}(n||(n={}))},57221(t,e,r){"use strict";r.d(e,{Ey:()=>o,nk:()=>i});var n=r(85914);function o(t){return n.decode(t)}function i(t){return n.encode(t)}r(15723)},79605(t,e,r){"use strict";function n(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function o(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}r.d(e,{N:()=>n,l:()=>o})},79275(t,e,r){"use strict";function n(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function o(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?i(e,t):n(t)}return e}function i(t,e){const r=n(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?i(r[t],e[t]):n(e[t]):r[t]=e[t]:r[t]=e[t]}),r}r.d(e,{h:()=>o,q:()=>n})},36236(t,e,r){"use strict";r.d(e,{O0:()=>a,dU:()=>l,qb:()=>c,xi:()=>u});var n=r(42294),o=r(12692);const i="__PATH_SEPARATOR_POSIX__",s="__PATH_SEPARATOR_WINDOWS__";function a(t){try{const e=t.replace(/\//g,i).replace(/\\\\/g,s);return encodeURIComponent(e).split(s).join("\\\\").split(i).join("/")}catch(t){throw new n.GU(t,"Failed encoding path")}}function u(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=o.dirname(e)}while(e&&"/"!==e);return r}function l(t){return t.startsWith("/")?t:"/"+t}function c(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}},7815(t,e,r){"use strict";r.d(e,{K:()=>o});var n=r(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":o}}}=e;return void 0!==r&&void 0!==o?{used:parseInt(String(r),10),available:(0,n.i5)(o)}:null}catch(t){}return null}},71922(t,e,r){"use strict";r.d(e,{J:()=>u});var n=r(42294),o=r(67691),i=r(47397),s=r(53850),a=r(38374);function u(t){if((0,i.m)(t))return t.byteLength;if((0,s.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new n.GU({info:{code:a.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},85394(t,e,r){"use strict";r.d(e,{S8:()=>l,oq:()=>u,wB:()=>a});var n=r(61160),o=r(42294),i=r(406),s=r(36236);function a(t){let e=new n(t).pathname;return e.length<=0&&(e="/"),(0,s.qb)(e)}function u(...t){return(0,i.A)(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},27562(t,e,r){"use strict";r.d(e,{A:()=>i,o:()=>a});var n=r(1912),o=r(99111);function i(t){return new o.A({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=s(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}function a(t){return new n.A({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},38374(t,e,r){"use strict";var n,o;r.d(e,{O4:()=>o,hT:()=>n}),r(97192),function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(n||(n={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(o||(o={}))},27341(t,e,r){"use strict";new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint},26549(t,e,r){"use strict";var n,o,i,s;r(75780),r(92148),r(27341),function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(n||(n={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(i||(i={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(s||(s={}))},13197(t,e,r){"use strict";r(91573),r(40144)},40144(t,e,r){"use strict";new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])},75780(t,e,r){},92148(t,e,r){},91573(t,e,r){},15723(t,e,r){"use strict";var n,o;r(26549),r(13197),r(40144),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(n||(n={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(o||(o={}))},84300(t,e,r){"use strict";r.d(e,{f:()=>n});const n=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")}},17908(t,e,r){"use strict";r.d(e,{d:()=>g});var n=r(73733),o=r(24754);const i=new Set(["!","?","+","*","@"]),s=t=>i.has(t),a="(?!\\.)",u=new Set(["[","."]),l=new Set(["..","."]),c=new Set("().*{}+?[]^$\\!"),f=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),h="[^/]",p=h+"*?",d=h+"+?";class g{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#u;#l;#c=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?r:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#l?this.#l:this.type?this.#l=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#l=this.#n.map(t=>String(t)).join("")}#f(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?g.#p(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let i="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!l.has(this.#n[0]))){const r=u,o=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));i=o?"(?!(?:^|/)\\.\\.?(?:$|/))":s?a:""}let s="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(s="(?:$|\\/)"),[i+n+s,(0,o.x)(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let i=this.#d(e);if(this.isStart()&&this.isEnd()&&!i&&"!"!==this.type){const t=this.toString();return this.#n=[t],this.type=null,this.#e=void 0,[t,(0,o.x)(this.toString()),!1,!1]}let s=!r||t||e?"":this.#d(!0);s===i&&(s=""),s&&(i=`(?:${i})(?:${s})*?`);let c="";return c="!"===this.type&&this.#c?(this.isStart()&&!e?a:"")+d:n+i+("!"===this.type?"))"+(!this.isStart()||e||t?"":a)+p+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&s?")":"*"===this.type&&s?")?":`)${this.type}`),[c,(0,o.x)(i),this.#e=!!this.#e,this.#r]}#d(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#p(t,e,r=!1){let i=!1,s="",a=!1;for(let o=0;os});const n={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=t=>t.replace(/[[\]\\-]/g,"\\$&"),i=t=>t.join(""),s=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const s=[],a=[];let u=r+1,l=!1,c=!1,f=!1,h=!1,p=r,d="";t:for(;ud?s.push(o(d)+"-"+o(e)):e===d&&s.push(o(e)),d="",u++):t.startsWith("-]",u+1)?(s.push(o(e+"-")),u+=2):t.startsWith("-",u+1)?(d=e,u+=2):(s.push(o(e)),u++)}else f=!0,u++}else h=!0,u++}if(pn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&")},44916(t,e,r){"use strict";r.d(e,{xF:()=>l});var n=r(68928),o=r(84300),i=r(17908),s=r(25093),a=r(24754),u=r(65606);const l=(t,e,r={})=>((0,o.f)(e),!(!r.nocomment&&"#"===e.charAt(0))&&new L(e,r).match(t)),c=/^\*+([^+@!?\*\[\(]*)$/,f=t=>e=>!e.startsWith(".")&&e.endsWith(t),h=t=>e=>e.endsWith(t),p=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),d=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),g=/^\*+\.\*+$/,y=t=>!t.startsWith(".")&&t.includes("."),m=t=>"."!==t&&".."!==t&&t.includes("."),b=/^\.\*+$/,v=t=>"."!==t&&".."!==t&&t.startsWith("."),w=/^\*+$/,E=t=>0!==t.length&&!t.startsWith("."),x=t=>0!==t.length&&"."!==t&&".."!==t,S=/^\?+([^+@!?\*\[\(]*)?$/,O=([t,e=""])=>{const r=j([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},_=([t,e=""])=>{const r=N([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},A=([t,e=""])=>{const r=N([t]);return e?t=>r(t)&&t.endsWith(e):r},T=([t,e=""])=>{const r=j([t]);return e?t=>r(t)&&t.endsWith(e):r},j=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},N=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},R="object"==typeof u&&u?"object"==typeof u.env&&u.env&&u.env.__MINIMATCH_TESTING_PLATFORM__||u.platform:"posix",P="win32"===R?"\\":"/";l.sep=P;const k=Symbol("globstar **");l.GLOBSTAR=k,l.filter=(t,e={})=>r=>l(r,t,e);const C=(t,e={})=>Object.assign({},t,e);l.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return l;const e=l;return Object.assign((r,n,o={})=>e(r,n,C(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,C(t,r))}static defaults(r){return e.defaults(C(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,C(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,C(t,n))}},unescape:(r,n={})=>e.unescape(r,C(t,n)),escape:(r,n={})=>e.escape(r,C(t,n)),filter:(r,n={})=>e.filter(r,C(t,n)),defaults:r=>e.defaults(C(t,r)),makeRe:(r,n={})=>e.makeRe(r,C(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,C(t,n)),match:(r,n,o={})=>e.match(r,n,C(t,o)),sep:e.sep,GLOBSTAR:k})};const I=(t,e={})=>((0,o.f)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:n(t));l.braceExpand=I,l.makeRe=(t,e={})=>new L(t,e).makeRe(),l.match=(t,e,r={})=>{const n=new L(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const M=/[?*]|[+@!]\(.*?\)|\[|\]/;class L{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){(0,o.f)(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||R,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&M.test(t[2])||M.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const u=r.slice(0);u[n]="**",t.push(u),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;ni?e=e.slice(s):i>s&&(t=t.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var i=0,s=0,a=t.length,u=e.length;i>> no match, partial?",t,f,e,h),f!==a))}let o;if("string"==typeof l?(o=c===l,this.debug("string match",l,c,o)):(o=l.test(c),this.debug("pattern match",l,c,o)),!o)return!1}if(i===a&&s===u)return!0;if(i===a)return r;if(s===u)return i===a-1&&""===t[i];throw new Error("wtf?")}braceExpand(){return I(this.pattern,this.options)}parse(t){(0,o.f)(t);const e=this.options;if("**"===t)return k;if(""===t)return"";let r,n=null;(r=t.match(w))?n=e.dot?x:E:(r=t.match(c))?n=(e.nocase?e.dot?d:p:e.dot?h:f)(r[1]):(r=t.match(S))?n=(e.nocase?e.dot?_:O:e.dot?A:T)(r):(r=t.match(g))?n=e.dot?m:y:(r=t.match(b))&&(n=v);const s=i.d.fromGlob(t,this.options).toMMPattern();return n&&"object"==typeof s&&Reflect.defineProperty(s,"test",{value:n}),s}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const t=this.set;if(!t.length)return this.regexp=!1,this.regexp;const e=this.options,r=e.noglobstar?"[^/]*?":e.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",n=new Set(e.nocase?["i"]:[]);let o=t.map(t=>{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===k?k:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===k&&i!==k&&(void 0===i?void 0!==o&&o!==k?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==k&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=k))}),e.filter(t=>t!==k).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;tn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,t=[],i.O=(e,r,n,o)=>{if(!r){var s=1/0;for(c=0;c=o)&&Object.keys(i.O).every(t=>i.O[t](r[u]))?r.splice(u--,1):(a=!1,o0&&t[c-1][2]>o;c--)t[c]=t[c-1];t[c]=[r,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,r)=>(i.f[r](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"849c733a93f5261d3bde",3556:"57d00a12b4953e229068",4508:"04b1afd183e5ecdd9cae",4906:"75718b28aced26adc4af",5448:"71cfe268d6f1213c4735",5528:"1445efe9cbaf4e4cbcb8",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7039:"be7eefcb933f99fc5b1f",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8124:"75a422293ae2add34a10",8815:"9a5c507c75429c9c04e4"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},r="nextcloud-ui-legacy:",i.l=(t,n,o,s)=>{if(e[t])e[t].push(n);else{var a,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),r)return r(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),u&&document.head.appendChild(a)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var s=i.p+i.u(e),a=new Error;i.l(s,r=>{if(i.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,n[1](a)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[s,a,u]=r,l=0;if(s.some(e=>0!==t[e])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(u)var c=u(i)}for(e&&e(r);li(80609));s=i.O(s)})();
+//# sourceMappingURL=comments-comments-tab.js.map?v=9c9c5b45c5a59601b4d0
\ No newline at end of file
diff --git a/dist/comments-comments-tab.js.license b/dist/comments-comments-tab.js.license
index b8ad6caf94144..7da93158a39e9 100644
--- a/dist/comments-comments-tab.js.license
+++ b/dist/comments-comments-tab.js.license
@@ -262,7 +262,7 @@ This file is generated from multiple sources. Included packages:
 	- version: 1.4.1
 	- license: MIT
 - qs
-	- version: 6.14.1
+	- version: 6.14.2
 	- license: BSD-3-Clause
 - querystringify
 	- version: 2.2.0
diff --git a/dist/comments-comments-tab.js.map b/dist/comments-comments-tab.js.map
index 1c6ade46d115c..338198a9ede49 100644
--- a/dist/comments-comments-tab.js.map
+++ b/dist/comments-comments-tab.js.map
@@ -1 +1 @@
-{"version":3,"file":"comments-comments-tab.js?v=1bc08b4eeae97866baab","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/utils/activity.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n    window.OCA.Activity.registerSidebarAction({\n        mount: async (el, { node, reload }) => {\n            const pinia = createPinia();\n            if (!ActivityTabPluginView) {\n                const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n                // @ts-expect-error Types are broken for Vue2\n                ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n            }\n            ActivityTabPluginInstance = new ActivityTabPluginView({\n                el,\n                pinia,\n                propsData: {\n                    reloadCallback: reload,\n                    resourceId: node.fileid,\n                },\n            });\n            logger.info('Comments plugin mounted in Activity sidebar action', { node });\n        },\n        unmount: () => {\n            // destroy previous instance if available\n            if (ActivityTabPluginInstance) {\n                ActivityTabPluginInstance.$destroy();\n            }\n        },\n    });\n    window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }) => {\n        const { data: comments } = await getComments({ resourceType: 'files', resourceId: node.fileid }, {\n            limit,\n            offset: offset ?? 0,\n        });\n        logger.debug('Loaded comments', { node, comments });\n        const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n        // @ts-expect-error Types are broken for Vue2\n        const CommentsViewObject = Vue.extend(CommentView);\n        return comments.map((comment) => ({\n            _CommentsViewInstance: undefined,\n            timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n            mount(element, { reload }) {\n                this._CommentsViewInstance = new CommentsViewObject({\n                    el: element,\n                    propsData: {\n                        comment,\n                        resourceId: node.fileid,\n                        reloadCallback: reload,\n                    },\n                });\n            },\n            unmount() {\n                this._CommentsViewInstance?.$destroy();\n            },\n        }));\n    });\n    window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n    logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\nimport { isUsingActivityIntegration } from './utils/activity.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (isUsingActivityIntegration()) {\n    // Do not mount own tab but mount into activity\n    window.addEventListener('DOMContentLoaded', function () {\n        registerCommentsPlugins();\n    });\n}\nelse {\n    registerSidebarTab({\n        id: 'comments',\n        displayName: t('comments', 'Comments'),\n        iconSvgInline: MessageReplyText,\n        order: 50,\n        tagName,\n        async onInit() {\n            const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue');\n            Vue.use(PiniaVuePlugin);\n            Vue.mixin({ pinia: createPinia() });\n            const webComponent = wrap(Vue, FilesSidebarTab);\n            // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n            Object.defineProperty(webComponent.prototype, 'attachShadow', {\n                value() { return this; },\n            });\n            Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n                get() { return this; },\n            });\n            window.customElements.define(tagName, webComponent);\n        },\n    });\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the comments app is using the Activity app integration for the sidebar.\n */\nexport function isUsingActivityIntegration() {\n    return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined;\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(segment[1]);\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n    self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n    ? self\n    : typeof window !== \"undefined\"\n        ? window\n        : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexport function merge(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n}\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\n","import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n    constructor(processEntities){\n        this.suppressValidationErr = !processEntities;\n    }\n    \n    readDocType(xmlData, i){\n    \n        const entities = {};\n        if( xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E')\n        {    \n            i = i+9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for(;i') { //Read tag content\n                    if(comment){\n                        if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    }else{\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                    break;\n                    }\n                }else if( xmlData[i] === '['){\n                    hasBody = true;\n                }else{\n                    exp += xmlData[i];\n                }\n            }\n            if(angleBracketsCount !== 0){\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        }else{\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return {entities, i};\n    }\n    readEntityExp(xmlData, i) {    \n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n        \n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n    for(let j=0;j false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n    captureMetaData: false,\n};\n   \nexport const buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n\n    if(this.options.stopNodes && this.options.stopNodes.length > 0){\n      this.stopNodesExact = new Set();\n      this.stopNodesWildcard = new Set();\n      for(let i = 0; i < this.options.stopNodes.length; i++){\n        const stopNodeExp = this.options.stopNodes[i];\n        if(typeof stopNodeExp !== 'string') continue;\n        if(stopNodeExp.startsWith(\"*.\")){\n          this.stopNodesWildcard.add(stopNodeExp.substring(2));\n        }else{\n          this.stopNodesExact.add(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n          //do nothing\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n          }\n          this.addChild(currentNode, childNode, jPath, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          //console.log(tagExp, tagName)\n          const newTagName = this.options.transformTagName(tagName);\n          if(tagExp === tagName) {\n            tagExp = newTagName\n          }\n          tagName = newTagName;\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        const startIndex = i;\n        if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath\n            );\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath, startIndex);\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              const newTagName = this.options.transformTagName(tagName);\n              if(tagExp === tagName) {\n                tagExp = newTagName\n              }\n              tagName = newTagName;\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex){\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n    //do nothing\n  } else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  }else{\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = currentNode.child.length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName){\n  if(stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n  if(stopNodesExact && stopNodesExact.has(jPath)) return true;\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix){\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n      return String.fromCodePoint(codePoint);\n  } else {\n      return prefix +str + \";\";\n  }\n}","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData !== \"string\" && xmlData.toString){\n            xmlData = xmlData.toString();\n        }else if(typeof xmlData !== \"string\"){\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        \n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n      if (tagObj[METADATA_SYMBOL] !== undefined) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node, startIndex) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","export function sequence(...methods) {\n    if (methods.length === 0) {\n        throw new Error(\"Failed creating sequence: No functions provided\");\n    }\n    return function __executeSequence(...args) {\n        let result = args;\n        const _this = this;\n        while (methods.length > 0) {\n            const method = methods.shift();\n            result = [method.apply(_this, result)];\n        }\n        return result[0];\n    };\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n    return {\n        original: method,\n        methods: [method],\n        final: false\n    };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n    constructor() {\n        this._configuration = {\n            registry: {},\n            getEmptyAction: \"null\"\n        };\n        this.__type__ = HOT_PATCHER_TYPE;\n    }\n    /**\n     * Configuration object reference\n     * @readonly\n     */\n    get configuration() {\n        return this._configuration;\n    }\n    /**\n     * The action to take when a non-set method is requested\n     * Possible values: null/throw\n     */\n    get getEmptyAction() {\n        return this.configuration.getEmptyAction;\n    }\n    set getEmptyAction(newAction) {\n        this.configuration.getEmptyAction = newAction;\n    }\n    /**\n     * Control another hot-patcher instance\n     * Force the remote instance to use patched methods from calling instance\n     * @param target The target instance to control\n     * @param allowTargetOverrides Allow the target to override patched methods on\n     * the controller (default is false)\n     * @returns Returns self\n     * @throws {Error} Throws if the target is invalid\n     */\n    control(target, allowTargetOverrides = false) {\n        if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n            throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n        }\n        Object.keys(target.configuration.registry).forEach(foreignKey => {\n            if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n                if (allowTargetOverrides) {\n                    this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n                }\n            }\n            else {\n                this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n            }\n        });\n        target._configuration = this.configuration;\n        return this;\n    }\n    /**\n     * Execute a patched method\n     * @param key The method key\n     * @param args Arguments to pass to the method (optional)\n     * @see HotPatcher#get\n     * @returns The output of the called method\n     */\n    execute(key, ...args) {\n        const method = this.get(key) || NOOP;\n        return method(...args);\n    }\n    /**\n     * Get a method for a key\n     * @param key The method key\n     * @returns Returns the requested function or null if the function\n     * does not exist and the host is configured to return null (and not throw)\n     * @throws {Error} Throws if the configuration specifies to throw and the method\n     * does not exist\n     * @throws {Error} Throws if the `getEmptyAction` value is invalid\n     */\n    get(key) {\n        const item = this.configuration.registry[key];\n        if (!item) {\n            switch (this.getEmptyAction) {\n                case \"null\":\n                    return null;\n                case \"throw\":\n                    throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n                default:\n                    throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n            }\n        }\n        return sequence(...item.methods);\n    }\n    /**\n     * Check if a method has been patched\n     * @param key The function key\n     * @returns True if already patched\n     */\n    isPatched(key) {\n        return !!this.configuration.registry[key];\n    }\n    /**\n     * Patch a method name\n     * @param key The method key to patch\n     * @param method The function to set\n     * @param opts Patch options\n     * @returns Returns self\n     */\n    patch(key, method, opts = {}) {\n        const { chain = false } = opts;\n        if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n            throw new Error(`Failed patching '${key}': Method marked as being final`);\n        }\n        if (typeof method !== \"function\") {\n            throw new Error(`Failed patching '${key}': Provided method is not a function`);\n        }\n        if (chain) {\n            // Add new method to the chain\n            if (!this.configuration.registry[key]) {\n                // New key, create item\n                this.configuration.registry[key] = createNewItem(method);\n            }\n            else {\n                // Existing, push the method\n                this.configuration.registry[key].methods.push(method);\n            }\n        }\n        else {\n            // Replace the original\n            if (this.isPatched(key)) {\n                const { original } = this.configuration.registry[key];\n                this.configuration.registry[key] = Object.assign(createNewItem(method), {\n                    original\n                });\n            }\n            else {\n                this.configuration.registry[key] = createNewItem(method);\n            }\n        }\n        return this;\n    }\n    /**\n     * Patch a method inline, execute it and return the value\n     * Used for patching contents of functions. This method will not apply a patched\n     * function if it has already been patched, allowing for external overrides to\n     * function. It also means that the function is cached so that it is not\n     * instantiated every time the outer function is invoked.\n     * @param key The function key to use\n     * @param method The function to patch (once, only if not patched)\n     * @param args Arguments to pass to the function\n     * @returns The output of the patched function\n     * @example\n     *  function mySpecialFunction(a, b) {\n     *      return hotPatcher.patchInline(\"func\", (a, b) => {\n     *          return a + b;\n     *      }, a, b);\n     *  }\n     */\n    patchInline(key, method, ...args) {\n        if (!this.isPatched(key)) {\n            this.patch(key, method);\n        }\n        return this.execute(key, ...args);\n    }\n    /**\n     * Patch a method (or methods) in sequential-mode\n     * See `patch()` with the option `chain: true`\n     * @see patch\n     * @param key The key to patch\n     * @param methods The methods to patch\n     * @returns Returns self\n     */\n    plugin(key, ...methods) {\n        methods.forEach(method => {\n            this.patch(key, method, { chain: true });\n        });\n        return this;\n    }\n    /**\n     * Restore a patched method if it has been overridden\n     * @param key The method key\n     * @returns Returns self\n     */\n    restore(key) {\n        if (!this.isPatched(key)) {\n            throw new Error(`Failed restoring method: No method present for key: ${key}`);\n        }\n        else if (typeof this.configuration.registry[key].original !== \"function\") {\n            throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n        }\n        this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n        return this;\n    }\n    /**\n     * Set a method as being final\n     * This sets a method as having been finally overridden. Attempts at overriding\n     * again will fail with an error.\n     * @param key The key to make final\n     * @returns Returns self\n     */\n    setFinal(key) {\n        if (!this.configuration.registry.hasOwnProperty(key)) {\n            throw new Error(`Failed marking '${key}' as final: No method found for key`);\n        }\n        this.configuration.registry[key].final = true;\n        return this;\n    }\n}\n","export function assertError(err) {\n    if (!isError(err)) {\n        throw new Error(\"Parameter was not an error\");\n    }\n}\nexport function isError(err) {\n    return ((!!err &&\n        typeof err === \"object\" &&\n        objectToString(err) === \"[object Error]\") ||\n        err instanceof Error);\n}\nfunction objectToString(obj) {\n    return Object.prototype.toString.call(obj);\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n    return __name;\n}\nexport function setGlobalName(name = null) {\n    __name = name ?? NAME;\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n    constructor(errorOptionsOrMessage, messageText) {\n        const args = [...arguments];\n        const { options, shortMessage } = parseArguments(args);\n        let message = shortMessage;\n        if (options.cause) {\n            message = `${message}: ${options.cause.message}`;\n        }\n        super(message);\n        this.message = message;\n        if (options.name && typeof options.name === \"string\") {\n            this.name = options.name;\n        }\n        else {\n            this.name = getGlobalName();\n        }\n        if (options.cause) {\n            Object.defineProperty(this, \"_cause\", { value: options.cause });\n        }\n        Object.defineProperty(this, \"_info\", { value: {} });\n        if (options.info && typeof options.info === \"object\") {\n            Object.assign(this._info, options.info);\n        }\n        if (Error.captureStackTrace) {\n            const ctor = options.constructorOpt || this.constructor;\n            Error.captureStackTrace(this, ctor);\n        }\n    }\n    static cause(err) {\n        assertError(err);\n        if (!err._cause)\n            return null;\n        return isError(err._cause)\n            ? err._cause\n            : null;\n    }\n    static fullStack(err) {\n        assertError(err);\n        const cause = Layerr.cause(err);\n        if (cause) {\n            return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n        }\n        return err.stack ?? \"\";\n    }\n    static info(err) {\n        assertError(err);\n        const output = {};\n        const cause = Layerr.cause(err);\n        if (cause) {\n            Object.assign(output, Layerr.info(cause));\n        }\n        if (err._info) {\n            Object.assign(output, err._info);\n        }\n        return output;\n    }\n    toString() {\n        let output = this.name ||\n            this.constructor.name ||\n            this.constructor.prototype.name;\n        if (this.message) {\n            output = `${output}: ${this.message}`;\n        }\n        return output;\n    }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n    let options, shortMessage = \"\";\n    if (args.length === 0) {\n        options = {};\n    }\n    else if (isError(args[0])) {\n        options = {\n            cause: args[0],\n        };\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (args[0] && typeof args[0] === \"object\") {\n        options = Object.assign({}, args[0]);\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (typeof args[0] === \"string\") {\n        options = {};\n        shortMessage = shortMessage = args.join(\" \") || \"\";\n    }\n    else {\n        throw new Error(\"Invalid arguments passed to Layerr\");\n    }\n    return {\n        options,\n        shortMessage,\n    };\n}\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n    hex :  true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    \n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if(str===\"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n    // }else if (options.oct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n        return resolveEnotation(str,trimmedStr,options);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        // +00.123 => [ , '+', '00', '.123', ..\n        if(match){\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","function normalize (strArray) {\n  var resultArray = [];\n  if (strArray.length === 0) { return ''; }\n\n  if (typeof strArray[0] !== 'string') {\n    throw new TypeError('Url must be a string. Received ' + strArray[0]);\n  }\n\n  // If the first part is a plain protocol, we combine it with the next part.\n  if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n    var first = strArray.shift();\n    strArray[0] = first + strArray[0];\n  }\n\n  // There must be two or three slashes in the file protocol, two slashes in anything else.\n  if (strArray[0].match(/^file:\\/\\/\\//)) {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n  } else {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n  }\n\n  for (var i = 0; i < strArray.length; i++) {\n    var component = strArray[i];\n\n    if (typeof component !== 'string') {\n      throw new TypeError('Url must be a string. Received ' + component);\n    }\n\n    if (component === '') { continue; }\n\n    if (i > 0) {\n      // Removing the starting slashes for each component but the first.\n      component = component.replace(/^[\\/]+/, '');\n    }\n    if (i < strArray.length - 1) {\n      // Removing the ending slashes for each component but the last.\n      component = component.replace(/[\\/]+$/, '');\n    } else {\n      // For the last component we will combine multiple slashes to a single one.\n      component = component.replace(/[\\/]+$/, '/');\n    }\n\n    resultArray.push(component);\n\n  }\n\n  var str = resultArray.join('/');\n  // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n  // remove trailing slash before parameters or hash\n  str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n  // replace ? in parameters with &\n  var parts = str.split('?');\n  str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n  return str;\n}\n\nexport default function urlJoin() {\n  var input;\n\n  if (typeof arguments[0] === 'object') {\n    input = arguments[0];\n  } else {\n    input = [].slice.call(arguments);\n  }\n\n  return normalize(input);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n    const encoded = toBase64(`${username}:${password}`);\n    return `Basic ${encoded}`;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n    return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n    const url = options.url.replace(\"//\", \"\");\n    const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n    const method = options.method ? options.method.toUpperCase() : \"GET\";\n    const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n    const ncString = `00000000${digest.nc}`.slice(-8);\n    const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n    const ha2 = md5(`${method}:${uri}`);\n    const digestResponse = qop\n        ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n        : md5(`${ha1}:${digest.nonce}:${ha2}`);\n    const authValues = {\n        username: digest.username,\n        realm: digest.realm,\n        nonce: digest.nonce,\n        uri,\n        qop,\n        response: digestResponse,\n        nc: ncString,\n        cnonce: digest.cnonce,\n        algorithm: digest.algorithm,\n        opaque: digest.opaque\n    };\n    const authHeader = [];\n    for (const k in authValues) {\n        if (authValues[k]) {\n            if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n                authHeader.push(`${k}=${authValues[k]}`);\n            }\n            else {\n                authHeader.push(`${k}=\"${authValues[k]}\"`);\n            }\n        }\n    }\n    return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n    let uid = \"\";\n    for (let i = 0; i < NONCE_SIZE; ++i) {\n        uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n    }\n    return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n    const isDigest = responseIndicatesDigestAuth(response);\n    if (!isDigest) {\n        return false;\n    }\n    const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n    for (;;) {\n        const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n        const match = re.exec(authHeader);\n        if (!match) {\n            break;\n        }\n        _digest[match[1]] = match[2] || match[3];\n    }\n    _digest.nc += 1;\n    _digest.cnonce = makeNonce();\n    return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n    const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n    return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n    switch (context.authType) {\n        case AuthType.Auto:\n            if (username && password) {\n                context.headers.Authorization = generateBasicAuthHeader(username, password);\n            }\n            break;\n        case AuthType.Digest:\n            context.digest = createDigestContext(username, password, ha1);\n            break;\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password:\n            context.headers.Authorization = generateBasicAuthHeader(username, password);\n            break;\n        case AuthType.Token:\n            context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n            break;\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.InvalidAuthType\n                }\n            }, `Invalid auth type: ${context.authType}`);\n    }\n}\n","export function generateTokenAuthHeader(token) {\n    return `${token.token_type} ${token.access_token}`;\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n    return (hasArrayBuffer &&\n        (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n    return (value != null &&\n        value.constructor != null &&\n        typeof value.constructor.isBuffer === \"function\" &&\n        value.constructor.isBuffer(value));\n}\n","export function isReactNative() {\n    return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n    return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n    if (!__patcher) {\n        __patcher = new HotPatcher();\n    }\n    return __patcher;\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"OPTIONS\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        throw error;\n    }\n    const davHeader = response.headers.get(\"DAV\") ?? \"\";\n    const compliance = davHeader.split(\",\").map(item => item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n    const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n    const headers = {\n        Accept: \"text/plain,application/xml\",\n        Timeout: timeout\n    };\n    if (refreshToken) {\n        headers.If = refreshToken;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"LOCK\",\n        headers,\n        data: generateLockXML(context.contactHref)\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const lockPayload = parseGenericResponse(responseData);\n    const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n    const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n    if (!token) {\n        const err = createErrorFromResponse(response, \"No lock token received: \");\n        throw err;\n    }\n    return {\n        token,\n        serverTimeout\n    };\n}\nexport async function unlock(context, path, token, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"UNLOCK\",\n        headers: {\n            \"Lock-Token\": token\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (response.status !== 204 && response.status !== 200) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n    let headers = {};\n    // Handle standard options\n    const opts = {\n        method: requestOptions.method\n    };\n    if (requestOptions.headers) {\n        headers = mergeHeaders(headers, requestOptions.headers);\n    }\n    if (typeof requestOptions.data !== \"undefined\") {\n        const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n        opts.body = body;\n        headers = mergeHeaders(headers, newHeaders);\n    }\n    if (requestOptions.signal) {\n        opts.signal = requestOptions.signal;\n    }\n    if (requestOptions.withCredentials) {\n        opts.credentials = \"include\";\n    }\n    // Check for node-specific options\n    if (!isWeb() && !isReactNative()) {\n        if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n            opts.agent = (parsedURL) => {\n                if (parsedURL.protocol === \"http:\") {\n                    return requestOptions.httpAgent || new HTTPAgent();\n                }\n                return requestOptions.httpsAgent || new HTTPSAgent();\n            };\n        }\n    }\n    // Attach headers\n    opts.headers = headers;\n    return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n    const finalOptions = cloneShallow(requestOptions);\n    finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n    if (typeof userOptions.data !== \"undefined\") {\n        finalOptions.data = userOptions.data;\n    }\n    if (userOptions.signal) {\n        finalOptions.signal = userOptions.signal;\n    }\n    if (context.httpAgent) {\n        finalOptions.httpAgent = context.httpAgent;\n    }\n    if (context.httpsAgent) {\n        finalOptions.httpsAgent = context.httpsAgent;\n    }\n    if (context.digest) {\n        finalOptions._digest = context.digest;\n    }\n    if (typeof context.withCredentials === \"boolean\") {\n        finalOptions.withCredentials = context.withCredentials;\n    }\n    return finalOptions;\n}\nexport async function request(requestOptions, context) {\n    if (context.authType === AuthType.Auto) {\n        return requestAuto(requestOptions, context);\n    }\n    if (requestOptions._digest) {\n        return requestDigest(requestOptions);\n    }\n    return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n    const response = await requestStandard(requestOptions);\n    if (response.ok) {\n        context.authType = AuthType.Password;\n        return response;\n    }\n    if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n        context.authType = AuthType.Digest;\n        setupAuth(context, context.username, context.password, undefined, undefined);\n        requestOptions._digest = context.digest;\n        return requestDigest(requestOptions);\n    }\n    return response;\n}\nasync function requestDigest(requestOptions) {\n    // Remove client's digest authentication object from request options\n    const _digest = requestOptions._digest;\n    delete requestOptions._digest;\n    // If client is already using digest authentication, include the digest authorization header\n    if (_digest.hasDigestAuth) {\n        requestOptions = merge(requestOptions, {\n            headers: {\n                Authorization: generateDigestAuthHeader(requestOptions, _digest)\n            }\n        });\n    }\n    // Perform digest request + check\n    const response = await requestStandard(requestOptions);\n    if (response.status == 401) {\n        _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n        if (_digest.hasDigestAuth) {\n            requestOptions = merge(requestOptions, {\n                headers: {\n                    Authorization: generateDigestAuthHeader(requestOptions, _digest)\n                }\n            });\n            const response2 = await requestStandard(requestOptions);\n            if (response2.status == 401) {\n                _digest.hasDigestAuth = false;\n            }\n            else {\n                _digest.nc++;\n            }\n            return response2;\n        }\n    }\n    else {\n        _digest.nc++;\n    }\n    return response;\n}\nfunction requestStandard(requestOptions) {\n    const patcher = getPatcher();\n    return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n    if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n        // @ts-ignore\n        return [data, {}];\n    }\n    if (typeof data === \"string\") {\n        return [data, {}];\n    }\n    else if (isBuffer(data)) {\n        return [data, {}];\n    }\n    else if (isArrayBuffer(data)) {\n        return [data, {}];\n    }\n    else if (data && typeof data === \"object\") {\n        return [\n            JSON.stringify(data),\n            {\n                \"content-type\": \"application/json\"\n            }\n        ];\n    }\n    throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n    const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n    if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n        return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n    }\n    return ha1Hash;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n    if (isWeb()) {\n        const txt = document.createElement(\"textarea\");\n        txt.innerHTML = text;\n        return txt.value;\n    }\n    return decodeHTML(text);\n}\nexport function fromBase64(text) {\n    return base64.decode(text);\n}\nexport function toBase64(text) {\n    return base64.encode(text);\n}\n","export function convertResponseHeaders(headers) {\n    const output = {};\n    for (const key of headers.keys()) {\n        output[key] = headers.get(key);\n    }\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","export function cloneShallow(obj) {\n    return isPlainObject(obj)\n        ? Object.assign({}, obj)\n        : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n    if (typeof obj !== \"object\" ||\n        obj === null ||\n        Object.prototype.toString.call(obj) != \"[object Object]\") {\n        // Not an object\n        return false;\n    }\n    if (Object.getPrototypeOf(obj) === null) {\n        return true;\n    }\n    let proto = obj;\n    // Find the prototype\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n    let output = null, items = [...args];\n    while (items.length > 0) {\n        const nextItem = items.shift();\n        if (!output) {\n            output = cloneShallow(nextItem);\n        }\n        else {\n            output = mergeObjects(output, nextItem);\n        }\n    }\n    return output;\n}\nfunction mergeObjects(obj1, obj2) {\n    const output = cloneShallow(obj1);\n    Object.keys(obj2).forEach(key => {\n        if (!output.hasOwnProperty(key)) {\n            output[key] = obj2[key];\n            return;\n        }\n        if (Array.isArray(obj2[key])) {\n            output[key] = Array.isArray(output[key])\n                ? [...output[key], ...obj2[key]]\n                : [...obj2[key]];\n        }\n        else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n            output[key] =\n                typeof output[key] === \"object\" && !!output[key]\n                    ? mergeObjects(output[key], obj2[key])\n                    : cloneShallow(obj2[key]);\n        }\n        else {\n            output[key] = obj2[key];\n        }\n    });\n    return output;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n    try {\n        const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n        const formatted = encodeURIComponent(replaced);\n        return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed encoding path\");\n    }\n}\nexport function getAllDirectories(directory) {\n    if (!directory || directory === \"/\")\n        return [];\n    let currentPath = directory;\n    const output = [];\n    do {\n        output.push(currentPath);\n        currentPath = path.dirname(currentPath);\n    } while (currentPath && currentPath !== \"/\");\n    return output;\n}\nexport function makePathAbsolute(pathStr) {\n    return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n    let normalisedPath = pathStr;\n    if (normalisedPath[0] !== \"/\") {\n        normalisedPath = \"/\" + normalisedPath;\n    }\n    if (/^.+\\/$/.test(normalisedPath)) {\n        normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n    }\n    return normalisedPath;\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n    const url = new URL(fullURL);\n    let urlPath = url.pathname;\n    if (urlPath.length <= 0) {\n        urlPath = \"/\";\n    }\n    return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n    return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n        if (partIndex === 0 ||\n            nextPart !== \"/\" ||\n            (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n            output.push(nextPart);\n        }\n        return output;\n    }, []));\n}\nexport function normaliseHREF(href) {\n    try {\n        const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n        return normalisedHref;\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed normalising HREF\");\n    }\n}\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n    return getBuilder().build(namespace({\n        lockinfo: {\n            \"@_xmlns:d\": \"DAV:\",\n            lockscope: {\n                exclusive: {}\n            },\n            locktype: {\n                write: {}\n            },\n            owner: {\n                href: ownerHREF\n            }\n        }\n    }, \"d\"));\n}\nfunction getBuilder() {\n    return new XMLBuilder({\n        attributeNamePrefix: \"@_\",\n        format: true,\n        ignoreAttributes: false,\n        suppressEmptyNode: true\n    });\n}\nfunction getParser() {\n    return new XMLParser({\n        removeNSPrefix: true,\n        parseAttributeValue: true,\n        parseTagValue: true\n    });\n}\nfunction namespace(obj, ns) {\n    const copy = { ...obj };\n    for (const key in copy) {\n        if (!copy.hasOwnProperty(key)) {\n            continue;\n        }\n        if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n            copy[`${ns}:${key}`] = namespace(copy[key], ns);\n            delete copy[key];\n        }\n        else if (/^@_/.test(key) === false) {\n            copy[`${ns}:${key}`] = copy[key];\n            delete copy[key];\n        }\n    }\n    return copy;\n}\nexport function parseGenericResponse(xml) {\n    return getParser().parse(xml);\n}\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n    AuthType[\"Auto\"] = \"auto\";\n    AuthType[\"Digest\"] = \"digest\";\n    AuthType[\"None\"] = \"none\";\n    AuthType[\"Password\"] = \"password\";\n    AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n    ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n    ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n    ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n    ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n    ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [39, \"'\"],\n    [60, \"<\"],\n    [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&\"],\n    [60, \"<\"],\n    [62, \">\"],\n    [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n    /** Support only XML entities. */\n    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n    /** Support HTML entities, which are a superset of XML entities. */\n    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n    /**\n     * The output is UTF-8 encoded. Only characters that need escaping within\n     * XML will be escaped.\n     */\n    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n    /**\n     * The output consists only of ASCII characters. Characters that need\n     * escaping within HTML, and characters that aren't ASCII characters will\n     * be escaped.\n     */\n    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n    /**\n     * Encode all characters that have an equivalent entity, as well as all\n     * characters that are not ASCII characters.\n     */\n    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n    /**\n     * Encode all characters that have to be escaped in HTML attributes,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n    /**\n     * Encode all characters that have to be escaped in HTML text,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n    const level = typeof options === \"number\" ? options : options.level;\n    if (level === EntityLevel.HTML) {\n        const mode = typeof options === \"object\" ? options.mode : undefined;\n        return decodeHTML(input, mode);\n    }\n    return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n    var _a;\n    const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n    (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n    return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n    const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n    switch (mode) {\n        case EncodingMode.UTF8: {\n            return escapeUTF8(input);\n        }\n        case EncodingMode.Attribute: {\n            return escapeAttribute(input);\n        }\n        case EncodingMode.Text: {\n            return escapeText(input);\n        }\n        case EncodingMode.ASCII: {\n            return level === EntityLevel.HTML\n                ? encodeNonAsciiHTML(input)\n                : encodeXML(input);\n        }\n        // eslint-disable-next-line unicorn/no-useless-switch-case\n        case EncodingMode.Extensive:\n        default: {\n            return level === EntityLevel.HTML\n                ? encodeHTML(input)\n                : encodeXML(input);\n        }\n    }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// parse a single path portion\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof AST && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new AST(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt) {\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new AST(c, ast);\n                    i = AST.#parseAST(str, ext, i, opt);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new AST(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            if (isExtglobType(c) && str.charAt(i) === '(') {\n                part.push(acc);\n                acc = '';\n                const ext = new AST(c, part);\n                part.push(ext);\n                i = AST.#parseAST(str, ext, i, opt);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new AST(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new AST(null, undefined, options);\n        AST.#parseAST(pattern, ast, 0, options);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this)\n            this.#fillNegs();\n        if (!this.type) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            this.#parts = [s];\n            this.type = null;\n            this.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (noEmpty && glob === '*')\n                    re += starNoEmpty;\n                else\n                    re += star;\n                hasMagic = true;\n                continue;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n//# sourceMappingURL=ast.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        const options = this.options;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [file[fdi], pattern[pdi]];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    if (pdi > fdi) {\n                        pattern = pattern.slice(pdi);\n                    }\n                    else if (fdi > pdi) {\n                        file = file.slice(fdi);\n                    }\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        this.debug('matchOne', this, { file, pattern });\n        this.debug('matchOne', file.length, pattern.length);\n        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            var p = pattern[pi];\n            var f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false) {\n                return false;\n            }\n            /* c8 ignore stop */\n            if (p === GLOBSTAR) {\n                this.debug('GLOBSTAR', [pattern, p, f]);\n                // \"**\"\n                // a/**/b/**/c would match the following:\n                // a/b/x/y/z/c\n                // a/x/y/z/b/c\n                // a/b/x/b/x/c\n                // a/b/c\n                // To do this, take the rest of the pattern after\n                // the **, and see if it would match the file remainder.\n                // If so, return success.\n                // If not, the ** \"swallows\" a segment, and try again.\n                // This is recursively awful.\n                //\n                // a/**/b/**/c matching a/b/x/y/z/c\n                // - a matches a\n                // - doublestar\n                //   - matchOne(b/x/y/z/c, b/**/c)\n                //     - b matches b\n                //     - doublestar\n                //       - matchOne(x/y/z/c, c) -> no\n                //       - matchOne(y/z/c, c) -> no\n                //       - matchOne(z/c, c) -> no\n                //       - matchOne(c, c) yes, hit\n                var fr = fi;\n                var pr = pi + 1;\n                if (pr === pl) {\n                    this.debug('** at the end');\n                    // a ** at the end will just swallow the rest.\n                    // We have found a match.\n                    // however, it will not swallow /.x, unless\n                    // options.dot is set.\n                    // . and .. are *never* matched by **, for explosively\n                    // exponential reasons.\n                    for (; fi < fl; fi++) {\n                        if (file[fi] === '.' ||\n                            file[fi] === '..' ||\n                            (!options.dot && file[fi].charAt(0) === '.'))\n                            return false;\n                    }\n                    return true;\n                }\n                // ok, let's see if we can swallow whatever we can.\n                while (fr < fl) {\n                    var swallowee = file[fr];\n                    this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee);\n                    // XXX remove this slice.  Just pass the start index.\n                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n                        this.debug('globstar found match!', fr, fl, swallowee);\n                        // found a match.\n                        return true;\n                    }\n                    else {\n                        // can't swallow \".\" or \"..\" ever.\n                        // can only swallow \".foo\" when explicitly asked.\n                        if (swallowee === '.' ||\n                            swallowee === '..' ||\n                            (!options.dot && swallowee.charAt(0) === '.')) {\n                            this.debug('dot detected!', file, fr, pattern, pr);\n                            break;\n                        }\n                        // ** swallows a segment, and continue.\n                        this.debug('globstar swallow a segment, and continue');\n                        fr++;\n                    }\n                }\n                // no match was found.\n                // However, in partial mode, we can't say this is necessarily over.\n                /* c8 ignore start */\n                if (partial) {\n                    // ran out of file\n                    this.debug('\\n>>> no match, partial?', file, fr, pattern, pr);\n                    if (fr === fl) {\n                        return true;\n                    }\n                }\n                /* c8 ignore stop */\n                return false;\n            }\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"849c733a93f5261d3bde\",\"3556\":\"57d00a12b4953e229068\",\"4508\":\"04b1afd183e5ecdd9cae\",\"4906\":\"75718b28aced26adc4af\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"1445efe9cbaf4e4cbcb8\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7039\":\"be7eefcb933f99fc5b1f\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8124\":\"75a422293ae2add34a10\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(80609)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","client","createClient","getRootPath","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","generateRemoteUrl","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","loadState","undefined","window","OCA","Activity","registerSidebarAction","addEventListener","mount","async","el","node","reload","pinia","createPinia","default","ActivityCommentAction","extend","propsData","reloadCallback","resourceId","fileid","logger","info","unmount","$destroy","registerSidebarEntries","limit","offset","data","comments","getComments","resourceType","debug","CommentView","CommentsViewObject","map","comment","_CommentsViewInstance","timestamp","moment","props","creationDateTime","toDate","getTime","element","this","registerSidebarFilter","activity","type","registerSidebarTab","id","displayName","t","iconSvgInline","order","onInit","FilesSidebarTab","mixin","webComponent","wrap","Object","defineProperty","prototype","value","get","customElements","define","DEFAULT_LIMIT","options","resourcePath","join","datetime","toISOString","response","customRequest","method","responseData","text","stat","result","isDetailed","multistatus","responseItems","item","propstat","prop","prepareFileFromProps","toString","getDirectoryFiles","parseXML","processResponsePayload","balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","length","post","reg","m","match","begs","beg","left","right","ai","indexOf","bi","i","push","pop","module","exports","freeGlobal","global","InvalidCharacterError","message","Error","name","error","TABLE","REGEX_SPACE_CHARACTERS","base64","input","String","test","c","buffer","padding","output","position","charCodeAt","charAt","replace","bitStorage","bitCounter","fromCharCode","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","Math","random","numeric","parseInt","parseCommaParts","parts","p","postParts","shift","apply","embrace","isPadded","lte","y","gte","isTop","expansions","k","expansion","n","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","some","need","z","Array","j","len","code","cached","http","url","https","key","hasOwnProperty","validateParams","params","parse","protocol","request","cb","call","hasToStringTag","$toString","callBound","isStandardArguments","Symbol","toStringTag","isLegacyArguments","callee","supportsStandardArguments","arguments","isFnRegex","safeRegexTest","getProto","toStr","fnToStr","getGeneratorFunction","fn","GeneratorFunction","hasOwn","gOPD","$exec","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","descriptor","e","_typeof","obj","iterator","constructor","_wrapNativeSuper","Class","_cache","Map","Function","TypeError","has","set","Wrapper","_construct","_getPrototypeOf","create","enumerable","writable","configurable","_setPrototypeOf","Parent","args","Reflect","construct","sham","Proxy","Date","_isNativeReflectConstruct","instance","bind","o","setPrototypeOf","__proto__","getPrototypeOf","ObjectPrototypeMutationError","_Error","_this","Constructor","_classCallCheck","self","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","object","path","callback","segments","_loop","idx","currentSegment","v","isArray","index","remainingSegments","pathToHere","concat","_ret","isLastSegment","property","currentObject","currentProperty","nextPropIsNumber","Number","isInteger","nextPropIsArrayWildcard","err","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","getOwnPropertyDescriptor","mapSize","mapForEach","forEach","hasSet","Set","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","Boolean","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$concat","$join","$arrSlice","$floor","floor","bigIntValueOf","BigInt","gOPS","getOwnPropertySymbols","symToString","hasShammedSymbols","isEnumerable","propertyIsEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","s","defaultStyle","opts","style","quoteStyle","quoteChar","quote","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","from","noIndent","newOpts","f","nameOf","keys","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","globalThis","isDate","ys","isPlainObject","protoTag","stringTag","tag","l","remaining","trailer","quoteRE","lastIndex","lowbyte","size","entries","lineJoiner","isArr","symMap","syms","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","filename","exec","resolve","resolvedPath","resolvedAbsolute","process","cwd","normalize","isAbsolute","trailingSlash","segment","relative","to","trim","arr","fromParts","toParts","min","samePartsLength","outputParts","_makeLong","dirname","root","dir","basename","ext","extname","format","pathObject","isObject","sep","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","array","mapDomain","string","ucs2decode","extra","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","out","basic","oldi","w","baseMinusT","inputLength","bias","lastIndexOf","splice","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","stringify","formats","utils","defaults","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","$0","numberStr","parseArrayValue","val","currentArrayLength","parseKeys","givenKey","valuesParsed","child","parent","segmentContent","splitKeyIntoSegments","chain","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isNaN","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","part","bracketEqualsPos","pos","maybeMap","encodedVal","existing","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","filter","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","sort","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","values","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","markOverflow","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","source","assign","target","reduce","acc","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","escape","mapped","sourceKeys","mergeTarget","targetItem","encodeURIComponent","pairs","query","parser","port","isRegex","$TypeError","regex","listGetNode","list","isDelete","curr","next","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","GetIntrinsic","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","search","host","hostname","headers","req","on","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","open","XDomainRequest","checkTypeSupport","responseType","isFunction","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","stream","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","Buffer","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","timeout","setTimeout","headersObj","Blob","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","emit","abort","credentials","withCredentials","then","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","status","statusValid","_write","chunk","encoding","done","clearTimeout","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","Readable","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","write","Promise","reject","_resumeFetch","close","pipeTo","catch","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","responseText","newData","alloc","Uint8Array","MSStreamReader","byteLength","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","msg","this_len","substring","endsWith","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","state","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","unshift","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","first","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","rState","current","_","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","copy","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","pipeline","required","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","pathname","href","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","username","password","origin","char","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","whichTypedArray","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","ArrayBuffer","working","isDataViewToString","isDataView","DataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","SharedArrayBuffer","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","JSON","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","env","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","getOwnPropertyNames","formatError","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","desc","line","ar","re","d","pid","types","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","add","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","WorkerGlobalScope","Headers","Request","Response","getIgnoreAttributesFn","ignoreAttributes","attrName","pattern","nameStartChar","regexName","getAllMatches","allmatches","startIndex","isName","isExist","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","tags","tagFound","reachedRoot","readPI","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","validateTagName","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","tagname","angleBracketsCount","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","lineNumber","lines","attributeNamePrefix","attributesGroupName","textNodeName","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","processEntities","stopNodes","oneListGroup","Builder","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","level","ajPath","j2x","buildTextValNode","buildObjectNode","startsWith","jObj","arrayNodeName","jPath","attr","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","listTagAttr","textValue","Ks","L","closeTag","tagEndExp","piClosingChar","entity","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","includes","attrMap","attrVal","DocTypeReader","suppressValidationErr","readDocType","hasBody","exp","hasSeq","entityName","readEntityExp","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","captureMetaData","buildOptions","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","stopNodesExact","stopNodesWildcard","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","parseValue","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","rawTagName","newTagName","lastTag","tagContent","currentTagName","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","getMetaDataSymbol","METADATA_SYMBOL","prettify","compress","compressedObj","newJpath","isLeaf","isLeafTag","assignAttributes","jpath","atrrName","propCount","XmlNode","sequence","methods","HOT_PATCHER_TYPE","NOOP","createNewItem","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","patchInline","plugin","restore","setFinal","assertError","getGlobalName","Layerr","errorOptionsOrMessage","messageText","shortMessage","super","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","parseArguments","hexRegex","numRegex","consider","decimalPoint","toNumber","trimmedStr","skipLike","numStr","parse_int","eNotationRegx","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","parsedStr","urlJoin","strArray","resultArray","component","generateBasicAuthHeader","createDigestContext","ha1","nc","algorithm","hasDigestAuth","generateDigestAuthHeader","digest","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","parseDigestAuth","_digest","responseIndicatesDigestAuth","uid","NONCE_CHARS","makeNonce","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","None","Password","Token","InvalidAuthType","generateTokenAuthHeader","token_type","access_token","hasArrayBuffer","objToString","isReactNative","TARGET","isWeb","__patcher","getPatcher","DEFAULT_CONTACT_HREF","remoteURL","authTypeRaw","remoteBasePath","contactHref","httpAgent","httpsAgent","parsing","attributeParsers","tagParsers","remotePath","copyFile","destination","createDirectory","createReadStream","createWriteStream","requestOptions","deleteFile","exists","getDirectoryContents","getFileContents","getFileDownloadLink","getFileUploadLink","getHeaders","getQuota","lock","moveFile","destinationFilename","putFileContents","partialUpdateFileContents","filePath","getDAVCompliance","unlock","registerAttributeParser","registerTagParser","Destination","Overwrite","overwrite","Depth","shallow","dirPath","recursive","paths","creating","testPath","createDirectoryRecursively","outStream","PassThroughStream","rangeHeader","Range","responseError","getFileStream","writeStream","maxRedirects","finalOptions","Accept","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","nodes","details","glob","compliance","server","TRANSFORM_RETAIN_FORMAT","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","getFileContentsBuffer","authPart","authContents","LinkUnsupportedAuthType","quota","DEFAULT_TIMEOUT","refreshToken","Timeout","If","lockPayload","serverTimeout","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","contentLength","getSearch","searchArbiter","results","getStat","prepareRequestOptions","userOptions","requestStandard","ok","requestDigest","requestAuto","response2","patcher","newHeaders","agent","parsedURL","getFetchOptions","createErrorFromResponse","handleResponseCode","processGlobFilter","matchBase","requestDataToFetchBody","ha1Compute","user","pass","ha1Hash","PropertyType","displaynameTagParser","getPropertyOfType","Original","xml","normaliseResponse","normaliseResult","attrValue","processor","getParser","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","getcontenttype","getetag","etag","collection","lastmod","mime","displayname","parseStat","responseItem","statusLine","statusCodeStr","parseSearch","truncated","translateDiskSpace","fromBase64","toBase64","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","lowerHeader","cloneShallow","items","nextItem","mergeObjects","obj1","obj2","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","replaced","getAllDirectories","directory","currentPath","makePathAbsolute","pathStr","normalisePath","normalisedPath","parseQuota","quotaUsed","quotaAvail","used","available","calculateDataLength","DataTypeNoLength","extractURLPath","fullURL","urlPath","joinURL","nextPart","partIndex","normaliseHREF","generateLockXML","ownerHREF","namespace","lockinfo","lockscope","exclusive","locktype","owner","ns","parseGenericResponse","AuthType","ErrorCode","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","codePointAt","EntityLevel","EncodingMode","assertValidPattern","isExtglobType","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","hasMagic","pp","copyIn","toJSON","isStart","isEnd","pl","clone","ast","opt","escaping","inBrace","braceStart","braceNeg","noext","fromGlob","toMMPattern","uflag","toRegExpSource","nocase","nocaseMagicOnly","flags","_src","_glob","allowDot","dot","noEmpty","aps","needNoTrav","needNoDot","repeated","bodyDotAllowed","_hasMagic","needUflag","consumed","magic","posixClasses","braceEscape","rangesToString","ranges","parseClass","negs","sawStart","negate","endPos","rangeStart","WHILE","cls","unip","neg","sranges","snegs","windowsPathsNoEscape","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","defaultPlatform","__MINIMATCH_TESTING_PLATFORM__","platform","GLOBSTAR","def","orig","makeRe","braceExpand","nobrace","mm","nonull","globMagic","nonegate","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","allowWindowsEscape","make","magicalBraces","parseNegate","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","levelTwoFileOptimize","didSomething","dd","gss","p2","other","splin","matched","partsMatch","emptyGSMatch","which","negateOffset","matchOne","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fi","pi","fl","fr","pr","swallowee","hit","fastTest","twoStar","ex","ff","flipNegate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","__esModule","definition","chunkId","all","promises","script","needAttach","scripts","document","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"comments-comments-tab.js?v=9c9c5b45c5a59601b4d0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/utils/activity.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n    window.OCA.Activity.registerSidebarAction({\n        mount: async (el, { node, reload }) => {\n            const pinia = createPinia();\n            if (!ActivityTabPluginView) {\n                const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n                // @ts-expect-error Types are broken for Vue2\n                ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n            }\n            ActivityTabPluginInstance = new ActivityTabPluginView({\n                el,\n                pinia,\n                propsData: {\n                    reloadCallback: reload,\n                    resourceId: node.fileid,\n                },\n            });\n            logger.info('Comments plugin mounted in Activity sidebar action', { node });\n        },\n        unmount: () => {\n            // destroy previous instance if available\n            if (ActivityTabPluginInstance) {\n                ActivityTabPluginInstance.$destroy();\n            }\n        },\n    });\n    window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }) => {\n        const { data: comments } = await getComments({ resourceType: 'files', resourceId: node.fileid }, {\n            limit,\n            offset: offset ?? 0,\n        });\n        logger.debug('Loaded comments', { node, comments });\n        const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n        // @ts-expect-error Types are broken for Vue2\n        const CommentsViewObject = Vue.extend(CommentView);\n        return comments.map((comment) => ({\n            _CommentsViewInstance: undefined,\n            timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n            mount(element, { reload }) {\n                this._CommentsViewInstance = new CommentsViewObject({\n                    el: element,\n                    propsData: {\n                        comment,\n                        resourceId: node.fileid,\n                        reloadCallback: reload,\n                    },\n                });\n            },\n            unmount() {\n                this._CommentsViewInstance?.$destroy();\n            },\n        }));\n    });\n    window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n    logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\nimport { isUsingActivityIntegration } from './utils/activity.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (isUsingActivityIntegration()) {\n    // Do not mount own tab but mount into activity\n    window.addEventListener('DOMContentLoaded', function () {\n        registerCommentsPlugins();\n    });\n}\nelse {\n    registerSidebarTab({\n        id: 'comments',\n        displayName: t('comments', 'Comments'),\n        iconSvgInline: MessageReplyText,\n        order: 50,\n        tagName,\n        async onInit() {\n            const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue');\n            Vue.use(PiniaVuePlugin);\n            Vue.mixin({ pinia: createPinia() });\n            const webComponent = wrap(Vue, FilesSidebarTab);\n            // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n            Object.defineProperty(webComponent.prototype, 'attachShadow', {\n                value() { return this; },\n            });\n            Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n                get() { return this; },\n            });\n            window.customElements.define(tagName, webComponent);\n        },\n    });\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the comments app is using the Activity app integration for the sidebar.\n */\nexport function isUsingActivityIntegration() {\n    return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined;\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n    self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n    ? self\n    : typeof window !== \"undefined\"\n        ? window\n        : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function(string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexport function merge(target, a, arrayMode) {\n  if (a) {\n    const keys = Object.keys(a); // will return an array of own properties\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      if (arrayMode === 'strict') {\n        target[keys[i]] = [ a[keys[i]] ];\n      } else {\n        target[keys[i]] = a[keys[i]];\n      }\n    }\n  }\n}\n/* exports.merge =function (b,a){\n  return Object.assign(b,a);\n} */\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};","'use strict';\n\nimport {getAllMatches, isName} from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n  \n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n      i+=2;\n      i = readPI(xmlData,i);\n      if (i.err) return i;\n    }else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n      \n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if(options.unpairedTags.indexOf(tagName) !== -1){\n            //don't push into stack\n          } else {\n            tags.push({tagName, tagStartPos});\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i+1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else{\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          }else{\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if ( isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  }else if (tags.length == 1) {\n      return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  }else if (tags.length > 0) {\n      return getErrorObject('InvalidXml', \"Invalid '\"+\n          JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n          \"' found.\", {line: 1, col: 1});\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char){\n  return char === ' ' || char === '\\t' || char === '\\n'  || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!attrNames.hasOwnProperty(attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function(key, a) {\n    return a;\n  },\n  attributeValueProcessor: function(attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function(/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function() {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function(jObj) {\n  if(this.options.preserveOrder){\n    return buildFromOrderedJs(jObj, this.options);\n  }else {\n    if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n      jObj = {\n        [this.options.arrayNodeName] : jObj\n      }\n    }\n    return this.j2x(jObj, 0, []).val;\n  }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n  let attrStr = '';\n  let val = '';\n  const jPath = ajPath.join('.')\n  for (let key in jObj) {\n    if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          val += this.buildTextValNode(jObj[key], key, '', level);\n        }\n      }\n    } else if (Array.isArray(jObj[key])) {\n      //repeated nodes\n      const arrLen = jObj[key].length;\n      let listTagVal = \"\";\n      let listTagAttr = \"\";\n      for (let j = 0; j < arrLen; j++) {\n        const item = jObj[key][j];\n        if (typeof item === 'undefined') {\n          // supress undefined node\n        } else if (item === null) {\n          if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n          else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n          // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n        } else if (typeof item === 'object') {\n          if(this.options.oneListGroup){\n            const result = this.j2x(item, level + 1, ajPath.concat(key));\n            listTagVal += result.val;\n            if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n              listTagAttr += result.attrStr\n            }\n          }else{\n            listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n          }\n        } else {\n          if (this.options.oneListGroup) {\n            let textValue = this.options.tagValueProcessor(key, item);\n            textValue = this.replaceEntitiesValue(textValue);\n            listTagVal += textValue;\n          } else {\n            listTagVal += this.buildTextValNode(item, key, '', level);\n          }\n        }\n      }\n      if(this.options.oneListGroup){\n        listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n      }\n      val += listTagVal;\n    } else {\n      //nested node\n      if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n        const Ks = Object.keys(jObj[key]);\n        const L = Ks.length;\n        for (let j = 0; j < L; j++) {\n          attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n        }\n      } else {\n        val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n      }\n    }\n  }\n  return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n  val = this.options.attributeValueProcessor(attrName, '' + val);\n  val = this.replaceEntitiesValue(val);\n  if (this.options.suppressBooleanAttributes && val === \"true\") {\n    return ' ' + attrName;\n  } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n  const result = this.j2x(object, level + 1, ajPath.concat(key));\n  if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n    return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n  } else {\n    return this.buildObjectNode(result.val, key, result.attrStr, level);\n  }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n  if(val === \"\"){\n    if(key[0] === \"?\") return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  }else{\n\n    let tagEndExp = '' + val + tagEndExp );\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    }else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp    );\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function(key){\n  let closeTag = \"\";\n  if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n    if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n  }else if(this.options.suppressEmptyNode){ //empty\n    closeTag = \"/\";\n  }else{\n    closeTag = `>` +  this.newLine;\n  }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` +  this.newLine;\n  }else if(key[0] === \"?\") {//PI tag\n    return  this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n  }else{\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n  \n    if( textValue === ''){\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }else{\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n         textValue +\n        ' 0 && this.options.processEntities){\n    for (let i=0; i 0) {\n        indentation = EOL;\n    }\n    return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if(tagName === undefined) continue;\n\n        let newJPath = \"\";\n        if (jPath.length === 0) newJPath = tagName\n        else newJPath = `${jPath}.${tagName}`;\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode(newJPath, options)) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            continue;\n        }\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n        const attStr = attr_to_str(tagObj[\":@\"], options);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n        const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n    }\n\n    return xmlStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if(!obj.hasOwnProperty(key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if(!attrMap.hasOwnProperty(attr)) continue;\n            let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n            attrVal = replaceEntitiesValue(attrVal, options);\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n    jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n    let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n    for (let index in options.stopNodes) {\n        if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}\n","import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n    constructor(processEntities){\n        this.suppressValidationErr = !processEntities;\n    }\n    \n    readDocType(xmlData, i){\n    \n        const entities = {};\n        if( xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E')\n        {    \n            i = i+9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for(;i') { //Read tag content\n                    if(comment){\n                        if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    }else{\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                    break;\n                    }\n                }else if( xmlData[i] === '['){\n                    hasBody = true;\n                }else{\n                    exp += xmlData[i];\n                }\n            }\n            if(angleBracketsCount !== 0){\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        }else{\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return {entities, i};\n    }\n    readEntityExp(xmlData, i) {    \n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n        \n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n    for(let j=0;j false,\n    commentPropName: false,\n    unpairedTags: [],\n    processEntities: true,\n    htmlEntities: false,\n    ignoreDeclaration: false,\n    ignorePiTags: false,\n    transformTagName: false,\n    transformAttributeName: false,\n    updateTag: function(tagName, jPath, attrs){\n      return tagName\n    },\n    // skipEmptyListItem: false\n    captureMetaData: false,\n};\n   \nexport const buildOptions = function(options) {\n    return Object.assign({}, defaultOptions, options);\n};\n","'use strict';\n///@ts-check\n\nimport {getAllMatches, isExist} from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nexport default class OrderedObjParser{\n  constructor(options){\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n      \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n      \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n      \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n\n    if(this.options.stopNodes && this.options.stopNodes.length > 0){\n      this.stopNodesExact = new Set();\n      this.stopNodesWildcard = new Set();\n      for(let i = 0; i < this.options.stopNodes.length; i++){\n        const stopNodeExp = this.options.stopNodes[i];\n        if(typeof stopNodeExp !== 'string') continue;\n        if(stopNodeExp.startsWith(\"*.\")){\n          this.stopNodesWildcard.add(stopNodeExp.substring(2));\n        }else{\n          this.stopNodesExact.add(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities){\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    this.lastEntities[ent] = {\n       regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n       val : externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if(val.length > 0){\n      if(!escapeEntities) val = this.replaceEntitiesValue(val);\n      \n      const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n      if(newval === null || newval === undefined){\n        //don't parse\n        return val;\n      }else if(typeof newval !== typeof val || newval !== val){\n        //overwrite\n        return newval;\n      }else if(this.options.trimValues){\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      }else{\n        const trimmedVal = val.trim();\n        if(trimmedVal === val){\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        }else{\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      if (this.ignoreAttributesFn(attrName, jPath)) {\n        continue\n      }\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        if(aName === \"__proto__\") aName  = \"#__proto__\";\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal);\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n          if(newVal === null || newVal === undefined){\n            //don't parse\n            attrs[aName] = oldVal;\n          }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n            //overwrite\n            attrs[aName] = newVal;\n          }else{\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function(xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n  let jPath = \"\";\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for(let i=0; i< xmlData.length; i++){//for each char in XML data\n    const ch = xmlData[i];\n    if(ch === '<'){\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if( xmlData[i+1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n        if(this.options.removeNSPrefix){\n          const colonIndex = tagName.indexOf(\":\");\n          if(colonIndex !== -1){\n            tagName = tagName.substr(colonIndex+1);\n          }\n        }\n\n        if(this.options.transformTagName) {\n          tagName = this.options.transformTagName(tagName);\n        }\n\n        if(currentNode){\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n        if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        let propIndex = 0\n        if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n          propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n          this.tagsNodeStack.pop();\n        }else{\n          propIndex = jPath.lastIndexOf(\".\");\n        }\n        jPath = jPath.substring(0, propIndex);\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if( xmlData[i+1] === '?') {\n\n        let tagData = readTagExp(xmlData,i, false, \"?>\");\n        if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n        if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n          //do nothing\n        }else{\n  \n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n          \n          if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n          }\n          this.addChild(currentNode, childNode, jPath, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if(xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n        if(this.options.commentPropName){\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n          currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n        }\n        i = endIndex;\n      } else if( xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      }else if(xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9,closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n        if(val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if(this.options.cdataPropName){\n          currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n        }else{\n          currentNode.add(this.options.textNodeName, val);\n        }\n        \n        i = closeIndex + 2;\n      }else {//Opening tag\n        let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n        let tagName= result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        if (this.options.transformTagName) {\n          //console.log(tagExp, tagName)\n          const newTagName = this.options.transformTagName(tagName);\n          if(tagExp === tagName) {\n            tagExp = newTagName\n          }\n          tagName = newTagName;\n        }\n        \n        //save text as child node\n        if (currentNode && textData) {\n          if(currentNode.tagname !== '!xml'){\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n          currentNode = this.tagsNodeStack.pop();\n          jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n        }\n        if(tagName !== xmlObj.tagname){\n          jPath += jPath ? \".\" + tagName : tagName;\n        }\n        const startIndex = i;\n        if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {\n          let tagContent = \"\";\n          //self-closing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n            \n            i = result.closeIndex;\n          }\n          //normal tag\n          else{\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if(tagName !== tagExp && attrExpPresent){\n            childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath\n            );\n          }\n          if(tagContent) {\n            tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n          }\n          \n          jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          childNode.add(this.options.textNodeName, tagContent);\n          \n          this.addChild(currentNode, childNode, jPath, startIndex);\n        }else{\n  //selfClosing tag\n          if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n            if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n              tagName = tagName.substr(0, tagName.length - 1);\n              jPath = jPath.substr(0, jPath.length - 1);\n              tagExp = tagName;\n            }else{\n              tagExp = tagExp.substr(0, tagExp.length - 1);\n            }\n            \n            if(this.options.transformTagName) {\n              const newTagName = this.options.transformTagName(tagName);\n              if(tagExp === tagName) {\n                tagExp = newTagName\n              }\n              tagName = newTagName;\n            }\n\n            const childNode = new xmlNode(tagName);\n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n          }\n    //opening tag\n          else{\n            const childNode = new xmlNode( tagName);\n            this.tagsNodeStack.push(currentNode);\n            \n            if(tagName !== tagExp && attrExpPresent){\n              childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n            }\n            this.addChild(currentNode, childNode, jPath, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    }else{\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath, startIndex){\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n  const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n  if(result === false){\n    //do nothing\n  } else if(typeof result === \"string\"){\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  }else{\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\nconst replaceEntitiesValue = function(val){\n\n  if(this.options.processEntities){\n    for(let entityName in this.docTypeEntities){\n      const entity = this.docTypeEntities[entityName];\n      val = val.replace( entity.regx, entity.val);\n    }\n    for(let entityName in this.lastEntities){\n      const entity = this.lastEntities[entityName];\n      val = val.replace( entity.regex, entity.val);\n    }\n    if(this.options.htmlEntities){\n      for(let entityName in this.htmlEntities){\n        const entity = this.htmlEntities[entityName];\n        val = val.replace( entity.regex, entity.val);\n      }\n    }\n    val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n  }\n  return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if(isLeafNode === undefined) isLeafNode = currentNode.child.length === 0\n    \n    textData = this.parseTextData(textData,\n      currentNode.tagname,\n      jPath,\n      false,\n      currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      currentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Set} stopNodesExact\n * @param {Set} stopNodesWildcard\n * @param {string} jPath\n * @param {string} currentTagName\n */\nfunction isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName){\n  if(stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;\n  if(stopNodesExact && stopNodesExact.has(jPath)) return true;\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n        if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n        attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if(closingChar[1]){\n        if(xmlData[index + 1] === closingChar[1]){\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      }else{\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n  const closingIndex = xmlData.indexOf(str, i);\n  if(closingIndex === -1){\n    throw new Error(errMsg)\n  }else{\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n  const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n  if(!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if(separatorIndex !== -1){//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if(removeNSPrefix){\n    const colonIndex = tagName.indexOf(\":\");\n    if(colonIndex !== -1){\n      tagName = tagName.substr(colonIndex+1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if( xmlData[i] === \"<\"){ \n      if (xmlData[i+1] === \"/\") {//close tag\n          const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n          let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n          if(closeTagName === tagName){\n            openTagCount--;\n            if (openTagCount === 0) {\n              return {\n                tagContent: xmlData.substring(startIndex, i),\n                i : closeIndex\n              }\n            }\n          }\n          i=closeIndex;\n        } else if(xmlData[i+1] === '?') { \n          const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 3) === '!--') { \n          const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n          i=closeIndex;\n        } else if(xmlData.substr(i + 1, 2) === '![') { \n          const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n          i=closeIndex;\n        } else {\n          const tagData = readTagExp(xmlData, i, '>')\n\n          if (tagData) {\n            const openTagName = tagData && tagData.tagName;\n            if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n              openTagCount++;\n            }\n            i=tagData.closeIndex;\n          }\n        }\n      }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if(newval === 'true' ) return true;\n    else if(newval === 'false' ) return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix){\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n      return String.fromCodePoint(codePoint);\n  } else {\n      return prefix +str + \";\";\n  }\n}","import { buildOptions} from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport {validate} from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser{\n    \n    constructor(options){\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n        \n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData,validationOption){\n        if(typeof xmlData !== \"string\" && xmlData.toString){\n            xmlData = xmlData.toString();\n        }else if(typeof xmlData !== \"string\"){\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n        \n        if( validationOption){\n            if(validationOption === true) validationOption = {}; //validate with default options\n            \n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n              throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n            }\n          }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value){\n        if(value.indexOf(\"&\") !== -1){\n            throw new Error(\"Entity value can't have '&'\")\n        }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        }else if(value === \"&\"){\n            throw new Error(\"An entity with value '&' is not permitted\");\n        }else{\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nexport default function prettify(node, options){\n  return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n  let text;\n  const compressedObj = {};\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n    let newJpath = \"\";\n    if(jPath === undefined) newJpath = property;\n    else newJpath = jPath + \".\" + property;\n\n    if(property === options.textNodeName){\n      if(text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    }else if(property === undefined){\n      continue;\n    }else if(tagObj[property]){\n      \n      let val = compress(tagObj[property], options, newJpath);\n      const isLeaf = isLeafTag(val, options);\n      if (tagObj[METADATA_SYMBOL] !== undefined) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n      if(tagObj[\":@\"]){\n        assignAttributes( val, tagObj[\":@\"], newJpath, options);\n      }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n        val = val[options.textNodeName];\n      }else if(Object.keys(val).length === 0){\n        if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n        if(!Array.isArray(compressedObj[property])) {\n            compressedObj[property] = [ compressedObj[property] ];\n        }\n        compressedObj[property].push(val);\n      }else{\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n        if (options.isArray(property, newJpath, isLeaf )) {\n          compressedObj[property] = [val];\n        }else{\n          compressedObj[property] = val;\n        }\n      }\n    }\n    \n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if(typeof text === \"string\"){\n    if(text.length > 0) compressedObj[options.textNodeName] = text;\n  }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n  return compressedObj;\n}\n\nfunction propName(obj){\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if(key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];\n      if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n        obj[atrrName] = [ attrMap[atrrName] ];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options){\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n  \n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode{\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = {}; //attributes map\n  }\n  add(key,val){\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if(key === \"__proto__\") key = \"#__proto__\";\n    this.child.push( {[key]: val });\n  }\n  addChild(node, startIndex) {\n    if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n      this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    }else{\n      this.child.push( { [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","export function sequence(...methods) {\n    if (methods.length === 0) {\n        throw new Error(\"Failed creating sequence: No functions provided\");\n    }\n    return function __executeSequence(...args) {\n        let result = args;\n        const _this = this;\n        while (methods.length > 0) {\n            const method = methods.shift();\n            result = [method.apply(_this, result)];\n        }\n        return result[0];\n    };\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n    return {\n        original: method,\n        methods: [method],\n        final: false\n    };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n    constructor() {\n        this._configuration = {\n            registry: {},\n            getEmptyAction: \"null\"\n        };\n        this.__type__ = HOT_PATCHER_TYPE;\n    }\n    /**\n     * Configuration object reference\n     * @readonly\n     */\n    get configuration() {\n        return this._configuration;\n    }\n    /**\n     * The action to take when a non-set method is requested\n     * Possible values: null/throw\n     */\n    get getEmptyAction() {\n        return this.configuration.getEmptyAction;\n    }\n    set getEmptyAction(newAction) {\n        this.configuration.getEmptyAction = newAction;\n    }\n    /**\n     * Control another hot-patcher instance\n     * Force the remote instance to use patched methods from calling instance\n     * @param target The target instance to control\n     * @param allowTargetOverrides Allow the target to override patched methods on\n     * the controller (default is false)\n     * @returns Returns self\n     * @throws {Error} Throws if the target is invalid\n     */\n    control(target, allowTargetOverrides = false) {\n        if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n            throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n        }\n        Object.keys(target.configuration.registry).forEach(foreignKey => {\n            if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n                if (allowTargetOverrides) {\n                    this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n                }\n            }\n            else {\n                this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n            }\n        });\n        target._configuration = this.configuration;\n        return this;\n    }\n    /**\n     * Execute a patched method\n     * @param key The method key\n     * @param args Arguments to pass to the method (optional)\n     * @see HotPatcher#get\n     * @returns The output of the called method\n     */\n    execute(key, ...args) {\n        const method = this.get(key) || NOOP;\n        return method(...args);\n    }\n    /**\n     * Get a method for a key\n     * @param key The method key\n     * @returns Returns the requested function or null if the function\n     * does not exist and the host is configured to return null (and not throw)\n     * @throws {Error} Throws if the configuration specifies to throw and the method\n     * does not exist\n     * @throws {Error} Throws if the `getEmptyAction` value is invalid\n     */\n    get(key) {\n        const item = this.configuration.registry[key];\n        if (!item) {\n            switch (this.getEmptyAction) {\n                case \"null\":\n                    return null;\n                case \"throw\":\n                    throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n                default:\n                    throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n            }\n        }\n        return sequence(...item.methods);\n    }\n    /**\n     * Check if a method has been patched\n     * @param key The function key\n     * @returns True if already patched\n     */\n    isPatched(key) {\n        return !!this.configuration.registry[key];\n    }\n    /**\n     * Patch a method name\n     * @param key The method key to patch\n     * @param method The function to set\n     * @param opts Patch options\n     * @returns Returns self\n     */\n    patch(key, method, opts = {}) {\n        const { chain = false } = opts;\n        if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n            throw new Error(`Failed patching '${key}': Method marked as being final`);\n        }\n        if (typeof method !== \"function\") {\n            throw new Error(`Failed patching '${key}': Provided method is not a function`);\n        }\n        if (chain) {\n            // Add new method to the chain\n            if (!this.configuration.registry[key]) {\n                // New key, create item\n                this.configuration.registry[key] = createNewItem(method);\n            }\n            else {\n                // Existing, push the method\n                this.configuration.registry[key].methods.push(method);\n            }\n        }\n        else {\n            // Replace the original\n            if (this.isPatched(key)) {\n                const { original } = this.configuration.registry[key];\n                this.configuration.registry[key] = Object.assign(createNewItem(method), {\n                    original\n                });\n            }\n            else {\n                this.configuration.registry[key] = createNewItem(method);\n            }\n        }\n        return this;\n    }\n    /**\n     * Patch a method inline, execute it and return the value\n     * Used for patching contents of functions. This method will not apply a patched\n     * function if it has already been patched, allowing for external overrides to\n     * function. It also means that the function is cached so that it is not\n     * instantiated every time the outer function is invoked.\n     * @param key The function key to use\n     * @param method The function to patch (once, only if not patched)\n     * @param args Arguments to pass to the function\n     * @returns The output of the patched function\n     * @example\n     *  function mySpecialFunction(a, b) {\n     *      return hotPatcher.patchInline(\"func\", (a, b) => {\n     *          return a + b;\n     *      }, a, b);\n     *  }\n     */\n    patchInline(key, method, ...args) {\n        if (!this.isPatched(key)) {\n            this.patch(key, method);\n        }\n        return this.execute(key, ...args);\n    }\n    /**\n     * Patch a method (or methods) in sequential-mode\n     * See `patch()` with the option `chain: true`\n     * @see patch\n     * @param key The key to patch\n     * @param methods The methods to patch\n     * @returns Returns self\n     */\n    plugin(key, ...methods) {\n        methods.forEach(method => {\n            this.patch(key, method, { chain: true });\n        });\n        return this;\n    }\n    /**\n     * Restore a patched method if it has been overridden\n     * @param key The method key\n     * @returns Returns self\n     */\n    restore(key) {\n        if (!this.isPatched(key)) {\n            throw new Error(`Failed restoring method: No method present for key: ${key}`);\n        }\n        else if (typeof this.configuration.registry[key].original !== \"function\") {\n            throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n        }\n        this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n        return this;\n    }\n    /**\n     * Set a method as being final\n     * This sets a method as having been finally overridden. Attempts at overriding\n     * again will fail with an error.\n     * @param key The key to make final\n     * @returns Returns self\n     */\n    setFinal(key) {\n        if (!this.configuration.registry.hasOwnProperty(key)) {\n            throw new Error(`Failed marking '${key}' as final: No method found for key`);\n        }\n        this.configuration.registry[key].final = true;\n        return this;\n    }\n}\n","export function assertError(err) {\n    if (!isError(err)) {\n        throw new Error(\"Parameter was not an error\");\n    }\n}\nexport function isError(err) {\n    return ((!!err &&\n        typeof err === \"object\" &&\n        objectToString(err) === \"[object Error]\") ||\n        err instanceof Error);\n}\nfunction objectToString(obj) {\n    return Object.prototype.toString.call(obj);\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n    return __name;\n}\nexport function setGlobalName(name = null) {\n    __name = name ?? NAME;\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n    constructor(errorOptionsOrMessage, messageText) {\n        const args = [...arguments];\n        const { options, shortMessage } = parseArguments(args);\n        let message = shortMessage;\n        if (options.cause) {\n            message = `${message}: ${options.cause.message}`;\n        }\n        super(message);\n        this.message = message;\n        if (options.name && typeof options.name === \"string\") {\n            this.name = options.name;\n        }\n        else {\n            this.name = getGlobalName();\n        }\n        if (options.cause) {\n            Object.defineProperty(this, \"_cause\", { value: options.cause });\n        }\n        Object.defineProperty(this, \"_info\", { value: {} });\n        if (options.info && typeof options.info === \"object\") {\n            Object.assign(this._info, options.info);\n        }\n        if (Error.captureStackTrace) {\n            const ctor = options.constructorOpt || this.constructor;\n            Error.captureStackTrace(this, ctor);\n        }\n    }\n    static cause(err) {\n        assertError(err);\n        if (!err._cause)\n            return null;\n        return isError(err._cause)\n            ? err._cause\n            : null;\n    }\n    static fullStack(err) {\n        assertError(err);\n        const cause = Layerr.cause(err);\n        if (cause) {\n            return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n        }\n        return err.stack ?? \"\";\n    }\n    static info(err) {\n        assertError(err);\n        const output = {};\n        const cause = Layerr.cause(err);\n        if (cause) {\n            Object.assign(output, Layerr.info(cause));\n        }\n        if (err._info) {\n            Object.assign(output, err._info);\n        }\n        return output;\n    }\n    toString() {\n        let output = this.name ||\n            this.constructor.name ||\n            this.constructor.prototype.name;\n        if (this.message) {\n            output = `${output}: ${this.message}`;\n        }\n        return output;\n    }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n    let options, shortMessage = \"\";\n    if (args.length === 0) {\n        options = {};\n    }\n    else if (isError(args[0])) {\n        options = {\n            cause: args[0],\n        };\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (args[0] && typeof args[0] === \"object\") {\n        options = Object.assign({}, args[0]);\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (typeof args[0] === \"string\") {\n        options = {};\n        shortMessage = shortMessage = args.join(\" \") || \"\";\n    }\n    else {\n        throw new Error(\"Invalid arguments passed to Layerr\");\n    }\n    return {\n        options,\n        shortMessage,\n    };\n}\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n    hex :  true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    \n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if(str===\"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n    // }else if (options.oct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n        return resolveEnotation(str,trimmedStr,options);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        // +00.123 => [ , '+', '00', '.123', ..\n        if(match){\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","function normalize (strArray) {\n  var resultArray = [];\n  if (strArray.length === 0) { return ''; }\n\n  if (typeof strArray[0] !== 'string') {\n    throw new TypeError('Url must be a string. Received ' + strArray[0]);\n  }\n\n  // If the first part is a plain protocol, we combine it with the next part.\n  if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n    var first = strArray.shift();\n    strArray[0] = first + strArray[0];\n  }\n\n  // There must be two or three slashes in the file protocol, two slashes in anything else.\n  if (strArray[0].match(/^file:\\/\\/\\//)) {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n  } else {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n  }\n\n  for (var i = 0; i < strArray.length; i++) {\n    var component = strArray[i];\n\n    if (typeof component !== 'string') {\n      throw new TypeError('Url must be a string. Received ' + component);\n    }\n\n    if (component === '') { continue; }\n\n    if (i > 0) {\n      // Removing the starting slashes for each component but the first.\n      component = component.replace(/^[\\/]+/, '');\n    }\n    if (i < strArray.length - 1) {\n      // Removing the ending slashes for each component but the last.\n      component = component.replace(/[\\/]+$/, '');\n    } else {\n      // For the last component we will combine multiple slashes to a single one.\n      component = component.replace(/[\\/]+$/, '/');\n    }\n\n    resultArray.push(component);\n\n  }\n\n  var str = resultArray.join('/');\n  // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n  // remove trailing slash before parameters or hash\n  str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n  // replace ? in parameters with &\n  var parts = str.split('?');\n  str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n  return str;\n}\n\nexport default function urlJoin() {\n  var input;\n\n  if (typeof arguments[0] === 'object') {\n    input = arguments[0];\n  } else {\n    input = [].slice.call(arguments);\n  }\n\n  return normalize(input);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n    const encoded = toBase64(`${username}:${password}`);\n    return `Basic ${encoded}`;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n    return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n    const url = options.url.replace(\"//\", \"\");\n    const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n    const method = options.method ? options.method.toUpperCase() : \"GET\";\n    const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n    const ncString = `00000000${digest.nc}`.slice(-8);\n    const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n    const ha2 = md5(`${method}:${uri}`);\n    const digestResponse = qop\n        ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n        : md5(`${ha1}:${digest.nonce}:${ha2}`);\n    const authValues = {\n        username: digest.username,\n        realm: digest.realm,\n        nonce: digest.nonce,\n        uri,\n        qop,\n        response: digestResponse,\n        nc: ncString,\n        cnonce: digest.cnonce,\n        algorithm: digest.algorithm,\n        opaque: digest.opaque\n    };\n    const authHeader = [];\n    for (const k in authValues) {\n        if (authValues[k]) {\n            if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n                authHeader.push(`${k}=${authValues[k]}`);\n            }\n            else {\n                authHeader.push(`${k}=\"${authValues[k]}\"`);\n            }\n        }\n    }\n    return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n    let uid = \"\";\n    for (let i = 0; i < NONCE_SIZE; ++i) {\n        uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n    }\n    return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n    const isDigest = responseIndicatesDigestAuth(response);\n    if (!isDigest) {\n        return false;\n    }\n    const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n    for (;;) {\n        const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n        const match = re.exec(authHeader);\n        if (!match) {\n            break;\n        }\n        _digest[match[1]] = match[2] || match[3];\n    }\n    _digest.nc += 1;\n    _digest.cnonce = makeNonce();\n    return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n    const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n    return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n    switch (context.authType) {\n        case AuthType.Auto:\n            if (username && password) {\n                context.headers.Authorization = generateBasicAuthHeader(username, password);\n            }\n            break;\n        case AuthType.Digest:\n            context.digest = createDigestContext(username, password, ha1);\n            break;\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password:\n            context.headers.Authorization = generateBasicAuthHeader(username, password);\n            break;\n        case AuthType.Token:\n            context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n            break;\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.InvalidAuthType\n                }\n            }, `Invalid auth type: ${context.authType}`);\n    }\n}\n","export function generateTokenAuthHeader(token) {\n    return `${token.token_type} ${token.access_token}`;\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n    return (hasArrayBuffer &&\n        (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n    return (value != null &&\n        value.constructor != null &&\n        typeof value.constructor.isBuffer === \"function\" &&\n        value.constructor.isBuffer(value));\n}\n","export function isReactNative() {\n    return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n    return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n    if (!__patcher) {\n        __patcher = new HotPatcher();\n    }\n    return __patcher;\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"OPTIONS\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        throw error;\n    }\n    const davHeader = response.headers.get(\"DAV\") ?? \"\";\n    const compliance = davHeader.split(\",\").map(item => item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n    const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n    const headers = {\n        Accept: \"text/plain,application/xml\",\n        Timeout: timeout\n    };\n    if (refreshToken) {\n        headers.If = refreshToken;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"LOCK\",\n        headers,\n        data: generateLockXML(context.contactHref)\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const lockPayload = parseGenericResponse(responseData);\n    const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n    const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n    if (!token) {\n        const err = createErrorFromResponse(response, \"No lock token received: \");\n        throw err;\n    }\n    return {\n        token,\n        serverTimeout\n    };\n}\nexport async function unlock(context, path, token, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"UNLOCK\",\n        headers: {\n            \"Lock-Token\": token\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (response.status !== 204 && response.status !== 200) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n    let headers = {};\n    // Handle standard options\n    const opts = {\n        method: requestOptions.method\n    };\n    if (requestOptions.headers) {\n        headers = mergeHeaders(headers, requestOptions.headers);\n    }\n    if (typeof requestOptions.data !== \"undefined\") {\n        const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n        opts.body = body;\n        headers = mergeHeaders(headers, newHeaders);\n    }\n    if (requestOptions.signal) {\n        opts.signal = requestOptions.signal;\n    }\n    if (requestOptions.withCredentials) {\n        opts.credentials = \"include\";\n    }\n    // Check for node-specific options\n    if (!isWeb() && !isReactNative()) {\n        if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n            opts.agent = (parsedURL) => {\n                if (parsedURL.protocol === \"http:\") {\n                    return requestOptions.httpAgent || new HTTPAgent();\n                }\n                return requestOptions.httpsAgent || new HTTPSAgent();\n            };\n        }\n    }\n    // Attach headers\n    opts.headers = headers;\n    return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n    const finalOptions = cloneShallow(requestOptions);\n    finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n    if (typeof userOptions.data !== \"undefined\") {\n        finalOptions.data = userOptions.data;\n    }\n    if (userOptions.signal) {\n        finalOptions.signal = userOptions.signal;\n    }\n    if (context.httpAgent) {\n        finalOptions.httpAgent = context.httpAgent;\n    }\n    if (context.httpsAgent) {\n        finalOptions.httpsAgent = context.httpsAgent;\n    }\n    if (context.digest) {\n        finalOptions._digest = context.digest;\n    }\n    if (typeof context.withCredentials === \"boolean\") {\n        finalOptions.withCredentials = context.withCredentials;\n    }\n    return finalOptions;\n}\nexport async function request(requestOptions, context) {\n    if (context.authType === AuthType.Auto) {\n        return requestAuto(requestOptions, context);\n    }\n    if (requestOptions._digest) {\n        return requestDigest(requestOptions);\n    }\n    return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n    const response = await requestStandard(requestOptions);\n    if (response.ok) {\n        context.authType = AuthType.Password;\n        return response;\n    }\n    if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n        context.authType = AuthType.Digest;\n        setupAuth(context, context.username, context.password, undefined, undefined);\n        requestOptions._digest = context.digest;\n        return requestDigest(requestOptions);\n    }\n    return response;\n}\nasync function requestDigest(requestOptions) {\n    // Remove client's digest authentication object from request options\n    const _digest = requestOptions._digest;\n    delete requestOptions._digest;\n    // If client is already using digest authentication, include the digest authorization header\n    if (_digest.hasDigestAuth) {\n        requestOptions = merge(requestOptions, {\n            headers: {\n                Authorization: generateDigestAuthHeader(requestOptions, _digest)\n            }\n        });\n    }\n    // Perform digest request + check\n    const response = await requestStandard(requestOptions);\n    if (response.status == 401) {\n        _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n        if (_digest.hasDigestAuth) {\n            requestOptions = merge(requestOptions, {\n                headers: {\n                    Authorization: generateDigestAuthHeader(requestOptions, _digest)\n                }\n            });\n            const response2 = await requestStandard(requestOptions);\n            if (response2.status == 401) {\n                _digest.hasDigestAuth = false;\n            }\n            else {\n                _digest.nc++;\n            }\n            return response2;\n        }\n    }\n    else {\n        _digest.nc++;\n    }\n    return response;\n}\nfunction requestStandard(requestOptions) {\n    const patcher = getPatcher();\n    return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n    if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n        // @ts-ignore\n        return [data, {}];\n    }\n    if (typeof data === \"string\") {\n        return [data, {}];\n    }\n    else if (isBuffer(data)) {\n        return [data, {}];\n    }\n    else if (isArrayBuffer(data)) {\n        return [data, {}];\n    }\n    else if (data && typeof data === \"object\") {\n        return [\n            JSON.stringify(data),\n            {\n                \"content-type\": \"application/json\"\n            }\n        ];\n    }\n    throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n    const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n    if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n        return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n    }\n    return ha1Hash;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n    if (isWeb()) {\n        const txt = document.createElement(\"textarea\");\n        txt.innerHTML = text;\n        return txt.value;\n    }\n    return decodeHTML(text);\n}\nexport function fromBase64(text) {\n    return base64.decode(text);\n}\nexport function toBase64(text) {\n    return base64.encode(text);\n}\n","export function convertResponseHeaders(headers) {\n    const output = {};\n    for (const key of headers.keys()) {\n        output[key] = headers.get(key);\n    }\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","export function cloneShallow(obj) {\n    return isPlainObject(obj)\n        ? Object.assign({}, obj)\n        : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n    if (typeof obj !== \"object\" ||\n        obj === null ||\n        Object.prototype.toString.call(obj) != \"[object Object]\") {\n        // Not an object\n        return false;\n    }\n    if (Object.getPrototypeOf(obj) === null) {\n        return true;\n    }\n    let proto = obj;\n    // Find the prototype\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n    let output = null, items = [...args];\n    while (items.length > 0) {\n        const nextItem = items.shift();\n        if (!output) {\n            output = cloneShallow(nextItem);\n        }\n        else {\n            output = mergeObjects(output, nextItem);\n        }\n    }\n    return output;\n}\nfunction mergeObjects(obj1, obj2) {\n    const output = cloneShallow(obj1);\n    Object.keys(obj2).forEach(key => {\n        if (!output.hasOwnProperty(key)) {\n            output[key] = obj2[key];\n            return;\n        }\n        if (Array.isArray(obj2[key])) {\n            output[key] = Array.isArray(output[key])\n                ? [...output[key], ...obj2[key]]\n                : [...obj2[key]];\n        }\n        else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n            output[key] =\n                typeof output[key] === \"object\" && !!output[key]\n                    ? mergeObjects(output[key], obj2[key])\n                    : cloneShallow(obj2[key]);\n        }\n        else {\n            output[key] = obj2[key];\n        }\n    });\n    return output;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n    try {\n        const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n        const formatted = encodeURIComponent(replaced);\n        return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed encoding path\");\n    }\n}\nexport function getAllDirectories(directory) {\n    if (!directory || directory === \"/\")\n        return [];\n    let currentPath = directory;\n    const output = [];\n    do {\n        output.push(currentPath);\n        currentPath = path.dirname(currentPath);\n    } while (currentPath && currentPath !== \"/\");\n    return output;\n}\nexport function makePathAbsolute(pathStr) {\n    return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n    let normalisedPath = pathStr;\n    if (normalisedPath[0] !== \"/\") {\n        normalisedPath = \"/\" + normalisedPath;\n    }\n    if (/^.+\\/$/.test(normalisedPath)) {\n        normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n    }\n    return normalisedPath;\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n    const url = new URL(fullURL);\n    let urlPath = url.pathname;\n    if (urlPath.length <= 0) {\n        urlPath = \"/\";\n    }\n    return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n    return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n        if (partIndex === 0 ||\n            nextPart !== \"/\" ||\n            (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n            output.push(nextPart);\n        }\n        return output;\n    }, []));\n}\nexport function normaliseHREF(href) {\n    try {\n        const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n        return normalisedHref;\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed normalising HREF\");\n    }\n}\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n    return getBuilder().build(namespace({\n        lockinfo: {\n            \"@_xmlns:d\": \"DAV:\",\n            lockscope: {\n                exclusive: {}\n            },\n            locktype: {\n                write: {}\n            },\n            owner: {\n                href: ownerHREF\n            }\n        }\n    }, \"d\"));\n}\nfunction getBuilder() {\n    return new XMLBuilder({\n        attributeNamePrefix: \"@_\",\n        format: true,\n        ignoreAttributes: false,\n        suppressEmptyNode: true\n    });\n}\nfunction getParser() {\n    return new XMLParser({\n        removeNSPrefix: true,\n        parseAttributeValue: true,\n        parseTagValue: true\n    });\n}\nfunction namespace(obj, ns) {\n    const copy = { ...obj };\n    for (const key in copy) {\n        if (!copy.hasOwnProperty(key)) {\n            continue;\n        }\n        if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n            copy[`${ns}:${key}`] = namespace(copy[key], ns);\n            delete copy[key];\n        }\n        else if (/^@_/.test(key) === false) {\n            copy[`${ns}:${key}`] = copy[key];\n            delete copy[key];\n        }\n    }\n    return copy;\n}\nexport function parseGenericResponse(xml) {\n    return getParser().parse(xml);\n}\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n    AuthType[\"Auto\"] = \"auto\";\n    AuthType[\"Digest\"] = \"digest\";\n    AuthType[\"None\"] = \"none\";\n    AuthType[\"Password\"] = \"password\";\n    AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n    ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n    ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n    ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n    ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n    ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [39, \"'\"],\n    [60, \"<\"],\n    [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&\"],\n    [60, \"<\"],\n    [62, \">\"],\n    [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n    /** Support only XML entities. */\n    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n    /** Support HTML entities, which are a superset of XML entities. */\n    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n    /**\n     * The output is UTF-8 encoded. Only characters that need escaping within\n     * XML will be escaped.\n     */\n    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n    /**\n     * The output consists only of ASCII characters. Characters that need\n     * escaping within HTML, and characters that aren't ASCII characters will\n     * be escaped.\n     */\n    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n    /**\n     * Encode all characters that have an equivalent entity, as well as all\n     * characters that are not ASCII characters.\n     */\n    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n    /**\n     * Encode all characters that have to be escaped in HTML attributes,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n    /**\n     * Encode all characters that have to be escaped in HTML text,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n    const level = typeof options === \"number\" ? options : options.level;\n    if (level === EntityLevel.HTML) {\n        const mode = typeof options === \"object\" ? options.mode : undefined;\n        return decodeHTML(input, mode);\n    }\n    return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n    var _a;\n    const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n    (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n    return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n    const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n    switch (mode) {\n        case EncodingMode.UTF8: {\n            return escapeUTF8(input);\n        }\n        case EncodingMode.Attribute: {\n            return escapeAttribute(input);\n        }\n        case EncodingMode.Text: {\n            return escapeText(input);\n        }\n        case EncodingMode.ASCII: {\n            return level === EntityLevel.HTML\n                ? encodeNonAsciiHTML(input)\n                : encodeXML(input);\n        }\n        // eslint-disable-next-line unicorn/no-useless-switch-case\n        case EncodingMode.Extensive:\n        default: {\n            return level === EntityLevel.HTML\n                ? encodeHTML(input)\n                : encodeXML(input);\n        }\n    }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// parse a single path portion\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof AST && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new AST(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt) {\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new AST(c, ast);\n                    i = AST.#parseAST(str, ext, i, opt);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new AST(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            if (isExtglobType(c) && str.charAt(i) === '(') {\n                part.push(acc);\n                acc = '';\n                const ext = new AST(c, part);\n                part.push(ext);\n                i = AST.#parseAST(str, ext, i, opt);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new AST(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new AST(null, undefined, options);\n        AST.#parseAST(pattern, ast, 0, options);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this)\n            this.#fillNegs();\n        if (!this.type) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            this.#parts = [s];\n            this.type = null;\n            this.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (noEmpty && glob === '*')\n                    re += starNoEmpty;\n                else\n                    re += star;\n                hasMagic = true;\n                continue;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n//# sourceMappingURL=ast.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        const options = this.options;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [file[fdi], pattern[pdi]];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    if (pdi > fdi) {\n                        pattern = pattern.slice(pdi);\n                    }\n                    else if (fdi > pdi) {\n                        file = file.slice(fdi);\n                    }\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        this.debug('matchOne', this, { file, pattern });\n        this.debug('matchOne', file.length, pattern.length);\n        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            var p = pattern[pi];\n            var f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false) {\n                return false;\n            }\n            /* c8 ignore stop */\n            if (p === GLOBSTAR) {\n                this.debug('GLOBSTAR', [pattern, p, f]);\n                // \"**\"\n                // a/**/b/**/c would match the following:\n                // a/b/x/y/z/c\n                // a/x/y/z/b/c\n                // a/b/x/b/x/c\n                // a/b/c\n                // To do this, take the rest of the pattern after\n                // the **, and see if it would match the file remainder.\n                // If so, return success.\n                // If not, the ** \"swallows\" a segment, and try again.\n                // This is recursively awful.\n                //\n                // a/**/b/**/c matching a/b/x/y/z/c\n                // - a matches a\n                // - doublestar\n                //   - matchOne(b/x/y/z/c, b/**/c)\n                //     - b matches b\n                //     - doublestar\n                //       - matchOne(x/y/z/c, c) -> no\n                //       - matchOne(y/z/c, c) -> no\n                //       - matchOne(z/c, c) -> no\n                //       - matchOne(c, c) yes, hit\n                var fr = fi;\n                var pr = pi + 1;\n                if (pr === pl) {\n                    this.debug('** at the end');\n                    // a ** at the end will just swallow the rest.\n                    // We have found a match.\n                    // however, it will not swallow /.x, unless\n                    // options.dot is set.\n                    // . and .. are *never* matched by **, for explosively\n                    // exponential reasons.\n                    for (; fi < fl; fi++) {\n                        if (file[fi] === '.' ||\n                            file[fi] === '..' ||\n                            (!options.dot && file[fi].charAt(0) === '.'))\n                            return false;\n                    }\n                    return true;\n                }\n                // ok, let's see if we can swallow whatever we can.\n                while (fr < fl) {\n                    var swallowee = file[fr];\n                    this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee);\n                    // XXX remove this slice.  Just pass the start index.\n                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n                        this.debug('globstar found match!', fr, fl, swallowee);\n                        // found a match.\n                        return true;\n                    }\n                    else {\n                        // can't swallow \".\" or \"..\" ever.\n                        // can only swallow \".foo\" when explicitly asked.\n                        if (swallowee === '.' ||\n                            swallowee === '..' ||\n                            (!options.dot && swallowee.charAt(0) === '.')) {\n                            this.debug('dot detected!', file, fr, pattern, pr);\n                            break;\n                        }\n                        // ** swallows a segment, and continue.\n                        this.debug('globstar swallow a segment, and continue');\n                        fr++;\n                    }\n                }\n                // no match was found.\n                // However, in partial mode, we can't say this is necessarily over.\n                /* c8 ignore start */\n                if (partial) {\n                    // ran out of file\n                    this.debug('\\n>>> no match, partial?', file, fr, pattern, pr);\n                    if (fr === fl) {\n                        return true;\n                    }\n                }\n                /* c8 ignore stop */\n                return false;\n            }\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"849c733a93f5261d3bde\",\"3556\":\"57d00a12b4953e229068\",\"4508\":\"04b1afd183e5ecdd9cae\",\"4906\":\"75718b28aced26adc4af\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"1445efe9cbaf4e4cbcb8\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7039\":\"be7eefcb933f99fc5b1f\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8124\":\"75a422293ae2add34a10\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(80609)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","client","createClient","getRootPath","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","generateRemoteUrl","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","loadState","undefined","window","OCA","Activity","registerSidebarAction","addEventListener","mount","async","el","node","reload","pinia","createPinia","default","ActivityCommentAction","extend","propsData","reloadCallback","resourceId","fileid","logger","info","unmount","$destroy","registerSidebarEntries","limit","offset","data","comments","getComments","resourceType","debug","CommentView","CommentsViewObject","map","comment","_CommentsViewInstance","timestamp","moment","props","creationDateTime","toDate","getTime","element","this","registerSidebarFilter","activity","type","registerSidebarTab","id","displayName","t","iconSvgInline","order","onInit","FilesSidebarTab","mixin","webComponent","wrap","Object","defineProperty","prototype","value","get","customElements","define","DEFAULT_LIMIT","options","resourcePath","join","datetime","toISOString","response","customRequest","method","responseData","text","stat","result","isDetailed","multistatus","responseItems","item","propstat","prop","prepareFileFromProps","toString","getDirectoryFiles","parseXML","processResponsePayload","balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","length","post","reg","m","match","begs","beg","left","right","ai","indexOf","bi","i","push","pop","module","exports","freeGlobal","global","InvalidCharacterError","message","Error","name","error","TABLE","REGEX_SPACE_CHARACTERS","base64","input","String","test","c","buffer","padding","output","position","charCodeAt","charAt","replace","bitStorage","bitCounter","fromCharCode","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","Math","random","numeric","parseInt","parseCommaParts","parts","p","postParts","shift","apply","embrace","isPadded","lte","y","gte","isTop","expansions","k","expansion","n","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","some","need","z","Array","j","len","code","cached","http","url","https","key","hasOwnProperty","validateParams","params","parse","protocol","request","cb","call","hasToStringTag","$toString","callBound","isStandardArguments","Symbol","toStringTag","isLegacyArguments","callee","supportsStandardArguments","arguments","isFnRegex","safeRegexTest","getProto","toStr","fnToStr","getGeneratorFunction","fn","GeneratorFunction","hasOwn","gOPD","$exec","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","descriptor","e","_typeof","obj","iterator","constructor","_wrapNativeSuper","Class","_cache","Map","Function","TypeError","has","set","Wrapper","_construct","_getPrototypeOf","create","enumerable","writable","configurable","_setPrototypeOf","Parent","args","Reflect","construct","sham","Proxy","Date","_isNativeReflectConstruct","instance","bind","o","setPrototypeOf","__proto__","getPrototypeOf","ObjectPrototypeMutationError","_Error","_this","Constructor","_classCallCheck","self","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","object","path","callback","segments","_loop","idx","currentSegment","v","isArray","index","remainingSegments","pathToHere","concat","_ret","isLastSegment","property","currentObject","currentProperty","nextPropIsNumber","Number","isInteger","nextPropIsArrayWildcard","err","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","getOwnPropertyDescriptor","mapSize","mapForEach","forEach","hasSet","Set","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","Boolean","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$concat","$join","$arrSlice","$floor","floor","bigIntValueOf","BigInt","gOPS","getOwnPropertySymbols","symToString","hasShammedSymbols","isEnumerable","propertyIsEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","s","defaultStyle","opts","style","quoteStyle","quoteChar","quote","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","from","noIndent","newOpts","f","nameOf","keys","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","globalThis","isDate","ys","isPlainObject","protoTag","stringTag","tag","l","remaining","trailer","quoteRE","lastIndex","lowbyte","size","entries","lineJoiner","isArr","symMap","syms","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","filename","exec","resolve","resolvedPath","resolvedAbsolute","process","cwd","normalize","isAbsolute","trailingSlash","segment","relative","to","trim","arr","fromParts","toParts","min","samePartsLength","outputParts","_makeLong","dirname","root","dir","basename","ext","extname","format","pathObject","isObject","sep","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","array","mapDomain","string","ucs2decode","extra","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","out","basic","oldi","w","baseMinusT","inputLength","bias","lastIndexOf","splice","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","stringify","formats","utils","defaults","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","$0","numberStr","parseArrayValue","val","currentArrayLength","parseKeys","givenKey","valuesParsed","child","parent","segmentContent","splitKeyIntoSegments","chain","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isValidArrayIndex","isNaN","markOverflow","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","part","bracketEqualsPos","pos","maybeMap","encodedVal","existing","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","filter","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","sort","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","values","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","source","assign","target","reduce","acc","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","escape","mapped","nextIndex","sourceKeys","combined","mergeTarget","targetItem","keyNum","encodeURIComponent","pairs","query","parser","port","isRegex","$TypeError","regex","listGetNode","list","isDelete","curr","next","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","GetIntrinsic","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","search","host","hostname","headers","req","on","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","open","XDomainRequest","checkTypeSupport","responseType","isFunction","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","stream","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","Buffer","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","timeout","setTimeout","headersObj","Blob","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","emit","abort","credentials","withCredentials","then","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","status","statusValid","_write","chunk","encoding","done","clearTimeout","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","Readable","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","write","Promise","reject","_resumeFetch","close","pipeTo","catch","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","responseText","newData","alloc","Uint8Array","MSStreamReader","byteLength","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","msg","this_len","substring","endsWith","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","state","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","unshift","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","first","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","rState","current","_","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","copy","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","isFinite","pipeline","required","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","pathname","href","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","username","password","origin","char","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","whichTypedArray","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","ArrayBuffer","working","isDataViewToString","isDataView","DataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","SharedArrayBuffer","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","JSON","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","env","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","getOwnPropertyNames","formatError","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","desc","line","ar","re","d","pid","types","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","add","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","WorkerGlobalScope","Headers","Request","Response","getIgnoreAttributesFn","ignoreAttributes","attrName","pattern","nameStartChar","regexName","getAllMatches","allmatches","startIndex","isName","isExist","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","tags","tagFound","reachedRoot","readPI","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","validateTagName","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","tagname","angleBracketsCount","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","lineNumber","lines","attributeNamePrefix","attributesGroupName","textNodeName","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","processEntities","stopNodes","oneListGroup","Builder","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","level","ajPath","j2x","buildTextValNode","buildObjectNode","startsWith","jObj","arrayNodeName","jPath","attr","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","listTagAttr","textValue","Ks","L","closeTag","tagEndExp","piClosingChar","entity","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","includes","attrMap","attrVal","DocTypeReader","suppressValidationErr","readDocType","hasBody","exp","hasSeq","entityName","readEntityExp","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","captureMetaData","buildOptions","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","stopNodesExact","stopNodesWildcard","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","parseValue","attrsRegx","oldVal","aName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","colonIndex","lastTagName","propIndex","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","rawTagName","newTagName","lastTag","tagContent","currentTagName","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","getMetaDataSymbol","METADATA_SYMBOL","prettify","compress","compressedObj","newJpath","isLeaf","isLeafTag","assignAttributes","jpath","atrrName","propCount","XmlNode","sequence","methods","HOT_PATCHER_TYPE","NOOP","createNewItem","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","patchInline","plugin","restore","setFinal","assertError","getGlobalName","Layerr","errorOptionsOrMessage","messageText","shortMessage","super","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","parseArguments","hexRegex","numRegex","consider","decimalPoint","toNumber","trimmedStr","skipLike","numStr","parse_int","eNotationRegx","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","parsedStr","urlJoin","strArray","resultArray","component","generateBasicAuthHeader","createDigestContext","ha1","nc","algorithm","hasDigestAuth","generateDigestAuthHeader","digest","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","parseDigestAuth","_digest","responseIndicatesDigestAuth","uid","NONCE_CHARS","makeNonce","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","None","Password","Token","InvalidAuthType","generateTokenAuthHeader","token_type","access_token","hasArrayBuffer","objToString","isReactNative","TARGET","isWeb","__patcher","getPatcher","DEFAULT_CONTACT_HREF","remoteURL","authTypeRaw","remoteBasePath","contactHref","httpAgent","httpsAgent","parsing","attributeParsers","tagParsers","remotePath","copyFile","destination","createDirectory","createReadStream","createWriteStream","requestOptions","deleteFile","exists","getDirectoryContents","getFileContents","getFileDownloadLink","getFileUploadLink","getHeaders","getQuota","lock","moveFile","destinationFilename","putFileContents","partialUpdateFileContents","filePath","getDAVCompliance","unlock","registerAttributeParser","registerTagParser","Destination","Overwrite","overwrite","Depth","shallow","dirPath","recursive","paths","creating","testPath","createDirectoryRecursively","outStream","PassThroughStream","rangeHeader","Range","responseError","getFileStream","writeStream","maxRedirects","finalOptions","Accept","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","nodes","details","glob","compliance","server","TRANSFORM_RETAIN_FORMAT","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","getFileContentsBuffer","authPart","authContents","LinkUnsupportedAuthType","quota","DEFAULT_TIMEOUT","refreshToken","Timeout","If","lockPayload","serverTimeout","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","contentLength","getSearch","searchArbiter","results","getStat","prepareRequestOptions","userOptions","requestStandard","ok","requestDigest","requestAuto","response2","patcher","newHeaders","agent","parsedURL","getFetchOptions","createErrorFromResponse","handleResponseCode","processGlobFilter","matchBase","requestDataToFetchBody","ha1Compute","user","pass","ha1Hash","PropertyType","displaynameTagParser","getPropertyOfType","Original","xml","normaliseResponse","normaliseResult","attrValue","processor","getParser","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","getcontenttype","getetag","etag","collection","lastmod","mime","displayname","parseStat","responseItem","statusLine","statusCodeStr","parseSearch","truncated","translateDiskSpace","fromBase64","toBase64","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","lowerHeader","cloneShallow","items","nextItem","mergeObjects","obj1","obj2","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","replaced","getAllDirectories","directory","currentPath","makePathAbsolute","pathStr","normalisePath","normalisedPath","parseQuota","quotaUsed","quotaAvail","used","available","calculateDataLength","DataTypeNoLength","extractURLPath","fullURL","urlPath","joinURL","nextPart","partIndex","normaliseHREF","generateLockXML","ownerHREF","namespace","lockinfo","lockscope","exclusive","locktype","owner","ns","parseGenericResponse","AuthType","ErrorCode","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","codePointAt","EntityLevel","EncodingMode","assertValidPattern","isExtglobType","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","hasMagic","pp","copyIn","toJSON","isStart","isEnd","pl","clone","ast","opt","escaping","inBrace","braceStart","braceNeg","noext","fromGlob","toMMPattern","uflag","toRegExpSource","nocase","nocaseMagicOnly","flags","_src","_glob","allowDot","dot","noEmpty","aps","needNoTrav","needNoDot","repeated","bodyDotAllowed","_hasMagic","needUflag","consumed","magic","posixClasses","braceEscape","rangesToString","ranges","parseClass","negs","sawStart","negate","endPos","rangeStart","WHILE","cls","unip","neg","sranges","snegs","windowsPathsNoEscape","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","defaultPlatform","__MINIMATCH_TESTING_PLATFORM__","platform","GLOBSTAR","def","orig","makeRe","braceExpand","nobrace","mm","nonull","globMagic","nonegate","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","allowWindowsEscape","make","magicalBraces","parseNegate","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","levelTwoFileOptimize","didSomething","dd","gss","p2","other","splin","matched","partsMatch","emptyGSMatch","which","negateOffset","matchOne","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fi","pi","fl","fr","pr","swallowee","hit","fastTest","twoStar","ex","ff","flipNegate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","__esModule","definition","chunkId","all","promises","script","needAttach","scripts","document","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","parentNode","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file